Wikibooks enwikibooks https://en.wikibooks.org/wiki/Main_Page MediaWiki 1.47.0-wmf.14 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 Aros/User/Docs 0 13106 4656734 4656575 2026-08-08T07:55:31Z Jeff1138 301139 4656734 wikitext text/x-wiki {{ArosNav}} ==What is AROS== Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=nl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Dutch], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=da&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Danish], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Chinese], [http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Russian], [http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Polish], [http://translate.google.com/translate?hl=en&sl=auto&tl=ja&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Japanese], [http://translate.google.com/translate?hl=en&sl=auto&tl=ko&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Korean], [http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Portuguese], *Computer Hardware *AROS (operating system) *Applications and Games *User [http://www.osnews.com/story/15819 AROS] is one of the intermediate levels between the computer hardware and the user. It is an open-source, clean-room implementation of AmigaOS 3.x that can be run on many different computer architectures. It runs primarily on PC x86 64bit and also PC 32bit hardware but also on motorola 68k and compatibles, some ARM and PowerPC. This page will cover enough to be able to write the downloaded image to your preferred media, to run a LiveUSB, LiveCD or LiveDVD on your office/home PC (Live meaning you can test without changing your existing setup) and, ultimately, to use it. Intel / AMD PC hardware support mostly covers the years 2000 to 2010 but work is under way to cover recent PC hardware. At the moment, AROS is '''not''' recommended to be '''installed''' on a working vital data holding machine. Instead, writing to and booting from a '''USB stick''' could be a much better option. AROS is an hobby OS and can co-exist with Windows(TM), MacOSX(TM), Android(TM) or Linux(TM) and act as an alternative. Unfortunately, Aros has few developers so upgrades and improvements can take [https://sourceforge.net/p/aros/mailman/aros-cvs/ time to appear]. AROS core is now [http://en.wikibooks.org/wiki/Aros/Developer/IncompleteAPIs ~80%] finished and is usable, so keep in mind that the software is still considered ALPHA/BETA and in development. Currently AROS is fun to play with on a curiosity level, but it is also interesting to program. AROS has some multimedia features and has internet access. Most importantly, use AROS to its maximum potential as it stands now, find ways to have fun with it and share your experiences. Good Sites to visit : [https://www.arosworld.org/home.php Aros World User forum] : [https://ae.arosworld.org/ Aros Exec site relocated] : [https://arosnews.github.io/ AROS News] : [https://www.facebook.com/ArosWorkshop/ Aros Workshop], : [https://www.osnews.com/topic/amiga-aros/ OSNews] : [https://www.reddit.com/r/aros/ Reddit] : [https://archives.arosworld.org Aros Archives] : [https://aminet.net/ Aminet] : [http://www.amiga-news.de/en/ English translation of German site] : [https://aros.sourceforge.io AROS] : [https://github.com/aros-development-team/AROS Codebase] : [https://github.com/aros-development-team/AROS/issues Issues] and [https://sourceforge.net/p/aros/bugs/ old defunct bugs site] : [https://github.com/deadwood2 Deadwood's builds], [https://www.axrt.org/download/aros/v11/ v11 builds], [https://axrt.org/downloads-aros Updated i386 32bit PC builds], : [https://github.com/ezrec Ezrec x86 m68k mirror of old svn version] : [https://sites.google.com/view/arosone Aros One x86, x64] : [https://tinyarosdistro.flazio.com/ Tiny Aros x86 and x64] : [https://arosnews.github.io/aros-portable/ AROS portable USB3 stick images of hosted Aros One x86 and x64 on debian] : [http://vmwaros.blogspot.com Icaros Desktop x86 now on sabbatical, very old edition] : [https://sites.google.com/site/arosaspireone AspireOS, of the netbook Aspire One, very old edition] : [http://arosalive.blogspot.co.uk/p/10-basic-aros-how-tos-tutorials.html Basic How To guides] : [http://arosgamer.blogspot.co.uk/ AROS Playground], [http://thewetmachine.net/tag/aros/ Jess Wet Machine], [https://aroshacking.wordpress.com/ Jon Robertson's AROS Experiences and FPC Free Pascal], [], :[http://www.apollo-accelerators.com/ Apollo Accelerators m68k], [http://www.amigablogs.net/ Amiga Blogs], [http://blog.a-eon.biz/blog/ Trevor Dickinson blog], : [https://forum.amiga.org/ Amiga OS AOS 3.x forum] : [http://eab.abime.net/ EAB Amiga] : [http://www.amigaworld.net/ AmigaWorld] : [http://www.ppa.pl/ Polish Amiga Like News] : [http://www.apollo-core.com/ Apollo Forum] : [https://amigaalive.blogspot.com/ AmigaAlive] : [https://www.amigalove.com/software Disk Mags] : [https://amigachristmastree.ultimateamiga.com/ Xmas Amiga Game Jam] : [https://www.reddit.com/r/amiga/ Amiga] == Distributions aka Distros == For end users there are distributions (ready made with selected apps aiming to be easy to use), mostly created and maintained by one person in their own workflow/style. They reuse the nightly boot compiles to suit their needs and possibly other end users. You are free to create your own if required. * For native 64bit Intel/AMD: [https://sites.google.com/view/arosone Aros One x64], [https://tinyarosdistro.flazio.com/ Tiny Aros], * For native 32bit Intel/AMD which will run on 64bit machines: [https://sites.google.com/view/arosone Aros One x86], [https://www.tinyaros.it/ Tiny Aros], * For native 68k [https://sites.google.com/view/arosone Aros One m68k], [http://www.aros-platform.de/ AROS Vision], '''Please, keep in mind that the distros listed above use a different ABI (abi v11) , which is NOT binary compatible with the official ABI V1.''' * For hosted Linux usb drive image [https://arosnews.github.io/aros-portable/ x64 Debian hosted version of Aros One], * For hosted ARM there is Aeros and [https://aros.sourceforge.io/nightly1.html RaspberryPi 3 raspi-aarch64-system native 64bit] AROS was originally developed on Linux but can run on an Intel-based Linux distro as an app. As time has gone on, it can be run as an app on many more operating systems (Windows, FreeBSD, Linux and limited on MacOS). This may sound strange: an OS running on top of another OS. Basically, this is to take advantage of drivers (audio, internet, graphics, etc.) and compiler environments, in the existing OS, with which people may be already familiar. The term we use for what AROS does is "Hosted". AROS Native is the term coined to describe AROS being run without any OS underneath it. It runs alone just like AmigaOS(TM) did. As this version does not benefit from "Hosted" drivers, dedicated ones have to be ported/written. Hence the smaller range of supported hardware / peripherals. We have other pages highlighting this support AROS is open source so basically everyone can take part. The source is public on github and there are new commits most days. AROS is automatically compiled daily, result are the nightly builds hosted on Sourceforge. The nightly builds are only used for testing changes, testing software and the starting point for distribution maintainers or even your own distribution. They are very basic, miss some functionality and apps like web browsers and are not suited for end users. * The [https://sourceforge.net/projects/aros/files/nightly2/ Nightly2], [http://aros.sourceforge.net/download.php nightly builds File Release Service] or [http://aros.sourceforge.net/downloads/ Sourceforge Project Web builds] are made automatically every night directly from the Github and in the past, SVN (Subversion) tree and contain the latest code for the AROS operating system. It should be noted that the builds have not been tested in any way and can be horrible broken. *ABIv11 offspring / adaptation of ABIv1 for PC 64bit *ABIv1 standard for most nightly builds, it is where the most work is done by developers *ABIv0 standard for PC 32bit intel / amd distributions ==Media== AROS media tends to boot in this tier list of media types, first internal HDD SSD, CD DVD drive, and finally usb drive (last two can depend on bios boot order) * USB .VHD [https://sites.google.com/view/arosone Aros One x86 and x64], with md5 below <pre> 0a656d53a9c902e9934000d8392e30ec *ArosOne-USB-1.3-64Bit.zip 7dd7119ab3e56d75ee852c137226b4d7 *ArosOne-USB-v1.2-x86_64-v11.zip cf906eeaad4a83b3520b1896bdc6b0d3 *ArosOne-USB-v1.1-x86_64-v11.zip e2eb8fe8cfd61c567b0152a61cf85251 *ArosOne-x86-v2.8-USB-IMG.zip 559909c75c2f56472c74267a7d075355 *ArosOne-x86-v2.7-USB-IMG.zip 93da5898508c1a8c05bb8991ab7bd117 *AROS One Image-USB-2.4.zip 59fcabd7090e47f12d54f7eb78cf0f45 *ArosOne-x86-v2.2-USB-Image.zip 24fb8de726ae8fc5fe5bac6d30f03dc5 ArosOne-x86-v2.0-USB-Image.zip f3d725e990072edce633b59747911b6b ArosOne-x86-v1.8-USB-IMG.zip e089a24ae310e92fcc407a0125602ce8 Aros-One x86-IMG-USB-v1.6.zip </pre> [https://tinyaros.flazio.com/ Tiny AROS] 22bc993625b7c75b17263c0cc7e7baaa *Tiny Aros_copy.vhd (March 2024) There is usually a vhd image inside the zip that can be written to USB sticks which is so much faster than the old ISO written to physical CD DVD method. This .vhd can be written to an USB stick / ssd with these pieces of software below but it will erase the previous contents from the usb Windows - [https://www.raspberrypi.com/software/ RPi Raspberry Imager, use custom and see all files], [https://hddguru.com/software/HDD-Raw-Copy-Tool/ HDD-Raw-Copy-Tool], [https://rufus.ie/ Rufus up to version 3.20 may work with VirtualBox HD vhd images with Win7 but not some Rufus 4.x versions], [https://etcher.balena.io/ Balena Etcher but may spy on you], Linux - [https://www.raspberrypi.com/software/ Raspberry Imager Ubuntu], Suse Image / Multi writer, dd, Mac - Most of the time when we get reports of "crashes right after grub" from usb boots it's due to wrongly recorded pendrive. Not aware if using 'dd' is a valid approach. AROS One author suggests using either rufus or etcher software for his VHD image. * Virtual Machine .ISO or CDs DVDs The native iso images are currently not compatible with Ventoy, Yumi, MultiBootUSB, Easy2Boot E2B, or similar <pre> 617a905b1665128c5e05f94dcc48e7f1 *AROS-One-v1.3-64Bit-v11.zip 11c8a147fcad7ecf52ae3a43e1934b69 *ArosOne-DVD-v1.2-x86_64-v11.zip f93053d3b9ccf304d7e6ac3389e1987b *ArosOne-DVD-v1.1-x86_64-v11.zip 86d808a40dc7be389a758799a9b4f595 *ArosOne-x86-v2.0-ISO-DVD.zip f1fc8599ef6a39e5df394e0f41d55526 *AROS-One-x86-ISO-DVD-v1.6.zip </pre> You can use a virtual emulator like VirtualBox, VMWare to mount the iso image which can then be used to boot and/or install to USB. no software can write an AROS ISO to a Pendrive. The author of ‘Rufus’ (who used an Amiga 500 as a child) once tried, but when he saw the system composition, he said he was unable to do it. The solution is to boot the ISO from a VM (WMware, VBox), then install the AROS build on the Pendrive, which will eventually become a Live Pendrive that can be booted on a PC. The only precaution is that in some cases it is necessary to thoroughly clean the Pendrive of any partitions and remove any bootloader that is not AROS. The Pendrive must remain raw without any partitions. You can clean the USB stick on a PC with a program that manages hard disks. You need to do a partition wipe. On some USB sticks, you can clean it with InstallAROS. Previously the only installation option was CD-RW or DVD-RW, since the whole system can be burnt onto a single disk and can be reused when the next version is released. Good branded discs like Taiyo Yuden (later JVC) or Verbatim should be used to reduce frustration later. The days for this media is gone but kept here for information Since nobody currently sells AROS on any other media, you will need access to a CD/DVD burner to create the installation disk yourself. After it is on a CD or DVD, then access and writing to USB pendrives becomes available (this should be viewed as an outdated or last resort alternative method now), as well as using good USB manufacturers like Sandisk, Kingston, etc. rather than some other no-names. Try burning it to a CD-RW or DVD-RW using your CD/DVD burning program (most burning software have a burn iso option). The ideal writing speed is 2x or 4x, higher speeds can give errors and problems. Check the writing integrity of your CD or DVD if your software has an option to do so before going any further. Standalone portable usb cd dvd drives do not boot physical burnt discs, please use an internal ide sata drive instead. * SD-card For ARM Pi Aros, copy the files onto a FAT32 formatted SD card. ==Booting== The LiveUSB, and in the past LiveCD LiveDVD, is designed to trial (test drive) various operating systems without having to install them to your working system. Since 2011, UEFI was introduced to replace the original PC BIOS which made booting media more confusing. Some changes in the UEFI/bios may be needed *go into the bios using esc, f2 or f? and disable the Security -> Secure Boot and maybe apply option for Legacy IDE mode *you may have to press F9, F10 or F12 or p on boot up to present a device boot options like USB or CD/DVD *disable the Fast Boot config so it would recognize portable DVD-drive and changed the Boot-sequence Secure boot was introduced by Microsoft and later consortium control what operating systems work with Secure Boot via shims. For Aros, it is best to disable or be able to change Secure Boot (if you dual boot with Windows this may cause issues with Window boots after) The grub part of the boot should be fully automatic, and you should see a multiple choice graphic card screen after 10 seconds for USB or over 30s CDs and DVDs. After the grub graphics choice, AROS takes over the booting and any issues can arise here =====Advice for various machines===== Some of the stages involved and shown on the display in a typical AROS boot start up <pre> [MultiLoader] [ELF Loader] [Boot] [HPET] [Kernel:ACPI] [Kernel:APIC-IA32] [Kernel:SMP APIC] [HiddStorage] ACPI: ???? ACPI Error [ACPI]AcpiOs???? [BattClock] Got RTC century offset 0x32 from ACPI [PCI] Scanning bus ? [AHCI] Sata [Vesa] only if vesa is chosen as graphics option [ATA] detect hd & cd drives [ATA0?] ata-identity [packet] fat.handler be.handler, etc. [DOS] [Storage:Bus] [Storage:Controller] [MSS] USB setup [ehciInit] Port ? maps to controller ? [I2C] [ATI] [drm] nouveau [AROSTCP] if you have network driver prefs set up to start when booting </pre> ; If boot fails, please give us some indication (pictures or videos) where the boot stops and the message(s) on screen. AROS's native SATA/AHCI driver doesn't always work. If you get errors related to ahci.device, try disabling it. At your chosen boot entry in the GRUB menu, Press E, scroll down to the ahci.device entry, and add a # or ; at the start of that line or delete it with Ctrl-K. Then press Ctrl-X or F10 to boot. If your disk isn't accessible at all with this change, you might need to change the SATA controller to IDE legacy mode in the BIOS: however, making this change will likely cause problems booting Windows on the same machine (if it's already installed). To disable ahci.device permanently, edit the text file "SYS:Arch/pc/grub/grub.cfg", and remove the ahci.device line from all boot entries you intend to use. SATA AHCI Timeout while waiting for device to complete operations with BIOS SATA entry set to AHCI mode stops at "waiting for bootable media" screen, changing BIOS SATA setting back to IDE mode may allow it to continue booting The ATA driver doesn't always work. If you get errors related to ata.device, try using the alternative in sys:devs/alt which is an older version. Press E when your chosen boot entry is highlighted in the GRUB menu, scroll down to the ata.device entry, and change it to read "module /Devs/Alt/ata.device". Then press Ctrl-X to boot. To make this change permanent, edit the text file "SYS:Arch/pc/grub/grub.cfg", and change the path to ata.device in all boot entries you intend to use. Further options (removing the " ") to add to the GRUB menus to disable certain other components for debugging: <pre> Disable AHCI "AHCI=disable" Disable NVME "NVME=disable" Disable ATA: "ATA=disable" Disable ATA: "ATA=nopci,nolegacy" ATA safe mode: "ATA=nodma,32bit" Disable IDE from SATA: "ATA=32bit,nosata2pata" VIA / SIS with cdrom read io errors "ATA=nodma,nopoll" noacpi all [PCI] devices to be invisible to AROS. disk drives work but network, sound won't acpi=strict if there are issues with sound after boot noioapic alternative to no acpi Set AHCI "AHCI=force150/force300/force600" Disable AHCI/SATA: comment out with a # ; or remove ahci.device line with Ctrl-K Disable USB: comment out # ; or remove pciusb.device and poseidon.library lines with Ctrl-K Disable native graphics: "nomonitors" USB3 "USB=xhci" </pre> Other useful grub command line options - nomonitors, noacpi, vesahack, nopoll Press Ctrl and X together (or F10) to exit and boot with the new options. Just experiment with different variations until successful. Those working options will need to be reused with every reboot of AROS until you can edit the grub.cfg and make it permanent i.e. install to hard disk or USB. * If you use VESA mode, you can see the debug log if you add 'vesahack' to the command line. This will set up split-screen mode. In the upper half you'll see AROS screen, in the bottom - debug log. * ACPI ie. PCI hardware - If you get crashes at early boot, try adding 'NOACPI' to the command line If you're having boot issues and have a null modem cable and a spare pc, a boot log is always useful. Edit your grub line to include debug=serial but would try with an with sysdebug=all in the line later as it can cause issues booting on machines with sysdebug=all enabled (corrupts the cpu initialization). However, if you feel you have found a genuine bug/fault in AROS that needs attention, please use the [http://sourceforge.net/tracker/?atid=439463&group_id=43586&func=browse bug submission form] to record as much information about what happened, why, and what hardware etc. you have so that people may try to assist you For Virtual machines VMWare VirtualBox, etc., attach and press play to start the ISO image If booting hasn't worked then it could be down to Bios/UEFI settings or USB3 (2014 onwards) =====nvme.device===== Since 2018, nvme drives are standard on most machines Now as far as hardware goes on a newer machine with an NVME drive you may need to add NVME=disable as the NVME driver could potentially cause lockups. =====AHCI===== Starting taking over since 2011 on a lot of machines * Check that UEFI (replacement for PC BIOS) has options set to remove UEFI SecureBoot option and apply CSM * SATA drive is set for Legacy or a mixture AHCI/IDE and not AHCI AHCI sata can be very difficult to get working Most Windows installs are already set to AHCI sata, changing this to a legacy IDE mode setting can help but please check if Windows will still boot. Some hardware like Lenovo laptops do not always like being set in legacy mode so only use as a last resort and aware of issues that can be caused. Now as far as hardware goes on a newer machine with an NVME drive you may need to add NVME=disable as the NVME driver could potentially cause lockups. With a 16C/32T chip machine, disable SMT and it should boot. =====ata.device for old BIOS's ===== Pre 2010 this was the de facto standard method of providing settings to the computer at a lower level Some adjustments to the BIOS setup options are necessary (usually by pressing a key like DEL, F1, F2, F12 or ESC, p on the very early boot up of the computer). *Adjust booting options like moving USB hdd, CDROM higher as it is quite often disabled or placed lower by default, i.e. USB hdd, CD/DVD are placed at the top above the hard drive. Try looking here [http://www.windowsreinstall.com/articles/bios/ Windows] or [http://www.hiren.info/pages/bios-boot-cdrom Bios] or [http://www.wikihow.com/Set-Bios-to-Boot-from-a-CD-ROM Boot] or web search "BIOS BOOT CDROM" * At the '''SAME''' time, check if the SATA/AHCI option is set to Emulate or IDE Legacy, though this can have '''issues''' with any OS already on the hard disk. If in doubt, do nothing and seek advice. * check that under BIOS settings you '''DO NOT''' have plug&play OS selected as Aros at this point is unable to route interrupts on its own and needs the BIOS to do that. '''Save''' options changed at the end. PCITool can show if the motherboard chipset is in IDE mode. Class = 0x01 means STORAGE, Subclass = 0x01 means IDE. Also ProductID 0x3a20 resolves to non-AHCI mode in Intel ICH10 documentation. ==Installing== We have a separate section [https://en.wikibooks.org/wiki/Aros/Platforms/x86_installing here] We have a specific section for each CPU platform under the Specific platforms in the NavBar navigation bar on the right hand side menu error code (-6) when using the ahci.device (has writing to disk problem but not reading) is enabled. change this line in your grub and reboot <pre> #module /Devs/ahci.device << disable module /Devs/Alt/ata.device << add this line instead </pre> ==File structure overview== AROS' directory structure is mostly identical to AmigaOS directory structure, with some additions. AROS: or SYS: also known as DH0: (i.e. the drive partition with AROS system) has the following simplified list of the main drawers (Amigas term for directories/folders). {| class="wikitable" |boot: | grub bootloader |---- |C: | small apps, where AROS looks first for applications/games but will look at Tools, System afterwards |---- |Devs: | .audio, .hidd, network, graphics and other hardware device drivers are stored |---- |L: | where .handler files go |---- |Libs: | where .library files go |---- |Prefs: | applications that adjust or setup AROS functions and capabilities |---- |S: | startup scripts (for the aros boot process '''not''' grub) are stored here |---- |Storage: | place to keep old or alternative device drivers |---- |System: | applications associated with AROS operating system |---- |Tools: | extra applications |---- |Utilities: | extra applications |---- |WBStartup: | copy applications here to autostart with needed icons, drawers, data etc |---- |} See [[Aros/User/DOS#Drives.2C_Files.2C_Assigns.2C_Directories|DOS manual: Drives, Files, Assigns, Directories]] === Filesystem === Whilst the kernel is the heart, the filesystem is the blood of the system they are split into two categories (only a few are supported) <pre> Journalling - ZFS XFS ext4 NTFS SFS PFS3 Non-journaling - BtrFS ext2 exFAT FAT32(VFAT) FFS </pre> Filesystem options for AROS to install * SFS default * Professional File System PFS3 [http://eab.abime.net/showthread.php?t=52234&highlight=pfs3+free&page=13 only on motorola 68k at the moment] * FFS very old now but left in for legacy usage Other [https://archives.arosworld.org/index.php?function=browse&cat=driver/filesystem filesystems] for storage purposes * FAT32 favorite as most OSs support * NTFS (can lock AROS) * exFAT The only filesystems that really NEED defragging (i.e. disk tidy up) are from Microsoft(TM) - exFAT/VFAT/NTFS *SFS tries to do exactly the same thing, but in certain cases it doesn't do as well as PFS. But you can defrag SFS *PFS *minimises* the amount of fragmentation, but does not automatically defrags as it saves files to the drive The setup of the below filesystems is usually done by the distro maintainer but if not.... <pre> Copy L/exfat-handler L: DOSDriver or Mountlist entry for an exFAT partition make sure that the FileSystem and Handler are set as follows: FileSystem = exfat-handler DosType = 0x46415458 </pre> <pre> Copy L/ntfs3g-handler L: DOSDriver or Mountlist entry for an NTFS partition make sure that the FileSystem and Handler are set as follows: FileSystem = ntfs3g-handler DosType = 0x4e544653 Also to make a read-only mount you can set: Control = ro </pre> The Smart File System (SFS) is a journaling filesystem used on Amiga computers and AmigaOS-derived operating systems. It is designed for performance, scalability and integrity, offering improvements over standard Amiga filesystems as well as some special or unique features. SFS is written in C and was originally created and released as freeware in 1998 by John Hendrikx. After the original author left the Amiga scene in 2000, the source code to SFS was released and its development continued by Ralph Schmidt in MorphOS. Its development has now forked; as well as the original Amiga version, there are now versions for MorphOS, AROS, AmigaOS 3, and a version for AmigaOS 4, which have different feature sets but remain compatible to each other. Versions for AROS, AmigaOS and MorphOS are based on different branches. In addition, there is a driver for Linux to read Amiga SFS volumes, GRUB natively supports it and there are free drivers to use it from UEFI. The Linux version is [http://home.elka.pw.edu.pl/~mszyprow/programy/asfs/ independent code]. SFS (Smart File System) partially defragments itself while the filesystem is in use. The defragmentation process is almost completely stateless AROS SFS version has a 120GB partition size limit on hard disks and DVDs current 4gig size limit. The sources for the MorphOS 64-bit version of SFS were available but no porting to AROS has happened so far due to endian issues, etc. SFS Tools * GUI - arSFSDoctor, * CLI - sfscheck , [http://www.portacall.org/ sfsundelete], sfsformat, setcache hits a usability ceiling around the 10GB / 100,000 file mark, sfscheck dh0: seek purge fraglist defragment If there are two simultaneous file writes in progress and you reboot machine (or it locks up or crashes) you may end up with a corrupted filesystem. Although arSFSDoctor may help, you might have to copy the files to another partition, format the partition with the errors on and copy the files back. A bit error on the harddisk would give this error. PFS / SFS are way more advanced and much much faster than the FFS. FFS is supported for legacy reasons only. The Professional File System (PFS) is a filesystem originally developed commercially for the Amiga and now distributed on Aminet with a 4-clause BSD license. It is a compatible successor of AmiFileSafe (AFS), with an emphasis on added reliability and speed compared to standard Amiga filesystems. It also features multi-user abilities like the older MuFS. PFS has so many advantages including the important things, speed, the ability to recover all deleted files even simply same name by typing the command ". Deldir" convenient if done in Directory Opus, virtually deleted files are copied normally as if they had never been deleted, other convenience is to not ever invalidate the filesystem, just put it on top of the startup-sequence command "diskvalid", which automatically corrects any irregularities in the system startup; PFS also provides a device for floppy which makes them very fast and takes advantage of the full capacity of the floppy including the area dedicated to the bootloader. The device is split into two main areas. At the beginning of the device is the metadata section, which consists of a root block, and a generic array of blocks that can be allocated to store metadata. The rest of the device is another contiguous generic array of blocks that can be allocated to store data. The metadata section usually uses a few percent of the device, depending on the size of the device. The metadata is stored as a tree of single blocks in the metadata section. The entire directory structure is recorded in the metadata, so the data section purely contains data from files. The metadata describes the location of data in files with extents of blocks, which makes the metadata quite compact. When a metadata update occurs, the system looks at the block containing the metadata to be changed, and copies it to a newly allocated block from the metadata section, with the change made, then it recursively changes the metadata in the block that points to that block in the same way. This way, eventually the root block needs to be changed, which causes the atomic metadata update. The filesystem is reasonably good at keeping files unfragmented, although there is a defragmentation tool available which will work on an online filesystem ie whilst being used. It was the first filesystem to introduce the concept of the Recycle Bin natively at filesystem-level to the Amiga, holding the last few deleted files in a hidden directory on the disk root. PFS version 5.3 was developed in C and a small portion of assembly code by Michiel Pelt. There are endian issues to be overcome and adapting the small amount of m68k to C before use on intel based machines, etc. Autoupdate of files in a directory is already implemented in Wanderer, but not all file systems handle dos.library/StartNotify() in its full extent. It seems to work correctly in Ram Disk (thanks to AmberRAM handler), and it also works on SFS formatted devices. Other file systems might not yet have it implemented correctly though. The PC equivalent of the Amiga's RDB is the master boot record (MBR). ===Installing Applications=== The typical means to install applications under AROS/AmigaOS involves simply copying/extracting the archive (.zip .lha .rar .tar.gz) file containing the applications files to your own desired location i.e. drawer/folder. Once extracted, launching it by double clicking on an icon (recommended) or using the shell (alternative). Generally, this is on a separate partition from your AROS system files, however in reality it can be any location - including RAM: if you don't want it staying around too long especially when you switch off. At some time in the future it may be desirable for AROS to have a package-manager like subsystem able to retrieve information online about packages available for AROS and whether they update anything you currently have installed, however at the moment no such ability exists. ===User Data files=== AmigaOS has no notion of a default location to store user data files, and presently neither does AROS - though it may be desirable at some time to provide a common start location. For most people, extra small FAT32 NTFS partition(s) as well as the usual Sys: (DH0:) and Work: (DH1:) / Briefcase (DU1:) partitions to store data seems preferable. Especially if a reinstall is ever needed. ===User Environment configuration files=== AmigaOS/AROS stores persistent system configuration data in directory assigned to ENVARC:. This, by default, points to SYS:Prefs/EnvArc. During boot a copy is made to another assign, ENV:, which is for runtime usage. Changes to the files here will not survive a reboot. Setting the env variables is generally done by applications themselves, or when necessary by the user using the SetEnv command. SetEnv has a SAVE switch to force the persistent copy in ENVARC: to be written also for when you are sure the change should be permanent. Under the standard installation of AmigaOS style OSs, ENVARC: is copied to ENV: upon startup, which, if you have a hard drive installation, is in RAM:, hence, ENV: ends up being RAM:Env. ENVARC: is the Environment Archive, which is the permanent copy of ENV:, which is the Environment. It's roughly like the Registry in Windoze. Most programs do (and all should) store their settings in ENVARC: somewhere, and load them from ENV:. The effect of this can be seen in the Preference editors. If you Save your preferences, they go in ENVARC: and ENV:. If you click Use, they only go in ENV:. If you reboot, normally, anything saved to ENV: is lost, and is replaced with a copy of what is in ENVARC:. you can set the default public screen for any tool started from a cli with the PUBSCREEN variable. So open the pubscreen, set PUBSCREEN to the name and start newcli for example, then the new cli window (and all following windows opened from that window) will appear on that public screen. ===Drivers=== All hardware support is placed in the Devs drawer (folder/directory). The network drivers <something.device> go in the Networks sub-drawer. Audio drivers <something.audio> are put in the AHI sub-drawer. Graphics drivers <something.hidd> are put in the Drivers sub-drawer. ==Configuring== AROS has mainly decided on a MUI-like requester/menu/ clone so changing the background, icons, font, menus can be done with SYS:Prefs/Zune AROS has several desktop GUI front ends like * DOpus5 Magellan II, Wanderer and Scalos (medium) * AROS Workbench, Workbook (smaller) File / Directory managers like Dopus4, MCAmiga, App Launch Shortcuts like FKey, Amistart, BoingIconBar, right mouse click on magellan, wanderer desktop, etc. General usability decisions - Prefs/IControl, CLI in icon's tooltypes means 'run it as if it was run from shell' If, on the other hand, the WB parameter (or no parameter) is present in Tooltypes, Wanderer will execute the binary and, if provided, the options included in Tooltypes. WBxCLI is very useful for adding options to DOS Commands. Important: AROS has a different way of managing icons. If you have an executable file, you will never be able to add a project icon. AROS will automatically recognise that it is an executable file and will transform the icon into a tool icon. Most apps can be autostarted by copying into SYS:WBStartup directory folder e.g. WeatherBar.zip can be downloaded, unzip and the contents of the zip copied to wbstartup folder ClicktoFront and .info to SYS:WBStartup so always be activated when turning on the computer or add a text line to user-startup is SYS:S (scripts version of wbstartup) e.g. standard Amiga / AROS does not allow clicking of background windows to come to the front to make it easy to get to the window you need but it has the ability if these apps are copied again to WBStartUp or are added to SYS:S/user-startup script run QUIET sys:Tools/Commodities/ClickToFront >Nil: run QUIET sys:Tools/Commodities/DepthMenu >Nil: run QUIET sys:Tools/Commodities/Blanker seconds=300 >Nil: Exchange controls Commodities and can be opened with alt, ctrl, h Although there are heaps of docks, menus and other launcher programs on the Amiga like OSs, FKey has got to be one of the quickest and less complicated ways to launch programs, and it comes with the OS. In SYS:Tools/Commodities, the FKey commodity (Ctrl Alt F) allows you to make actions assigned to some combinations of keys <pre> ALT TAB Cycle Windows Cycle Screens Enlarge Window Shrink Window Toggle Window Size Insert Text Run Program Run Arexx Script </pre> e.g. <pre> LAmiga F1 = Avail Flush LAmiga F2 = Open Prefs LAmiga F3 = Finder Alt Tab = Cycle Windows LAmiga Tab or M = Cycle Screens Alt Up arrow = Enlarge Window Alt Down arrow = Shrink Window Alt Home = Toggle Window Size = Insert Text LAmiga e = Run Program = Run Arexx Script </pre> If your FKey GUI pops up when you start your Workbench up and you don't want it to, click once on the icon, go to the Icons-Information in the menu and make sure it has the tooltype set "CX_POPUP=NO". Now let's launch it and assign the locale switching. After you double-click on FKey icon, launch the Exchange, choose the FKey from list and click the Show button. This will invoke the FKey window. You can see the ALT TAB in list assigned to window switching. Now enter the first key combination, say, ALT Z and go to the right panel. Choose Launch the program from pulldown menu and enter SYS:Prefs/Input as an argument. Append the USE switch and english preset name to the string as shown: SYS:Prefs/Input USE SYS:Prefs/Presets/english Click on the New Button to add the another combination. Now set the combination for your locale as shown above, replacing English name with your preset name. Click New button again and then Save Settings. Now you can use defined combinations to switch the layouts. Although not needed by most users, the system wide ARexx script capability can manage many file manipulation task(s) but this would work only with those program that support [https://en.wikibooks.org/wiki/Aros/Developer/Docs/Rexx ARexx] like *Desktop - DOpus5, Scalos *Dock - FKey, *Files - Multiview, DOpus4, *Internet Apps - Odyssey, WookieChat, *General Apps - the shell can be modified with escape strings but not needed in most cases Common Keyboard Shortcuts <pre> RAlt Right Alt Key LAlt Left Alt Key RWinKey Right Windows Key LWinKey Left Windows Key RAmiga Right Amiga Key (if one) LAmiga Left Amiga Key (if one) </pre> ;Bootup Options :Spacebar during boot, enters the bootmenu which allows a boot without startup sequence, etc ;Left Click :LAmiga = LWinKey = F11 ;Right Click :RAmiga = Help = F12 ;Mark :RAmiga and B ;Cut :RAmiga and X ;Copy :RAmiga and C ;Paste :RAmiga and V ;Search :RAmiga and S ;Mouse Movement LAmiga and together with arrow keys - shift as well at the same time as well to move faster ;Mouse Selection LAmiga and LAlt to select ;Screen Switching LAmiga and M or N ;HELP key Can sometimes be mapped to F11 but can be changed via FKey ComKeyRemapper or AmigaKeyremapper could swap RAmiga to another key press ===DOpus 5 Directory Opus Magellan II=== Dopus 5.x is a whole desktop replacement on the Amiga Workbench (Desktop) DirectoryOpus app will assign DOpus5: to it's PROGDIR: automatically but if not add the below (edit SYS:System to suit where Dopus5 was installed) to your startup-sequence <pre> Assign DOpus5: SYS:System/DOpus5 DOpus5:DirectoryOpus ;DOpus5:C/LoadDB </pre> Left mouse button clicked twice on the desktop background brings up the Device List window. Green strip notifies SRCE (source) and if another is open it will be red for DEST (destination). clicking on the red strip changes to green Word list of actions with a left mouse click on the DOWN Arrow and directory stuff with < button which mirrors the icons at the top of each lister single-key hotkeys? exactly the same as in dopus4, edit your functions (button bank, toolbar, menus etc.) and under the flags gadget is a key gadget, just click in it and press the key you want to use. As for the extra text field... try turning off Extended lister key selection in environment / miscellaneous. Shift and click on the icon - runs the icon DOpus5 Magellan 2 Directory folder drawer structure <pre> ARexx - Arexx scripts .rexx and .dopus5 to perform tasks Buttons - Commands - Desktop - Environment - two environment files bundled: default gets loaded if you run DOpus as a normal app workbench gets loaded if you run DOpus as a WB Replacement (with LoadDB on startup) Filetypes - Groups - Icons - Images - Modules - compiled tasks Settings - Sounds - Themes - WBStartup - Use this if standard SYS:WBStartup gives cannot wait error messages </pre> Settings -> Environment -> Display -> Workbench (Use) *Settings -> Clock (add to title bar as well as the date) *Toolbar -> Editor (Right Win Key together with 1) for Copy, Move, Delete, etc above the Device List *Menu -> (Right Win Key together with 2) *Buttons -> Editor (Right Win Key together with 3) *Settings -> Environment (Right Win key together with 4) for Backgrounds, etc *File Types -> (Right Win key together with 5) *User Menus -> (Right Win key together with 6) *Hotkeys -> Setup for quick shortcut keypresses (Right Win Key together with 7) *Scripts -> (Right Win key together with 8) *Icon Positioning -> (Right Win key together with 9) Each Dopus5 theme are stored in a separate directory, named appropriately, which contains further sub directories * Font (amiga bitmap fonts) * Screens (jpg or any picture supported by datatypes but not animations) * Sounds (wav but not iff 8svx ) * Icons (png newicons glowicons ) * Patterns (iff jpg png ) Just use wildcards in background filenames and you get a different picture every reboot For example, configure in Environment -> Backgrounds -> Desktop something like this: <pre> Work:Pictures/Backgrounds/#? ...or Work:Pictures/back#?.iff ...etc... </pre> [https://aminet.net/util/dopus arcdir and themes] If you want to change the backdrop pic after a period of time, paste below into a text file called dopusrandbg.rexx and place in DOPus5:ARexx <pre> /* Changes DOpus background image forever Start with: Run >NIL: RX dopusrandbg.rexx */ if ~show("L", "rexxsupport.library") then do if ~addlib("rexxsupport.library", 0, -30,0) then exit 10 end /* Configure these two lines for your needs: */ minutes=1 picpath="Work:Pics/#?.iff" address DOPUS.1 do forever call delay 3000*minutes dopus set background '"'picpath'"' desktop center custom dopus refresh background custom end </pre> If you don't want to use/open rexxsupport.library just for DELAY() then use the DOS Wait command <pre> /* random diropus backdrop changer */ /* by paul trauth, 1999 */ /* to do: non-repeatable randomness? */ options results parse arg path address DOPUS.1 /* get current backdrop pattern so it actually changes */ dopus query background desktop custom currentpatt=result lastslash=lastpos('/',currentpatt) currentpatt=substr(currentpatt,lastslash+1,(pos('"',currentpatt,2)-lastslash-1)) dir=showdir(path,'FILE','/') num=0 do while dir~='' where=pos('/',dir) if where>0 then do file=left(dir,where-1) dir=right(dir,length(dir)-where) end else do file=dir dir='' end if left(file,1) ~='.' & file~=currentpatt then do pics.num=file num=num+1 end end which=random(0,num-1,time(s)) newbg='"'||path||'/'||pics.which||'"' dopus set background newbg desktop tile precision exact dopus set background on dopus refresh background </pre> Clock format commands available are defined by locale. They are: <pre> %a - abbreviated weekday name %A - weekday name %b - abbreviated month name %B - month name %c - same as "%a %b %d %H:%M:%S %Y" %d - day number with leading 0s %D - same as "%m/%d/%y" %e - day number with leading spaces %h - abbreviated month name %H - hour using 24-hour style with leading 0s %I - hour using 12-hour style with leading 0s %j - julian date %m - month number with leading 0s %M - the number of minutes with leading 0s %p - AM or PM strings %q - hour using 24-hour style %Q - hour using 12-hour style %r - same as "%I:%M:%S %p" %R - same as "%H:%M" %S - number of seconds with leadings 0s %T - same as "%H:%M:%S" %U - week number, taking Sunday as first day of week %w - weekday number %W - week number, taking Monday as first day of week %x - same as "%m/%d/%y" %X - same as "%H:%M:%S" %y - year using two digits with leading 0s %Y - year using four digits with leading 0s </pre> like %a %d-%b-%y %H:%M or A WB ARexx interface, you could enter a cli command as a menu item to open a WB drawer like this... RX "address WORKBENCH;WINDOW 'device:drawer' OPEN" Where device:drawer is replaced by the path of the drawer to open. The ARexx script would be capable to manage such a task but this would work only with those program that support ARexx <pre> dopus addappicon dopus addtrap dopus back dopus checkdesktop dopus clear dopus command dopus desktoppopup dopus error dopus front dopus getdesktop dopus getfiletype dopus getstring dopus matchdesktop dopus progress dopus query background, font, palette, pens dopus read dopus refresh all, background, icons, lister dopus remappicon dopus remtrap dopus request dopus script dopus screen dopus send dopus set background, font, palette, pens dopus setappicon dopus version </pre> <pre> lister add lister addstem lister copy lister clear value lister clearcaches lister close lister empty lister findcache lister getstring lister iconify lister new lister query active all, dest source lister query abort, busy, case, dirs, display, entries, entry, files, flags, handler, header, hide lister query label, lock, mode, namelength, numdirs, numentries, numfiles, numseldirs, numselfiles lister query path, proc, position, seldirs, selentries, selfiles, separate, show, sort, lister query title, toolbar, value, visible, window lister read lister refresh lister reload lister remove lister request lister set busy, case, dest, display, field, flags, handler, header, hide, label, lock, mode lister set namelength, newprogress, off, path, position, progress, separate, show, sort, source lister set title, toolbar, value, variable lister select lister wait </pre> The '''command''' allows you to call internal DOpus commands from an ARexx script <pre> command all command wait copy command read s:startup-sequence command source 12345 makedir name noicon </pre> *SFTP secure encrypted comms over internet using libssh2 and zlib (different protocol to the two below) on port 22 *FTPS secured with https like security on port 21 *FTP not secure and unencrypted protocol over internet on port 21 (should not be used today on the internet but for your own server) ===Wanderer === Wanderer prefs in the prefs drawer - Appearance tab and Workbench icon allows backgrounds (wallpapers) icon text sizes, colors, etc but cannot use #? or *.* in the backgrounds file entry to randomly choose pictures - [https://developers.google.com/speed/webp/docs/riff_container webp riff container], Enable the bar, you need to edit the text file ‘statusbar.prefs’. The change is simple: just change “False” to ‘True’. Prefs/Env-Archive/SYS/Wanderer/statusbar.prefs Provides a way to hide the old Workbench 3.1 style of windows and screens. Themes - SYS:Prefs -> Appearance The default content of Prefs/Env-Archive/SYS/themes.var should be "themes:ice" but can be changed via the theme prefs, please do NOT click the Use button. Its useless. As you know, it will ask for the theme volume. Just pick the theme you want, click on Save, then reboot. * Decoration is on. Any time trying to change theme, you get: "Please insert volume Theme: in any drive"? You could check if you find SYS:System/Themes or if it is missing. Then you could open startup-sequence which you can find in drawer "S". There should be a line: Assign THEMES: SYS:SYSTEM/THEMES >Nil: This does the trick. Open a shell and run: Assign THEMES: SYS:SYSTEM/THEMES Than start the Theme prefs again... this should work * The theme is the only thing that could slow the system a bit, but it's not that performance impacting on most uses, and you can switch it of completely. Remove C:Decoration from the bottom of the file sys:s/startup-sequence. [http://archives.aros-exec.org/index.php?function=browse&cat=graphics/theme ALua/Zulu script] built for faster Wanderer skin management. You can modify config files, install new (wdz format/zipped skin files) and delete skins via the Theme Manager. [http://sites.google.com/site/arosaspireone/download-1 Global.Prefs] ===Scalos=== [https://web.archive.org/web/20180922220139/http://scalos.noname.fr/ Scalos] is not an OS replacement, it's a Workbench replacement. It replaces the desktop and graphical file management components. Scalos is 100% Workbench replacement with most functions working like the original Workbench ones. Undo and Redo available for most window and icon operations. Fully multitasking so every window has its own task. While loading icons, any window function (e.g. Drag&Drop) is available. 24bit color support with window patterns - Unlimited and easily configurable via tooltypes. Optimised backgroundpatterns routine so patterns can be tiled, centred or even scaled to fit into the windows. Live updating window scrolling - Supports middle mouse button panning and drawer (folder) windows can be iconified on the desktop. Icon imagetypes with all types are supported such as backfill or complement. Configurable surrounding iconborder. Icon support also visually highlights files which are soft-links in the file system. Icon dragging is more stable and far less flickery on graphics cards. Whilst dragging, icons are displayed with text and they can become transparent over anything where they can be dropped. Single-window lasso mode, with scrolling window contents invoked by dragging mouse with configurable qualifier key. Text icon lasso selection used to ignore "Name column selects text icons" flag. Support for backfilled thumbnail icons, with selectable color and transparency. Added option to always generate square thumbnail icons with preview icons for images - Thumbnails can be permanently saved in icons. Supports PNG icons with alpha channel and real transparency and displays OS3.5 GlowIcons and are all scalable. Iconborders with variations (normal, shadowed, outlined). Completely configurable, filetype-specific user-definable popup menus and tooltips. Plugin system to exchange or add features and can enhance the Workbench and make it more configurable. Filetype plugins to display filetype-specific information. - Currently, EXIF information viewer for JPEG images is included. Plugin included for 100% support of OS3.9 Workbench features. Plugin included for AREXX API compatible to OS3.9 Workbench. Online update with updater.module Scalos works also as a Workbench replacement. In this case the 'emulation mode' has to be set by using Scalos' own version of LoadWB and offers * Scalos uses the Workbench Screen for its windows instead opening a new one * AppIcon, AppMenuItem, AppWindow functions are redirected to Scalos * all Programs placed in "WBStartup" should start * The Screen will be reopened in case of changes in ScreenMode and Palette settings <pre> v1.0 (V39.201) - November 1999 v1.1 (V39.212) - December 1999 v1.2b (39.220) - June 6, 2000 v1.2d (39.222) - 2000 (latest public beta executable) v1.3 (40.7) (beta) - August 2, 2001 v1.3 (40.22) - September 25, 2002 v1.4 (40.32) (beta) March 31, 2005 v1.6 (41.4) - March 27, 2007 v1.7 (41.5) - August 12, 2007 v1.8 (41.6) - March 12, 2009 v1.9 (41.7) (beta) - March 15, 2010 v1.9 (41.8) (RC1) - August 25, 2012 open source v1.9.2 (41.10) Deadwoods' AROS late 2022 32bit and 64bit build unifying the code base of ` for AROS x86 ABIv0, AROS x86_64 ABIv11 and AROS m68k </pre> Distros may have Scalos files under SYS:System/Scalos or Extras:Scalos. Known [https://github.com/deadwood2/AROS/issues/75 bug list], Certain files like Menu13.prefs, Palette13.prefs, Pattern.prefs and scalos.prefs need to be in SYS:Prefs/Env-Archive/Scalos they can be found in Scalos:Storage/envarc and country drawer or run the "Scalos Menu" preferences program. Note if already setup with sub-menu entries and then re-save your menu prefs as it will now generate a new/overwrite prefs file called "Menu13.prefs" in "envarc:scalos/". The same is also required for the new Palette prefs update, click 'Save' and a "Palette13.prefs" file will be saved in to "envarc:scalos/" directory. <pre> ASSIGN Scalos: SYS:xxx/xxx DEFER ASSIGN Libs: Scalos:Libs add ;ASSIGN SYS:Devs/Datatypes Scalos:Devs/Datatypes add Assign Theme: Scalos:Themes/Default_Theme add Assign Locale: Scalos:Locale add Protect Scalos:Tools/browse.script s add quiet Protect Scalos:Tools/OpenShell s add quiet Protect Scalos:Tools/run.script s add quiet run Scalos:Tools/LoadWB ;Scalos:Scalos </pre> Add the above to SYS:S/startup-sequence or SYS:S/user-startup '''before any Wanderer entries''' In the prefs drawer (folder) is the big prefs app Scalos_Prefs which covers these user setup areas <pre> About Scalos Paths - should be preset Startup - WBStartup drawer contents should auto run on each startup Desktop - edit titlebar, icon layout and in misc, auto leave-out (drag icon to desktop) Icons - Drag and Drop - Windows - Text Windows - in misc, drawer sorting at start of listing if needed TrueType Fonts - use Truetype fonts rather than system ones Miscellaneous - Plugins - after adding oop/title_clock.plugin %ti %da does not work, maybe needs ASCII .prefs added Modules - ?? Menu - setup for MainMenu and PopupsMenu with New Menu, RE Name, Key: shortcut, Command Properties FileTypes - already added def_Project icons and def_Disk (hdd sdd cd dvd etc) support PopupMenu - tweak how popups appear Pattern - Wallpaper backgrounds with Type DE, each pattern in the list can be edited, Save as Pattern.pre Palette - change the color of things , Save as Palette.pre </pre> Scalos_Prefs - Pattern - Minimum options to be changed are *DE Desktop/Background *SC Screen *TW Window/TextBackground ie Text listing showing if icon type not recognised *IW Window/Background ie Icons showing Workflow - In "Pattern List" tab, select New - choose a picture, highlight in list, click in number box under New button and slide to another number, click on "Defaults" tab and adjust Pattern numbers slider to choose right picture for each of the above options - Click "Pattern List" tab to check eveything is OK and click Save Pattern List tab on Patterns Page - Allows you to compile a list of pictures (one at a time rather than a whole folder e.g. with #? or *.*), assigning a number Nr to one or more of them for easy reference. Using this number you will be able to assign the pictures to specific windows on the Defaults tab Page. If multiple pictures have the same number, one of the pictures will be chosen randomly. This will allow you to have random desktop pictures, random window backdrops etc. Defaults tab on Patterns Page - Here you can set the defaults for the background pictures for the Desktop, Screen, Window and/or Text Mode throughout Scalos. Randomize every time [check box] - Usually Pictures with the same number will be randomly selected as soon as the configuration loads. If this option is set, the picture will be selected as soon as a window with the same number assignment is opened. *Fit size: The picture will be resized to the dimension of the new window.You *MUST* have set GUIGfx on. asyncron layout: Pictures will be loaded and rendered while the windows opens (Like original Workbench). If this function is 'off', pictures will always be loaded before opening the windows. *Use friendbitmap : The picture is present twice in memory for best speed. This option has no effect if V43 picture.datatype or GUIGfx are used. Always relayout: If "Fit size" is set, the picture will be scaled everytime the window's dimensions change. *Randomize everytime: Usually Pictures with the same number will be randomly selected as soon as the If more pictures have the same number, one of them will be chosen randomly. Patternlist New/Delete : Add a new picture. After that you should assign a number to it. The picture will be rendered as tiles. configuration loads. If this option is set, the picture Asyncron-Task priority: You can set the CPU priority for the Task if "asyncron layout" is set. <pre> Desktop: Number of the Picture for the main window. Screen: Number of the picture for the Scalos-Screen. Window: Number of the picture for the Scalos-windows. TextMode: Number of the picture for the Scalos-windows in Text Mode. </pre> Popup Menu preferences fully configurable menus (includes ToolsDaemon and ParM launch apps import), including support for context-sensitive Popup menus configs for top pull down menus for apps, etc. Workflow - Scalos_Prefs then Menu, New Item, New Command add name at top then in Command Properties e.g. add Workbench and location e.g. DOpus:DOpus4 for apps Command for c apps or Rexx for scripts or Plugin for or AmigaDos for modules <pre> DESCRIPTION NAME/A This is the title that is displayed in the top line of any popup menu INCLUDE NAME/A Name of file to be included. Path can be relative to "Scalos:FileTypes" POPUPMENU Starts the popup menu description section for this filetype. </pre> The following Subcommands are allowed inside popup menus: <pre> SUBMENU "NAME/A" ENDSUBMENU MENUENTRY "NAME/A,KEY/K,DEFAULTACTION/S" ENDMENUENTRY INTERNALCMD "NAME/A" WBCMD "NAME/A,STACK/K/N,WBARGS/S,PRI=PRIORITY/K/N" AREXXCMD "NAME/A,STACK/K/N,WBARGS/S,P=PRIORITY/K/N" CLICMD "NAME/A,STACK/K/N,WBARGS/S,P=PRIORITY/K/N" ICONWINDOWCMD "NAME/A" PLUGINCMD MENUSEPARATOR ENDPOPUPMENU TOOLTIP ENDTOOLTIP </pre> <pre> Starts the tooltip description section for this filetype. The following Subcommands are allowed inside popup menus: GROUP "ORIENTATION/K" ENDGROUP MEMBER "HIDE/K" ENDMEMBER HBAR STRING "ID/K,TEXT/K,SRC/K,TEXTPEN/K,HALIGN/K,STYLE/K,FONT/K,VALIGN/K" SPACE "SIZE/N/A" DTIMAGE "FILENAME/A" </pre> Each theme drawer (folder) has these further folders <pre> About - Desktop - FileTrans - FileType - Icons - Menu - Modules - PointerIcons - Prefs - Sound - Window - </pre> *Plugins <pre> devicefilter.plugin persist.plugin should a crash or reboot occur - next time Scalos started, all windows re-opened title_clock.plugin add digital clock to title see more below title_envvar.plugin %ev, which can be used to display the value (a string) of the variable in the titlebar title_freepens.plugin volumegauge.plugin wb39.plugin wbrexx.plugin plugin adds a Workbench 3.5+ compatible AREXX interface to Scalos internals xtwindows.plugin left or right ALT or left or right SHIFT keys when open/close windows filetype.plugin then run FileTypes-prefs and customize the filetypes (eg import from a DefIcons-brainfile) menu.plugin </pre> *Modules - delete, empty_trashcan, execute, find, format_disk, information, iconproperties, newdrawer, reboot, rename, systeminfo, windowproperties *Tools - scripts like LoadWB, quit.rexx, open_volume.rexx, In Scalos_Prefs->Filetype->Recognition you can define the filetypes and on "Action" you define specific context menu for all filetypes defined in recognition (similar to magellan) there is the same you must show all first (list is only limited) so you created a file type AAABBB, you need to have def_AAABBB icon Associating files with "Scalos_FileTypes" is very simple, practically it is very similar to Dopus4, first you create the Def_icons to assign to the file type (will be seen automatically ), then run "Scalos_FileTypes" you add the extension, fill in the descriptor (MATCH or PATTERN etc..) and save then you create a appropriate entry in the list and rename it, if def icon exists it is shown. Below you can define how files are identified. I use "pattern", similar to magellan to identify file by ending. Then you click on the shown icon and define in it what program is used when you double-klick on it and save it. On the tab action you can define popup menu for it. defined all archive types from XAD in "filetypes". If you change to "action" and click on "archive" you can define the context menu that is shown if you do not define a specific context menu for a filetype Reset to Default in Scalos_Prefs resets all settings so BEWARE <pre> The Scalos desktop screen titlebar may be configured using the main Scalos Preference program. This oop/time_clock plugin adds some additional placeholders: %ti, displays the current time in the default Locale format. e.g. "10:43:37" %da, displays the date in the default Locale format. e.g. "Saturday 14 July 2001" Using the supplied prefs program for the plugin, or editing the ASCII file ENVARC:Scalos/title_clock.prefs you can use the following standard Amiga Locale values to change the formatting %a - abbreviated weekday name %A - weekday name %b - abbreviated month name %B - month name %c - same as "%a %b %d %H:%M:%S %Y" %C - same as "%a %b %e %T %Z %Y" %d - day number with leading 0s %D - same as "%m/%d/%y" %e - day number with leading spaces %h - abbreviated month name %H - hour using 24-hour style with leading 0s %I - hour using 12-hour style with leading 0s %j - julian date %m - month number with leading 0s %M - the number of minutes with leading 0s %n - insert a linefeed %p - AM or PM strings %q - hour using 24-hour style %Q - hour using 12-hour style %r - same as "%I:%M:%S %p" %R - same as "%H:%M" %S - number of seconds with leadings 0s %t - insert a tab character %T - same as "%H:%M:%S" %U - week number, taking Sunday as first day of week %w - weekday number %W - week number, taking Monday as first day of week %x - same as "%m/%d/%y" %X - same as "%H:%M:%S" %y - year using two digits with leading 0s %Y - year using four digits with leading 0s like %d %m %y or %a %d %B %Y %p </pre> Shutdown -> right mouse button Scalos, About, Reboot, Shutdown ToolTypes can be added to the Scalos.info icon like *SCALOS_PATTERNNO=<number> : background image matching the number *SCALOS_NOTEXT : The Icon will be drawn without Text. *SCALOS_NODRAG : The Icon will not be draggable. Its position will be fixed. *Module iconproperties - Added SCALOS_BROWSERMODE tooltype support runcommand parameters... in which case: <pre> %p = parameters %w = directory path %d = device-name %% = literal percentage token </pre> With the help of the wbrexx.plugin Scalos gains support for more of the compatible arexx API If an arexx command produces an error you will find the error code placed in the WORKBENCH.LASTERROR variable. ACTIVATEWINDOW <pre> /* Activate the root window */ ADDRESS workbench ACTIVATEWINDOW root /* Activate the "Work:" partition's window if already open*/ ACTIVATEWINDOW "Work:" </pre> CHANGEWINDOW <pre> /* Change the root window; move it to position 10,30. * and change its size to 200100 pixels */ ADDRESS workbench CHANGEWINDOW root LEFTEDGE 10 TOPEDGE 30 WIDTH 200 HEIGHT 100 /* Change the currently active window */ CHANGEWINDOW active 20 40 200 100 </pre> Most of Scalos' issue are due to the flexibility of its' user configuring nature but if The sort menu plugin needs to be ported from ASM to C. IIRC Scalos has a command line option to fully replace Workbench/Wanderer. The Theme: assign is used by both Wanderer and Scalos but I didn't have any problems using both at the same time. The Program will be started from the Shell. If "WB Args" is set, with the Argument "%p" will be replaced by the path of the activated Icons. The Program will started with the specified Stack value. IconWindow: Scalos opens the window of the specified path. PlugIn: Starts a Scalos Menu-PlugIn. If a Menu Item with empty name is specified, Scalos displays a separator line. It's possible to Drag&Drop an Icon in the Configuration Window. All values will be set accordingly. Entries may be dragged across the list. Mac-like selection : This function activates a multiselection method used on MacOS or Win95. Don't have to hold down shift to drag them. Clicking on an already activated icon will not deselect all other icons. MMB move: The window contents may be moved using the middle mouse button. WindowPopup title only: PopupMenu for windows can be opened only on window's title bars. FullBench: Screen-Titles removed and Main Window set Full Size. Scalos Prefs. Go to Settings->Scalos->Prefs and then the Misc section. Remove the tick against Full Bench. If you've enabled it, the titlebar will disappear when you select backdrop. Default Icons saveable : The icons which Scalos generates if "show all files" is enabled, can now be saved using "snapshot" menu option. load DefDisk first : Try to read the icons first from the DefIcons Path before using disk info. Hide hidden files : If this function is activated all files or directories where the "hide" flag is set will not be shown. Many of my Icons display more than once on the screen, while on the workbench all seems ok. The Workbench filters double displayed icons, Scalos does not. Solution: please edit the ".backdrop" file and clear double lines. Background images not scaled. GUIGfx option not set or guigfx.library and/or render.library not installed. If working with CD's causes crashs or Scalos doesn't work correctly. Most Filesystems doesn't support the ExAll function correctly. Disable "Use ExAll" in Scalos prefs. Scalos doesn't start any program in the WBStartup. WBStartup Path may be set wrongly or Scalos was not started in Emulation Mode (LoadWB etc) Some programs will not startup with error message "has not returned, wait some more"? and "unable to open your tool" need a def_icon with the same name predefined, then create an appropriate entry in the list and rename it, if def icon exists it is shown. Below this can define how files are identified. * either "pattern", similar to magellan to identify file by ending * or Then click on the shown icon and define in it what program is used when you double-click on it and save it. On the tab action you can define popup menu for it. All in all handling is of course different to magellan but can do similar For the RAM Icon, to obtain this you have only to copy the icon in the Icon Path as "RAM.info" or "Ram Disk.info". All functions will automatically be performed sometimes cut into half or quarters when scrolled off screen or drawers moved - settings issue probably Sometimes leaves initial drawer window imprint on desktop when moved - settings issue Scalos AROS released a [https://github.com/deadwood2/contrib/tree/master/scalos new build V2022-07-21] with the following changes noted: <pre> Fixed: Numerous crashes when working on 64-bit with 64-bit heap Wrong background color of Scalos logo on Scalos splash window Backgroung image of Scalos splash window and Scalos About window is not visible Icon labels on desktop and in drawer windows are displayed using Topaz instead of Arial font Font.prefs are not being loaded on 64-bit Font.prefs are being wrongly saved on 64-bit scalos.prefs are not being loaded on x86 and x86_64, scalos is using always default preference scalos.prefs are being saved on x86 and x86_64 in format not compatible with m68k NewPopupmenu.prefs is wrongly written Plugins are not loading at Scalos startup wbrexx.plugin is crashing at startup on 64-bit Multiple controls missing on Scalos Prefs/Icons page System crash when clicking on def icon image on FileTypes Prefs/Recognition page Status bar, control bar, buttons sometimes don't have images displayed Buttons in Scalos About window have white corners rendered where they should be transparent Crash when leaving out an icon Crash when adding a User-defined Button to Control bar without setting it's properties in Scalos Prefs Crash when removing any button from Control bar in Scalos Prefs Scalos Prefs allows editing TTEngine font properties when TTEngine is not present causing crash in Icons/Labels and Text Windows/Fonts pages deficons.prefs are not being loaded on x86 and x86_64 Reset to default in FileType Prefs and Save does not save preferences Won't fix: Scrollbars visible on titles of TrueType Fonts, PopupMenu, Menu, FileTypes, Pallette and Pattern pages of Scalos Preferences Not fixed: Wrong rendering on DualPNG icons Refreshing drawer windows is slow Starting Prefs/Locale or Prefs/Input from Scalos causes other preferences to fail Desktop wallpaper is damaged where Splay window was displayed When started from Wanderer, after saving Scalos Prefs, reload does not re-open main Scalos window Difference in behavior between Cleanup from popup menu and Cleanup from top menu - possibly due to missing plugin, check Cleanup association in Menu Prefs </pre> ===DOpus 4 Directory Opus=== Copy DOpus4 app to WBStartup directory folder so it starts on boot up each time Another method is add the below to the bottom of the user-startup script in S: drawer/directory <pre> run DOPUS:DirectoryOpus -i >NIL </pre> makes DOpus starts up in Iconified state at the top of Wanderer's screen. Left click on this to highlight and right mouse click to open. Just click on the sides of either outer edges of DOpus windows and it will display the parent device/volume list. DOpus saves it features in a CFG file which can be edited to suit anyones' needs by reading the [http://archives.aros-exec.org/index.php?function=browse&cat=utility/filetool Dopus Manual] which is in Guide format. ===AmiStart=== Auto generates the apps menu but scans the drive each time - AmiStart can choose apps you are not interested * how to disable annoying zune/mui 'bubbles'? try a right-click on AmiStart and release on Global settings. Then click on the bubbles gadget. Move the Show Bubbles slider all the way to the left. ===BoingIconBar=== User chooses the apps to add to the dock at the centre bottom of the screen but has to be done manually, please use Save afterwards Or easier edit the text file of SYS:Prefs/Env-Archive/iconbar.prefs and save <pre> SYS:System/Shell SYS:Tools/DOpus4/DOpus4 SYS:Utilities/Editor SYS:System/SysMon SYS:System/Scout Work:Extras/Internet/OWB/OWB Work:Extras/Graphics/Lunapaint Work:Extras/Graphics/ZunePaint AROS:Tools/MPlayer/MPlayer Extras:Internet/AmiFox/AmiFox </pre> right mouse click on bottom edge of screen where boingiconbar shows - select settings which opens BoingIconBar Preferences to add apps If no dock showing Add, to add apps click Add Program and search for the executable another method is to drag icons to ends of the bar and move them on the Bar using the Prefs/BoingIconBar ===Icons=== Icons are typically now .png pictures renamed as .info e.g. so Office application name would have a Office.png renamed as Office.info or MyApp.png as MyApp.info, etc. Leave Out menu option to leave app icon on desktop To select multiple icons and save their positions, click on the first icon and after while you hold the Shift key down select further icons and don't release it before SnapShot is finished. You can also select a whole group of icons by pressing the LMB at the top left of the icons and while keeping the LMB down moving the power towards the bottom right. A expanding bounding box will appear and all the icons within it will be selected. Clean Up menu option (right mouse button -> Icons) rearranges icons in a drawer or disk window into a neater condition. To use, open the window to rearrange and select Clean Up. To keep the icons in the new positions, select all the icons (shift key or mouse selection) and select 'Snapshot' and then Window and then again with All. In DOpus5, Scalos, wanderer, most files have an icon file associated with it. To change the default tool, select Icon menu, Information, and change the default tool string. For example, you could use Multiview, Editor and so on for most text, graphics and some sound files as long as the appropriate Datatype classes are installed. For scripts, set the tool to C:IconX C:Join Image1.png Image2.png TO MyFile.info is enough to make a dual state icon from two png images. You can then use Wanderer's menu Icon/Information on it to edit its fields and tooltypes. [http://www.amiga.org/forums/archive/index.php/t-46881.html Amiga OS 3.x AfA icons thread], [http://eab.abime.net/showthread.php?t=66213 Later DualPNG and OS4 icons thread] and [http://archives.aros-exec.org/share/graphics/icon/ Alternative Icons sets] like [http://www.amiga-look.org/artwork/classic-wb-png-iconset-l ClassicWB] [http://www.masonicons.info/6.html AISS toolbar images] unpack unarc them into RAM: and copy Images directory to SYS:Prefs/Presets/ AISS icons are looked for in PROGDIR:, PROGDIR:Images, SYS:Prefs/Presets/Images and then in TBImages: according to Open Amiga guidelines. there is Demos/iconscale which could be launched from S:User-Startup with two arguments, telling it the horizontal and vertical size. IE something like Demos/iconscale 40 40 It will shrink icons... not sure if it will be very nice though. it doesn't work for the icons on the main desktop. there is an option to scale an icon to a bounding box afair, try iconsize followed by two numbers, like: iconsize 32 32 Is there any way in AROS to change an icon type from Project to Tool or vice versa? Either the SIT option of [http://archives.aros-exec.org/index.php?function=showfile&file=utility/workbench/ ProcessIcon], or the TYPE option of HandleInfo (not sure if this one works at all, please test with care). processicon sys:pathoftheicon SIT=Project SIT Set type of ICON. Allowed types are: "Disk", "Drawer", "Tool", "Project", "Garbage", "Device", "Kick" and "AppIcon". Btw, are your icons, the #?.info files, writable, is the W flag set ? ===Fonts=== Install the #?.ttf files to SYS:Fonts/TrueType. Use SYS:System/FTManager to "Install Font" each #?.ttf file which will generate associated #?.otag and #?.font in SYS:Fonts. Use SYS:Prefs/Fonts to change system fonts and SYS:Prefs/Zune to change others. To achieve our goal we will use the Setup Locale, Input, Zune and Fonts, as well as The FTManager. Begin The first step you should do is to get the system to know that we speak and write in another language. What you need to do is to open the setup program and choose Locale country, and list "preferred languages" to put it first and then English. If you want the tab "Time Zone" and select city of residence to set the clock correctly. Of course we save our changes and continue opening the setup program Input. This sets the keyboard language as our beginning. When the language layout was created there was no option to switch to Aros keyboard (layout switching), so to write in the language you had to hold down Alt, something you encounter in other functions. This time working with the team of Aros to create a new keyboard layout to replace the old so we can get rid of the button Alt. For now though let only selected this layout and do not turn the switch on the keyboard. Custom Keyboard Layout [http://repo.or.cz/w/AROS.git/tree/HEAD:/workbench/devs/keymaps keymaps are in place but unfortunately when they are not, then indeed things become a bit 'low-level' as it involves redefining some tables with values that match your keyboards] only need to add your compiled table as new keymap. So taking a little peek here shows that it should be possible to compile using gcc -opc105_tr pc_105.c -nostdlib where the pc105_gr/pc_105.c needs to be replaced with your own adjusted keymapname/c-file [https://en.wikiversity.org/wiki/Enabling_Greek_Characters_on_Your_Keyboard General overview of Greek letters on keyboards] Installing fonts *[http://aminet.net/package/util/wb/EPAGrWb System jaggy] *Outline resizable .font .otag In this step you need to download some fonts that can support the encoding in our system. The easiest way is to run the script "Download Fonts" you'll find in the folder OWB. This script downloads from the Internet, and unpacks some fonts for OWB web browser, which is placed under the folder Fonts:TrueType. But as these can only be used by OWB and not the system, which unfortunately does not see. To make them available to the rest of the system, open the program FTManager, you will find the folder AROS: System /. From there select the field "Codepage" option "ISO-8859-7" and list the font "Arial" and "Regular" form in which you must double-click with the mouse. In the window that appears, select the bottom right the checkbox "Anti-aliasing" button and then "Install". Immediately folder Fonts: created files "arialregular.font" and "arialregular.otag", which are necessary in order to see the system font. Do the same steps if you wish for other fonts. Final stages After completing the above, open the folder AROS: Prefs / and run the program settings Fonts. In the new window, select the fields "Icons" and "Screen" as the font "ArialRegular" to the size you want. In the field "System" to give "s_courier", which, however, because it is not True Type Font support Antialising, and may seem a little broken. You can also use the CourierNew, if you have installed the above procedure. After you save the changes and open the Zune program settings. In this set the "ArialRegular" font fields in tabs "Windows" and "Groups", and save the changes. Reboot the system. To make sure that the above worked properly run NoWinED, which you will find under the folder AROS: Tools /. If that everything is working correctly you will see the menu and the settings window with Greek letters. You can also write in the language using the button Alt. Second program that you can try, which is fully localized, is WookieChat, which you will find in the folder AROS: Extras / Networking. And in this place all the menu and settings window works. ===Windows=== *Intuition The window you position and resize, you right click on that windows title bar and in the dropdown menu you snapshot from there. Right click to show menu -> Window -> Snapshot Windows or All but it will NOT work if that folder has no icon (e.g. Disk.nfo) attached to it. You need a folder icon. The window information gets saved in it. As for maximising the window using a shortcut key - Alt and up arrow key The AROS-Shell windows can be moved, resized by editing sys:s/icaros-sequence <pre> ; run shell if ${Icaros/autoshell} EQ true run QUIET c:newshell >NIL: EndIF </pre> ; slimmer right aros the screen run QUIET c:newshell con:0/150//300/ >NIL: ; top right corner scr-x scr-y win-x win-y run QUIET c:newshell con:600/150//300/ >NIL: *Zune - AROS version of MUI Magic Menu type functionality is implemented in IControl preferences editor: in the frame called Menus, switch type from Pull-Down to Pop-Up and/or iControl just tick the sticky menu option. Windows outside screens causing a problem either uncheck "Offscreen move" for windows in IControl prefs editor. Or use FKey commodity and define two key shortcuts: * the first using the command "cycle windows" (for example ALT TAB); * the second using the command "rescue window" (for example ALT F5). Now you can cycle windows until the one you want to rescue, and then "rescue" it: it will move back inside your screen. How to save the window size on wanderer (snapshot all, snapshot windows) Same for icon position on wanderer, can't save the position. Icon position cannot be saved yet, but you should be able to save the window position and size. sys:prefs - wanderer icon has option to save window size on exit but just for dh0. To get saving working on (DH1: Extras:) partitions try deleting the dh1 disk.info file, then reboot. The system should create a new dh1 icon. * how to set up permanently 'view all files'? As for viewing all files, removing disk.info for that disk did the job * how to list and kill processes (xkill would be useful) ? sys:Extras/System/Scout can kill apps sys:Tools/Commodities/Exchange can remove available commodities * how to restore 'go up' button in wanderer window? (it doesn't show up anymore). If you're using Icaros, go to the theme prefs and make sure that decoration is checked. Also, some themes do not use a parent button, so try another theme. You may have to restart Aros before the theme will change. * Is it really safe to turn off (hardware button) computer at any time (worried about USB hard disk) yes you can turn off the computer IF none of the drives are in progress (i.e. writing). Best to use Wanderer menu option Quit otherwise ===Printing=== This is still work in progress print from my AROS box! <pre> 1. installed printfile ( http://www.lerup.com/printfile/ ) on my Windows XP computer 2. set up the print spooler option, and used ghostscript filter for ps files 3. made the spool folder accessible from ftp (setting up ftp server on Windows) 4. send the ps file from my AROS box to the ftp server using curl (curl -T filename ftp://windows.box.adress --user username:password) </pre> It's a bit complicated but it works! *Postscript Best to set Printer Prefs in the Prefs drawer to print-to-file or parallel/USB port Save document in postscript or convert picture/text to postscript Print using compatible [http://en.wikibooks.org/wiki/Aros/Platforms/AROS_USB_support#printer.class_-_PostScript_3_and_internal_ghostscript_drivers Ghostscript printer] or Postscript printer *GutenPrint Some work has been done ;There are no individual drivers yet for HP's Photosmart, EPSON's EPL, CANON's, Lexmark, CUPS PPD, etc. ===Files=== ====File endings and datatypes==== * Check if the file has his own .info icon file with a tool set to open it. IIRC this has higher priority over the def_XYZ.info file association. * In ENVARC:SYS/def_Text.info or whatever def_ file needs changing, use Wanderer's menu Icon -> Information and change the def_XYZ.info there. If you're on ABIv0 and want it to be applied immediately, you might have to copy it to ENV:SYS/ (or to reboot). * Identifying file types by file ending is only a fallback. Far better it is to search for magic words, for flac files this would be "flaC" according to this [http://flac.sourceforge.net/documentation_format_overview.html documentation]. For instance, to open PDFs with arospdf not localised in the default drawer of Icaros (Work:Extras/Applications/arospdf) but localised in a custom drawer in AROS. The default tools are defined in the icons in sys:prefs/env-archive/sys e.g. def_PDF. File type identification is done by datatype descriptors which you can find in Devs/Datatypes. The AROS build system has a tool which creates such datatype descriptors. '''Changing of default tools of existing icons is easy as shown above. Adding of new file types is not hard, but needs knowledge of the AROS build system.''' The enduser way would be to download the attached file, which contained two executables: 1) createdtdesc, to make a new datatype description 2) examinedtdesc, to read/show existing datatype descriptions use 2 to get an idea on how it things are currently done in aros by providing this executable a file from the drawer sys:devs/datatypes/ (alternatively you can find the original .dtd files here). use 1 to make your new datatype. Use the accompanied FORMAT file (also here) to read how to make your own datatype descriptor. use 2 to get hints from other datatype descriptors. Note: When creating a new descriptor would advise against using the pattern property, but instead use the default pattern of #? and create a Mask that matches your filetype. This requires some research in order to discover how your filetype can be recognized properly. Of course with making something like a descriptor for an ascii textfile, you would fallback to using the pattern (e.g. #?.text as the filetype cannot be determined easily otherwise). <pre > # name - choose wisely and informative. also used for icon's name. # version - choose as you like as long as it complies with version rules # basename - the 'root' datatype class. be aware that e.g. it can influence behaviour. for example when choosing binary and using tool multiview in project icon, the file will be viewed as binary file (choosing sound would tell mulitview to view the file as a soundfile). So this can influence the underlying tool being used. Could become messy if users started to modify the tool manually. # pattern - This is the file pattern match e.g. #?.text # Mask - A mask to identify the file. Requires knowledge of the actual file structure. For example 'M' 'Z' for an msdos executable. # GroupdID - not supported (AROS native) files - use syst as that would be the least intrusive in case an AROS tool/program tries to load such datatyped file. # ID - In your case, the first four characters of the name at subchapter 1 (in lower case) (or less if name is shorter). # flags - How the mask needs to be interpreted. In your case would be mostly DTF_BINARY in combination with (wanted or not) DTF_CASE (to tell if mask used letters are case sensitive or not) # priority - the priority of how the type is handled so that on datatype could have precedence over another? In any case, document tells it to be mostly 0. </pre > Now that you know each field and what it does (more or less), you write this fields in a text file for your own invented datatype, save it and create the actual dt with the tool in 1. in the end the created dt must reside in sys:devs/datatypes/ drawer. Then you would create a default icon in sys:prefs/Env-archive/SYS drawer. Don't forget to reboot or copy .info file to ram:env/sys in order to test. also don't forget to set which tool to start f.e. c:lx or dh4:emulators/mycoolemulator To test, open Wanderer then show all files and doubleclick on a file of type you just created. Alternatively you could use the 'open' command from shell (with file of datatype you just created as parameter). And as a last note. it would perhaps be welcome to have a program like xicon and/or runprglist for AROS (unfortunately both without source, but something similar could be created for AROS). Sounds complicated ? Perhaps... but OS like windows needs a complete registry to be able to do things like this. And yes, i am aware windows has gui tools that does it (more or less) for you (by manipulating the registry). Same could be done for AROS (without integrating a registry in AROS that is ). Would that suffice ? red1+2: typos, reformatting. disclaimer: please note that using these tools can screw up your currently installed support for datatypes when used incorrectly. Do not use if you do not understand what you are doing. Use at own risk. ==Network Connection== AROS currently only has one real choice for TCP/IP networking - AROSTCP. This is a port of the AmiTCP package from AmigaOS (TM), with a number of enhancements/fixes from AROS developers. Please use Prefs/Network to set up wired, wireless or USB networking Non USB wifi is easier, USB wifi can be an annoyance - remember to save whilst in prefs ===Wired=== =====IPv6===== No support so far 128bit IPv6 address packet <pre> Local FD::/8 Global 2000::/3 64:ff9b::/96 </pre> NAT64 translates IPv6 to IPv4 DNS64 OS routing works with <pre> MacOS Ventura Windows 11 with cloud account Ubuntu Jammy Jellyfish Android 10 (block google dns) </pre> ====IPv4==== The top half of the IPv4 Configuration tab on the Network Prefs deals with the network card/USB and the lower half the router part. [[File:AROS Wanderer Network Prefs DHCP.png|thumb|DHCP Settings]] '''Upper part of IPv4 tab''' * Click Add on the top right of the Prefs which opens a window called '''Interface''' * Enter Name as net0 (but can be anything as long as it is consistently used in other sections) * check mark on Active * select device to be used using the '''right hand-side gadget''' of the box where the device name will go * set Unit to 0 * IP Mode is default set to '''Get address from DHCP''' * IP Mode set to Manual if DHCP does not work automatically From the shell CLI, ifconfig -a Under net0: section, inet starting 192.168.x.xxx * inet or '''Address''' of network card * netmask convert to decimal so 0x'''ffffff7f''' becomes 255.255.255.247 which is used to adjust the above '''Address''' into * broadcast 192.168.xxx.xxx click OK [[File:AROS Wanderer Network Prefs Manual.png|thumb|Manual Settings]] '''Lower part of IPv4 tab''' * IP Mode Get address from DHCP (default) * or changing to Manual if automatic DHCP set up does not work * '''Gateway''' (Router Internal LAN-IP) (Default Route) = 192.168.0.1 (D-Link Netgear), 192.168.1.1 (Linksys 3com), 192.168.2.1 (SMC Microsoft), 192.168.1.254 (Belkin), 192.168.123.254 (USRobotics) else check with your router manual * first DNS = use 208.67.222.222 (opendns) or Gateway number above (to test web browser access to router) or 212.50.160.100 (google) i.e. or whatever your ISP needs you to set * second DNS = use 208.67.220.220 (opendns) or Gateway number above (to test web browser access to router) or 213.249.130.100 (google) i.e. or whatever your ISP needs you to set * At the bottom of IPv4 tab, check mark the '''Start networking during system boot''' option * Save and reboot (sometimes Network restart fails, so reboot every time to be sure) '''an alternative way''' to AROS ifconfig -a, other OSs have similar for the same internet connection. Another connection will have different settings. e.g. From [http://www.ncsu.edu/resnet/windows/ipconfig/ Windows], '''ipconfig /all''' and note down the IP, subnet mask, default gateway, and DNS servers values and put these values in "manually" into AROS Network prefs. e.g. From Linux via dhcp router have a look at etc./dhcpc/dhcpcd-eth0.info * for manual input look at /etc/networks (IP or Gateway) and /etc/resolv.conf (DNS) Please note that all in one routers (wired+wireless) or separate routers may need different settings IPv4 involves routing (192,168.x.x), firewall, NAT ===Wireless=== [[File:MyArosWirelessSetup.png|thumb|Setting up]] [[File:MyArosWirelessTCP.png|thumb|Shell commands to work out what is happening]] We must first make certain you have a Atheros 5k chip inside acting as the wireless wifi option. Open PCITool in Tools directory. Down left hand side are a series of numbers 0.00.0 etc. Click on some at the bottom and hopefully one of them will say Atheros AR5??? or AR242?. or a Realtek RTL8187B, we can check using Prefs/Trident as this one is USB based There are many similarities with the above Wired set up so please read the above section as well * open Network/Prefs * In '''IPv4 Configuration''' tab - click Add - enter net0 / active tick / #?.device / Unit 0 / IP Mode = manual (important if default DHCP does not work automatically) Make sure that any extra network names (e.g. eth1 or net1) should be deleted. If net0 already st previously, change net0 so that it shows associated with the appropriate device name like atheros5000.device or realtek8180.device. Having two entries here will cause sub-net problems. * Go to '''Wireless''' tab and click on "Add" button. * Insert network name (SSID your wireless network name use wirelessmanager to get it), select right "encyption" that is most likely "WPA". * Key Type set as "Passphrase". i.e. type in your password for your router (aka access key). * Unselect (no tick) "hidden" if it is selected, then apply. You may have to tick it if wireless does not work. * Finally, Save and '''reboot'''. For the best chance of success, set networking to start at boot, and then reboot with the USB adapter plugged in. ===USB Ethernet=== Open SYS:Prefs/Network and in the IPv4 Configuration tag (top table covers your usb stick) * click Add button * set Name as net0 * Tick Active box * enter the usb-ethernet.device e.g. dm9601eth.device, usbpegasus.device or usbasixeth.device use SYS:c/devlist, '''Scout''' or trident prefs to get the correct spelling * set Unit to 0 (which is usual but check the messages from the bottom of the Trident prefs whilst plugging the device in to determine the unit number otherwise) * IP Mode is set to Get address from DHCP (make sure your router is set right for that) '''or manual''' * IP Address of network card, i.e. 192.168.0.xx or 192.168.1.xx (xx being greater than 1) * Subnet netmask = 255.255.255.0 * click OK There can be sometimes be boot failures when using USB ethernet - plug the USB device in after boot and save the network prefs to make it work again. Lower part of IPv4 tab covers the router information * IP Mode Get address from DHCP '''or if manual settings''' * Gateway (IP Address of router) = usually 192.168.0.1 or 192.168.1.1 but see router manual to make sure. * first DNS = use 8.8.8.8, 208.67.222.222 (opendns) or 212.50.160.100 * second DNS = use 8.8.4.4, 208.67.220.220 (opendns) or 213.249.130.100 ===USB Tethering via Android smartphone=== Go to AROS Network Prefs (IPv4 configuration tab) and write type in "usbrndis.device" in the "device" textfield of "Interface" sub-window, which appears when you add a new device (or modify an existing one). Select "Start Network during system boot" and saved the configuration, the Connection is immediate no reboot is needed.<br> usbrndis.device is a resident device (virtually always there) in fact, a driver is not present in DEVS:Networks <br><br> Plug in USB cable, go to Android settings and enable "USB Tethering" <br> A reboot should not be necessary. When restarting AROS, the Smartphone deactivates the connection and to access the network again have to reactivate it before starting the browser. ===Solving Issues=== [[File:MyArosTCP.png|thumb|Aros network setup diagnostics - why does it not work?]] * In Network Preferences, have '''only one''' item in the IPv4 Configuration tab * If using manual settings, make sure all numbers are correct, especially for IP address of the card/usb (changing the last number in chain of four) * For any USB based networking, it is often necessary to save in Prefs/Network, reboot AROS and network support can begin * For wired, make sure that the LAN-cable is plugged in before starting the computer * If wireless, try getting closer to the router. * Switch off the encryption option from your router then try wifi, if successful then your ip/dns is ok. If not then your ip/dns settings are most probably wrong or need to use one or more opendns numbers * Replace detachable wireless antenna (best wireless option to buy if you can) with a stronger antenna ie. 5&nbsp;dBi or 7&nbsp;dBi * Try with another computer/laptop/machine Program Error C:WirelessManager * Test with another OS * Check that Wifi works before changeover (if possible) * Check that socket and card are working * Check if card is too new for laptop (date code on card MMYY blue askey date 2005-2007 etc) Are you connecting with the Router ? Check with protection off e.g. wps and wep to see if it makes a difference. For USB wireless - stopping and starting may be needed... <pre> ; $VER: AROSTCP-startnet 1.0 (01/08/06) ; AROSTCP-startnet (c) The AROS Dev Team. ; Run <NIL: >NIL: AROSTCP WaitForPort AROSTCP If NOT Warn ; echo "Stack online" Else echo "Wait for Stack Failed" EndIf ; stop and restart execute "sys:system/network/AROSTCP/s/stopnet" Run <NIL: >NIL: AROSTCP WaitForPort AROSTCP If NOT Warn ; echo "Stack online" Else echo "Wait for Stack Failed" EndIf run <NIL: >NIL: wirelessmanager realtek8180.device </pre> What IRQ number is assigned to the device? You can check with Tools/PCITool? It's possible the BIOS hasn't set the right IRQ number. If you have a Linux CD/DVD handy, could you check if it boots with the options "acpi=off noapic nolapic"? If the following does nothing, this will help us figure out why networking doesn't start automatically at boot open a shell and run the following commands: <pre> echo ${AROSTCP/AutoRun} echo ${AROSTCP/WirelessAutoRun} echo ${AROSTCP/WirelessDevice} </pre> Please report the output, typically it will look like this # True (explanation this variable is related to the "Start networking during system boot" checkbox in network prefs) # True () # Devs:networks/atheros5000.device unit 0 If there's a problem with the AROSTCP package. What's the output of this? ENV:sys/packages/AROSTCP should return a string = Sys:System/Network/AROSTCP By the way, a quicker way to check networking is working would be to run some shell commands such as: <pre> ping www.google.com ifconfig net0 </pre> The best way to list the available networks and diagnose / troubleshoot problems with connecting to a wireless network is to run WirelessManager manually. First uncheck the "Start networking during system boot" box in the Network prefs app, then save and reboot. Then run this in a shell: C:wirelessmanager atheros5000.device verbose or C:wirelessmanager realtek8180.device verbose and capture the output If the above does not help, could you edit the file SYS:System/Network/AROSTCP/S/Package-Startup, and change ">NIL:" to ">T:wifi.log" on the WirelessManager line and add this as well Wait 5? <pre> if ${AROSTCP/WirelessAutoRun} eq "True" Run QUIET "C:WirelessManager ${AROSTCP/WirelessDevice} >T:wifi.log" wait 5 EndIf </pre> Then save, reboot and post the log file (T:wifi.log) here. <pre> c:wirelessmanager atheros5000.device verbose Initializing interface 'atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Reading configuration file 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=7) 65 63 68 65 6c 6f 6e echelon PSK (ASCII passphrase) - hexdump_ascii(len=14): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='echelon' Then it just sits there. Not sure what a normal dump looks like, I don't see anything that looks wrong in the configuration. </pre> looks like the driver isn't working with that card. Has anyone else successfully used that exact model number (AR2413)? <pre> Initializing interface 'atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=7): 65 63 68 65 6c 6f 6e echelon PSK (ASCII passphrase) - hexdump_ascii(len=14): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='echelon' *** [wpa_sm_init] sm->pmksa=02c66fd4 *** Own MAC address: 00:01:36:15:ae:0c RSN: flushing PMKID list in the driver Setting scan request: 0 sec 100000 usec EAPOL: SUPP_PAE entering state DISCONNECTED EAPOL: Supplicant port status: Unauthorized EAPOL: KEY_RX entering state NO_KEY_RECEIVE EAPOL: SUPP_BE entering state INITIALIZE EAP: EAP entering state DISABLED EAPOL: Supplicant port status: Unauthorized EAPOL: Supplicant port status: Unauthorized Added interface atheros5000.device:0 State: DISCONNECTED -> SCANNING Started AP scan for wildcard SSID MLME: starting scan MLME: scan channel 1 (2412 MHz) sana2: sending MLME frame Then it stops. Does this mean the router is not authorizing this NIC? IRQ 4 (A) </pre> apparently locking up when the first frame is sent (a scan request). <pre> Devs/Networks/atheros5000.device:0 Initializing interface 'Devs/Networks/atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Reading configuration file 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=12): 41 69 72 4c 69 6e 6b 35 39 33 30 30 AirLink59300 PSK (ASCII passphrase) - hexdump_ascii(len=8): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='AirLink59300' *** [wpa_sm_init] sm->pmksa=0224e444 *** Own MAC address: 00:1f:e1:42:e3:7a RSN: flushing PMKID list in the driver Setting scan request: 0 sec 100000 usec [eloop_reg_timeout] Timeout is at 1317686594.160000 EAPOL: SUPP_PAE entering state DISCONNECTED EAPOL: Supplicant port status: Unauthorized EAPOL: KEY_RX entering state NO_KEY_RECEIVE EAPOL: SUPP_BE entering state INITIALIZE EAP: EAP entering state DISABLED EAPOL: Supplicant port status: Unauthorized EAPOL: Supplicant port status: Unauthorized [eloop_reg_timeout] Timeout is at 1317686595.060000 [eloop_reg_timeout] Timeout is at 1317686604.060000 Added interface Devs/Networks/atheros5000.device:0 [eloop_run] Starting State: DISCONNECTED -> SCANNING Starting AP scan for wildcard SSID MLME: starting scan [eloop_reg_timeout] Timeout is at 1317686594.160001 MLME: scan channel 1 (2412 MHz) [eloop_reg_timeout] Timeout is at 1317686594.193000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.233000 MLME: scan channel 2 (2417 MHz) [eloop_reg_timeout] Timeout is at 1317686594.253000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.293000 MLME: scan channel 3 (2422 MHz) [eloop_reg_timeout] Timeout is at 1317686594.333000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.373000 MLME: scan channel 4 (2427 MHz) [eloop_reg_timeout] Timeout is at 1317686594.393000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.433000 MLME: scan channel 5 (2432 MHz) [eloop_reg_timeout] Timeout is at 1317686594.473000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.513000 MLME: scan channel 6 (2437 MHz) [eloop_reg_timeout] Timeout is at 1317686594.553000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.573000 MLME: scan channel 7 (2442 MHz) [eloop_reg_timeout] Timeout is at 1317686594.613000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.653000 MLME: scan channel 8 (2447 MHz) [eloop_reg_timeout] Timeout is at 1317686594.693000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.713000 MLME: scan channel 9 (2452 MHz) [eloop_reg_timeout] Timeout is at 1317686594.753000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.793000 MLME: scan channel 10 (2457 MHz) [eloop_reg_timeout] Timeout is at 1317686594.833000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.853000 MLME: scan channel 11 (2462 MHz) [eloop_reg_timeout] Timeout is at 1317686594.893000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.933000 MLME: scan channel 12 (2467 MHz) [eloop_reg_timeout] Timeout is at 1317686594.973000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.013000 MLME: scan channel 13 (2472 MHz) [eloop_reg_timeout] Timeout is at 1317686595.033000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.073000 EAPOL: disable timer tick EAPOL: Supplicant port status: Unauthorized MLME: scan channel 14 (2484 MHz) [eloop_reg_timeout] Timeout is at 1317686595.113000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.153000 MLME: scan channel 1 (2412 MHz) [eloop_reg_timeout] Timeout is at 1317686595.193000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.213000 MLME: scan channel 2 (2417 MHz) [eloop_reg_timeout] Timeout is at 1317686595.253000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.293000 MLME: scan channel 3 (2422 MHz) [eloop_reg_timeout] Timeout is at 1317686595.333000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.353000 MLME: scan channel 4 (2427 MHz) [eloop_reg_timeout] Timeout is at 1317686595.393000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.433000 MLME: scan channel 5 (2432 MHz) [eloop_reg_timeout] Timeout is at 1317686595.473000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.493000 MLME: scan channel 6 (2437 MHz) [eloop_reg_timeout] Timeout is at 1317686595.533000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.573000 MLME: scan channel 7 (2442 MHz) [eloop_reg_timeout] Timeout is at 1317686595.613000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.653000 MLME: scan channel 8 (2447 MHz) [eloop_reg_timeout] Timeout is at 1317686595.673000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.713000 MLME: scan channel 9 (2452 MHz) [eloop_reg_timeout] Timeout is at 1317686595.753000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.793000 MLME: scan channel 10 (2457 MHz) [eloop_reg_timeout] Timeout is at 1317686595.833000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.853000 MLME: scan channel 11 (2462 MHz) [eloop_reg_timeout] Timeout is at 1317686595.893000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.933000 MLME: scan channel 12 (2467 MHz) [eloop_reg_timeout] Timeout is at 1317686595.973000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.993000 MLME: scan channel 13 (2472 MHz) [eloop_reg_timeout] Timeout is at 1317686596.033000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686596.073000 MLME: scan completed </pre> Is your network hidden? If so, did you enable the 'Hidden' checkbox in the network prefs? What distro version are you using? <pre> "ENV:sys/wireless.prefs" looks like this: network={ ssid="testadhoc" key_mgmt=NONE wep_key0="12345" wep_tx_keyidx=0 } </pre> If your router doesn't broadcast its SSID (hidden), you need to add this option to the network block of the wpa_supplicant.conf on your aros machine and make changes after # Example blocks: scan_ssid=1 Here's a full description of all the [http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/wpa_supplicant.conf config file options]. <pre> ap_scan=1 network={ ssid="YOURESSID" scan_ssid=1 proto=RSN key_mgmt=WPA-PSK pairwise=CCMP group=CCMP psk=YOURPASSWORD } </pre> <pre> filter_ssids=1 ap_scan=2 network={ ssid="REMOVED" scan_ssid=1 bssid=REMOVED priority=100 mode=0 proto=RSN key_mgmt=WPA-PSK auth_alg=OPEN pairwise=CCMP group=CCMP psk=REMOVED } </pre> Error 6: Couldn't resolve host name. Check Scout -> Devices and look at the device that you are using, in the OCnt column it should state 2 which means AROSTCP and Wirelessmanager are both accessing this driver. If 0 or 1, then uncheck the checkbox in Network prefs for starting networking at boot, save and reboot. Then run this is the shell: C:WirelessManager realtek8180.device unit 0 some quirks setting up the wireless network as well 1) it's far better setting up either the wired OR the wireless network adapter as net0:, or weird things happen 2) it's better using fixed IP on the local network instead of DHCP 3) network setting must be placed in network setting panel in /prefs, using the wirelessmanager helped me finding available SSIDs, but not actually connecting to them once done, reboot. If previous setup is proving problematic <pre > SYS:Prefs/Env-Archive/Wireless.prefs SYS:Prefs/Env-Archive/Zune/OWB.config SYS:Prefs/Env-Archive/Zune/global.config SYS:Prefs/Env-Archive/AROSTCP/WirelessDevice SYS:Prefs/Env-Archive/AROSTCP/db/Interfaces </pre > Make a copy of these files and restore in case of problems. Please try this test to check if you can connect to your router, ie established that the WiFi layer is working ̊̊̊̊Boot with networking disabled, by make sure that "Start networking at boot" in Network Prefs is unchecked (no tick). ̊ Run this in a shell: C:WirelessManager atheros5000.device VERBOSE ̊If the output of that command is too long to summarise here, you can redirect it to a file by adding >RAM:wifi.log to the end, then attach or paste that file here. try running "status" in the shell and check that AROSTCP is listed/running If AROStcp is not showing, then AROSTCP is not running. attempted to start it by clicking Use or Save in network prefs, or checking the "start networking at boot" box or typing into a shell. Execute SYS:System/Network/AROSTCP/s/startnet (run Status again afterwards). The "cannot resolve hostname" will appear if you are blocked on the wifi network by the router as well as aros not being able to assign correct network address. One way of testing this might be to disable the firewall in the router. you might also check the router how it sees the attempts aros do to speak to it. The easiest way to do that would be to manually give aros an IP number in the routers accepted range. and see if it shows up at all within the router. Tests that can be undertaken to determine correct settings and functions pciinfo sanautil -d broadcom4400.device status <pre > ping <router-address> e.g. 192.168.0.1 (aka inet) or 80.237.146.33 (www.amiganews.de) ifconfig net0 ifconfig net0 up extras:networking/utils/sanautil/sanautil -d atheros5000.device status WirelessManager atheros5000.device verbose >RAM:wifi.log ;to send the log to RAM disk to be read easier or if detected, Run WirelessManager atheros5000.device >NIL: Run WirelessManager atheros5000.device ssid="mynet1" >NIL: C:WirelessManager realtek8180.device unit 0 </pre > Please look at the task list in Scout, and check if WirelessManager and AROSTCP are running. Also look at the device list in Scout to check if realtek8180.device is open. start tools/debug/sashimi, maybe it shows some debug messages when disconnection happens. Firstly, let's take a look at what your setup most likely looks like, assuming you use a router. See diagram below: <pre> Internet <---------> home router <---------> computer -----------external IP------------------internal IP------------- </pre> Okay, so what am I trying to show you with that diagram. A few things. Firstly, the IP address that connects you to the Internet is not the same one that connects you to your router. What happens is that your computer doesn't have a direct connection to the Internet, instead your router connects to the Internet, and your computer connects to the router. You can see the external and internal IP addresses in these example settings... * Default Gateway : 76.91.64.1 (external IP for ISP/Internet host) * IP Address : 76.91.71.184 (external IP for home router) * IP Address : 192.168.0.1 (internal IP for home router) * Address = 192.168.0.161 (internal IP for computer) As you can see, there are two internal IP addresses and two external IP addresses. This is because there is a client/server relationship, effectively one address is for the service (server) and one address is for the device trying to access that service (client). The server addresses in your case are 76.91.64.1 (your ISP's address, serving the Internet), and 192.168.0.1 (your home router's address, serving your home network). The term gateway applies here, they are your gateway to those services. Subnet masks are used along with IP addresses to determine which IP addresses are allowed access to a network. I did learn the more in-depth rules about subnet masks once (watched a CCNA vid), but I've forgotten about it. The basic level of understanding you'll need is easy to remember though. A subnet mask value of 255 means that portion of the IP address must stay constant, whereas a subnet value of 0 means any unassigned value up to 255 is allowed in the IP address. By far the most common subnet value is 255.255.255.0. What this means is that the first three parts of the IP address you use to connect to a service must stay the same as the server/gateway address, and only the last section can change. So if your router's internal IP address is 192.168.0.1, and the subnet mask is 255.255.255.0, the only addresses that will be allowed to be used on that network are between 192.168.0.2 and 192.168.0.255 (I think 192.168.0.0 is reserved for other uses). Final point to make is about DHCP (a.k.a. dynamic IP) vs static IP. A server/router using DHCP gives a device that connects to it an address within the acceptable range. It usually starts with the lowest numbered free address, so with your router it'll give the first device that connects to it 192.168.0.2, the next device 192.168.0.3, and so on. Static IP addresses are where you set the IP address you want to connect with in advance. When using static IP addresses on a router where DHCP is active, it's good to use a high number to avoid conflicts with other devices that are connected to your network, to reduce the risk that both devices will try using the same IP. That's why your current choice of 192.168.0.161 is good, unless you have over 159 devices connected on your current network! Okay, so what's the next step. Well, if you can use ping, I'd suggest pinging 192.168.0.1. If you get a positive response it means you're connected to your router, if you don't get a response it means the connection between your router and your computer is at fault. Documentation on configuring the AROSTCP environment further can be found [http://en.wikibooks.org/wiki/Aros/User/Networking here] ===File Sharing=== As AROS knows only a few filesystems (FFS, OFS, SFS, PFS (amiga only), FAT12, 16, 32, Microsoft NTFS (windows), UDF (Blu-ray)). The others in regular use like MacOSX hfs+, Linux ext2/ext3 and ext4, Haiku BeFS provide a problem in transferring files. Linux can access SFS partitions but it needs to be compiled. The latest full source are [http://home.elka.pw.edu.pl/~mszyprow/programy/asfs/ here]. It compiled fine with a 2.6.30 kernel in Puppy Linux 4.31. An alternative, is to use a FAT32 partition to share. Setup first with a 2G FAT32 partition for sharing, and the rest of the space as SFS for an Aros install. It works very well. Files could be transferred via TCP internet network. ====SMB2/3==== With Windows you can share one folder or all folders of the "Public" user. On Windows what is important is to enable sharing (Network and Sharing Center). AROS Mountlist should look lke this <pre> Handler = L:smb2-handler StackSize = 65536 Priority = 5 GlobVec = -1 ACTIVATE=1 Startup = "smb://UserAcc:password@PCShare/Sharefolder" </pre> which could also be "smb://UserPC:password@192.168.x.x/Public" or "smb://UserPC:password@Name-PC/Public" so "smb://UserPC:password@192.168.1.158/Folder" or "smb://UserPC:password@Name-PC/Folder" After you have configured a share generates a DOSDrivers it is named "SMB0" which includes the setting, and at each reboot it is Mounted. You can still delete the DOSDriver by hand, is located in Storage/DOSDrivers, the file "ServerAutoMounts", in ENV:AROSTCP which indicates the DOSDriver to be mounted, should also be deleted. The per-mount files are written to ENV:SMB or SYS:Storage/DOSDrivers. There is also additional file ENV:AROSTCP/ServerAutoMounts which states what will be presented to the end user. ====Old SMBFS==== e.g. to connect to a NAS share such as \\NASBOX\Shared use -: SMBFS WORKGROUP=<YOUR WORKGROUP NAME> VOLUME=<AROS volume name to use>: SERVICE=<UNC Path to connect to> SMBFS WORKGROUP=MYNET VOLUME=Shared: SERVICE=//NASBOX/Shared And you will then have an icon appear on your desktop for the volume name you have chosen. You can put the above script into wbstartup or give it an icon, change it to a 'project' and give it the default tool c:iconx Open a shell and type copy sys:script.info "sys:wbstartup/YOURSCRIPTNAME.info" This should create an icon for your script file. Now right-click on your script and select 'information'. Change 'tool' to 'project', put 'c:iconx' into the 'default tool' box, click save The reason being that scripts need to be opened with 'execute SCRIPTNAME' (or 'iconx') whereas the programs started from wbstartup are opened using 'run PROGRAMNAME'. It's the same as trying to start a command-line tool from the workbench by double-clicking it. ====Setup ISO images within AROS==== Use [http://archives.aros-exec.org/index.php?function=browse&cat=driver/storage DiskImage] which supports many cd image formats ISO, CCD, MDF/MDS, CUE/BIN, NRG and UIF. To mount CD or DVD images use below.... <pre > # Rename your iso 'Unit0' (note no extension). # Do 'View/All files' on you Aros partition. You should now see a folder called 'Diskimages'. Copy your renamed iso to there. (Alternatively, you could type at the shell 'assign FDSK: xxx', where xxx is the location of your iso.) # From the shell, type 'mount CD0:' and the iso should appear on the Wanderer desktop. You can now access it like a real disk. </pre > assign devname: dismount Assign DOSVOLUME: remove [http://aminet.net/package/disk/misc/unmount-0.1 unmount] most filesystems work but SFS lacks support for ACTION_DIE packet If you are using an IcAros install, the startup scripts are set up to wipe the Diskimages directory on boot, so its worth keeping a second copy of the iso somewhere else. Alternatively, you could set up extra mountlists for additional iso images. I've made a file called iso1 in the Aros:devs directory that contains the following text: <pre> /* Entry for ISO image */ ISO1: FileSystem = cdrom.handler Device = fdsk.device Unit = 1 LowCyl = 0 HighCyl = 0 Surfaces = 1 BlocksPerTrack = 1 DOSType = 0x41434400 Activate = 1 # </pre> Then I just need an iso called 'Unit1' (corresponding to the 'Unit = 1' entry in the mountlist) in Diskimages (or wherever I assign FDSK: to) and to mount I type in at the shell: Mount iso1: from devs:iso1 Of course, if you create mountlists for ISO2, ISO3:, etc. (with the corresponding change to the 'Unit = ' line) you can have as many isos mounted as you wish. I just call mine ISO1: etc. to distinguish them from the real CD drives ==Video Guides== Video demonstrations and tutorials covering: :00. '''Introduction''' ::[https://www.youtube.com/@jamesmattson6813/videos Various Aros Installs], ::[https://www.youtube.com/embed/j8EmSEby0Rg AROS repo in gource, view of AROS dev commits from 1997 to 2025], [http://www.youtube.com/watch?v=Vx_zqlBow40&feature=related Gource view of AROS 1997 up to 2009], ::[http://www.youtube.com/watch?v=s1RsvEm7UrU Why an Amiga OS in 2011], ::[https://www.youtube.com/watch?v=1W886mheV74&pp=ygUPYW1pZ2EgYXJvcyAyMDI2 Johan Grip on early days of AROS x86], [https://www.youtube.com/watch?v=mXaKDhtTTqQ&t=14s&pp=ygUPYW1pZ2EgYXJvcyAyMDI2 Michel Schulz on Aros and PiStorm], :01. '''Installation''' ::[https://www.youtube.com/watch?v=M7YjufrJqDs Aros One install], [https://www.youtube.com/watch?v=iIMguHTdC5E Aros One USB install], [https://www.youtube.com/watch?v=ZNXauy5m5Wc Aros One install], [http://vimeo.com/11013489 Modify Grub boot], ::[http://www.youtube.com/watch?v=wyQVeyXIywc&feature=channel iMica Silent Pt3], [http://www.youtube.com/watch?v=o2AnkoflY14 Wipe whole drive and Install - warning loss of data on drive], ::[http://www.youtube.com/watch?v=OVXm6_-witQ VirtualBox install], [ VMware install], ::[http://www.youtube.com/watch?v=0k2PEmT8I14 Broadway AROS Install], ::[https://www.youtube.com/watch?v=PtDiXhjSIfs Is Aros Icaros a choice?], ::[ driver install], ::[http://www.vimeo.com/10491104 HDAudio install but needs account], [], :02. '''Amiga Basics''' ::[http://www.youtube.com/watch?v=TY8mWxwzH5o Screens tutorial], ::[https://m.youtube.com/user/AMIGASYSTEM/videos General], [ Dos Scripts tutorial], [http://www.youtube.com/watch?v=hPT7SmVEpjc OS 1.2], [http://www.youtube.com/watch?v=n6kX3FqH8Ww&feature=related OS 1.3], :03. '''Customisation demos''' ::[https://www.youtube.com/@AMIGASYSTEM/videos Prefs tutorial], [ Decoration tutorial], [http://www.youtube.com/watch?v=Dn5C8G3aDXU Scalos], :04. '''Setting up''' internet access and surfing the web, FTP, IRC and Mail apps ::[ Network Prefs], [ AirCOS tutorial], [ jabberwocky tutorial], :05. '''Native bundled Games and Applications''' ::[http://www.youtube.com/watch?v=aYlFv2B-VXc 3D Games], [http://www.youtube.com/watch?v=MXK7wwhd-R0 Latest Games], [http://www.youtube.com/watch?v=RUgiVThv23Q&feature=mfu_in_order&list=UL PrBoom GL], [http://www.youtube.com/watch?v=0s7u8TPy7V4 Assault Cubes], [http://www.youtube.com/watch?v=fih6aCXKeqs Cube 2], [http://www.youtube.com/watch?v=-X0ay0MGOms DosBox on Aros], [http://www.youtube.com/watch?v=7nKduDjf14k Oct 2010], ::[http://www.youtube.com/watch?v=FziV2z_uxnQ Apps Pt 1], [http://www.youtube.com/watch?v=xs37_nfa5CI Apps Pt 2], [http://www.youtube.com/watch?v=Bn59_VvbQR0&feature=related Apps Pt 3], ::DOpus4 [http://www.youtube.com/watch?v=aSRybWjrrME DOpus 4], ::Milkytracker [http://www.youtube.com/watch?v=VxBOEPzpdKg&feature=related Laying Down Base Tracks], ::[http://www.youtube.com/watch?v=k2uKQ0-ieOE Audio Evolution 4 in action], [http://www.youtube.com/watch?v=Zq4r9k0_jZI Quick Videos], ::[http://www.youtube.com/watch?v=gGKCFZcIc0I&feature=related ScreenRecorder], [http://www.youtube.com/watch?v=974c2e-Fqak&feature=related TV out Tests], ::[http://www.youtube.com/watch?v=fjq8ct5d5IY AmiFIG], [http://www.youtube.com/watch?v=h0rHvPhYJo4&feature=youtu.be ZuneFIG], ::[http://wiki.povray.org/content/Documentation:Tutorial_Section_1 POVray Tutorial 1], ::[http://www.youtube.com/watch?v=Jk-ZNLfJsvQ pt 1, jan. 2008], [http://www.youtube.com/watch?v=nWRy33g1R7Y pt 2, feb. 2009], [http://www.youtube.com/watch?v=r5PbhCtm4vE pt 3, feb. 2010], ::[https://www.youtube.com/watch?v=G7_FJUoQ89o Hollywood programming], [], [], [], ::[], [], [], ::[], [], [], ::[], [], [], :06. '''Commercial software available''' ::[http://www.youtube.com/watch?v=fKXY9B4R43s AntiryadGX 3D Game Editor], ::[http://www.youtube.com/watch?v=TMS9NDzwm5U BOH indie Game], :07. '''Running classic amiga apps and games''' :: Amiberry [], [], ::[http://vmwaros.blogspot.com/2008/11/introducing-amibridge.html Intro Amibridge], [http://www.youtube.com/watch?v=ee2PWvCZeLo Old Amiga Apps], [http://www.youtube.com/watch?v=ee2PWvCZeLo Why Janus UAE is good], ::[https://www.youtube.com/watch?v=VhlsNSYSuDg DPaint tutorial] ::[http://vmwaros.blogspot.com/2009/11/can-icaros-play-my-amiga-games-and-why.html Play Amiga Games], [https://www.youtube.com/watch?v=XTaZCNOvCnE], ::[http://www.youtube.com/watch?v=tMehS77LXQ4 Pagestream Introduction], [http://www.youtube.com/watch?v=284-w3hTzII Pagestream Tutorial 1], [http://www.youtube.com/watch?v=mlwEGwhZzl4 Pagestream Tutorial 2], ::[http://www.youtube.com/watch?v=iIcrIjPOctc Catweasel Mk4 PCI Part 1] and [http://www.youtube.com/watch?v=BaitHeL6bEA Part 2], :08. '''Misc and History''' ::[http://www.youtube.com/watch?v=d6mDXKU29w0 Mum uses old AmigaOS Workbench 1.1 (1986)], [http://www.youtube.com/watch?v=DaRkacQ-YMg Why an Amiga 500 (1987)], [http://www.youtube.com/watch?v=k5CYsgVCzYY an Amiga 2000 (1987)], :09. '''Misc Shows and Events''' ::[http://www.youtube.com/watch?v=klgVSWKs4kE VCF 2010], [https://www.youtube.com/watch?v=eQ3d5qR-Hv8 24:06 Jason McMullan at amiwest 2012 about AROS], [https://www.youtube.com/watch?v=jpQO7XSfAv4 Aros SMP multi core amiwest 2013], [], [https://www.youtube.com/watch?v=gFRtAAmiFbE], [https://www.youtube.com/watch?v=DjdUEyjx8GM], [https://www.youtube.com/watch?v=ydYDqZQpim8], [], [https://www.youtube.com/@uminekoshouten/featured], [https://www.youtube.com/shorts/NfoY023w-vE], :10. ::[https://www.youtube.com/shorts/6qJTNW4-6GY] ===History=== The project was originally started by a small group of Amiga [http://www.amigahistory.co.uk/aros.html enthusiasts] in 1995. These individuals were mainly computer-based college university students at the start, though that student trend has diminished since. An interview with Aaron Digulla [http://arosshow.blogspot.com/2006/12/interview-with-aaron-digulla-who.html here] * 1992 Commodore folds * 1996-1998 much of the early years was concerned with exec, dos and intuition libraries. * Early 1999, Haage & Partner used parts of the AROS code in AmigaOS 3.9. * March 2001, floppy disk images of AROS became available. * Early 2002, AROS changed its name from Amiga Replacement Operating System to Amiga Research Operating System * June 2002, AROS devs decided to use Zune (MUI 3.8 rewrite) as the GUI system. * November 2002, Eric Schwartz drew Kitty for AROS usage. * Early 2003, AROS.org underwent a graphics facelift. * Late 2003, GCC C compiler arrived. * Early 2004, Aros-Exec opened. * Early 2005, Aros Max bootable CD arrived. * Late 2005, SFS filesystem ported and allowed fast access to apps and network support arrived * Early 2007, AROS.org underwent another graphics facelift. * Mid-2007, AROS changed to AROS Research Operating System after A.Inc. sued Hyperion with a trademark violation. * Late 2007, the hard disk installer added and VmwAROS (later called Icaros Desktop) distro launched. * Early 2009, Our first usable web browser (OWB) * September 2010, first wireless support appears and AspireOS started as a distro * Early 2012, the first paper-cut bugfix and Fab's Odyssey Web Browser ported * Early 2014, backport of most features of ABIv1 into mainstream everyday use (Icaros 2.0 and above) * 2015 work started on using the extra cores of the PI 2 * Early 2017, work started on utilising the addition cores on modern CPUs starting with the 64bit x86 version * Mid-2017, m68k port optimized for the Vampire 2 / Apollo accelerators (68080 AMMX FPGA) * 2018 The old AROS Exec website closed and a new one opened * 2019 AROS One distribution started and now with USB install version * Early 2021, backport of more features of ABIv1 into mainstream everyday ABIv0 (Aros One 1.5 and above) * 2025 year of 64bit pc builds and porting 32bit applications to 64bit ABIv11 * 2026 update to 2015 and earlier [https://www.youtube.com/watch?v=6FKTL068ULM&pp=ygUPYXJvcyBhbWlnYSAyMDI2 nvidia nouveau driver] ===Bounties=== To help inspire developers with both ideas and monetary incentives, rewards are offered for the successful completion of "bounties" (requests for missing/new functionality) chosen by the community and handled by [http://power2people.org power2people] (formerly done by TeamAROS). A monthly option is [http://www.power2people.org/funds/aros/ here]. Future goals for AROS include expanding its underlying retargetability to support even more diverse architectures, provide memory protection features and user level file security, SMP and many other wonderful features missing from AmigaOS &mdash; while still providing as much source level compatibility as is possible (however it is accepted that to achieve some goals code certain things may require a little recoding). [http://www.ohloh.net/p/aros/contributors Developers] come and go as with any open source effort and we would like to thank them for their efforts... ;1996-2000:In DigullaA (coordinator), GripJ, TempletonI (BSD), SchulzM, RittauS, voordenDagL, HolmM, JohanssonT, VanIngelgomH, SteigerwaldM, BortasP, deJongK, AlfredssonJ, InnocentiB, ;2001-2005:In [http://chodorowski.com/adam/aros.html ChodorowskiA], StegerG, BergerS, HeutlingS, AlemagnaF (gcc), VerhaegenS (rexx), KielH, MatheussenKS (CAMD), SzczygielskiP, ErikssonP, LeCorfecD (Zune), BauerS (Zune), FurlongW, GustafssonJ, AndrewsN, CafferkeyN, GierichM (jpeg), PattonJ, ParsonsM, DietrichJ, SeilerT, BischoffL, LorentzenNH, AdamO, BerglundH, SmithP, HolmenD, BlomM, ;2006-2010:In FedinP, RusslerM, SzymczykS (owb), SmiechowiczK (openGL), WeissM, NorrisR, BrunnerO, WiszkowskiT, GreppinA, [http://www.fukt.bsnet.se/~bearsoft/ Bearsoft Björn Screwelius], ErbY, CharletF, HodgesC, [http://aros-exec.org/modules/newbb/viewtopic.php?topic_id=4819&forum=18&post_id=43103#forumpost43103 HokstadV], McMullanJ (m68k), WilenT (m68k), ;2011- :In MuijzenbergPHvanden, ALB42, JonesEM, weiju, DizzyofCRN, wawa, miker, * 1996 - The linux hosted version for i386 was the first to arrive * 1998 - i386, The native version for i386-based PC AT computers and compatibles. * 2004 - x86/64, The native version for 64-bit (x86_64, amd64) PC computers. * 2008 - sam440/ppc, The native version for Sam440EP, Sam440EP Flex and Sam460ex computers. * 2009 - efika, The native version for PowerPC Efika computers. * 2010 - m68k, The native version for m68k Amigas or WinUAE * 2013 - raspi/armfh, early native version for ARMv6 based Raspberry Pi computers. * 2017 - x86/64bit smp Debugging capture serial debug at all (especially with sysdebug=all or --sysdebug=all) to see it displayed on screen * yes, usb -> rs232 adapters can work most of the time, some of the cheapest ones are not fully compatible with all rs232 devices to capture to another device * you will need a null modem cable (or a null modem adapter usually female to female) in addition to the usb -> rs232 adapter (usb adapter is a normal modem ie. the pins are not crossed over) Normal modem cable - straight connection DCE <pre> Pin 2 -> Pin 2 RXD Pin 3 -> Pin 3 TXD Pin 5 -> Pin 5 GND </pre> Null modem cable connections DTE <pre> Pin 2 -> Pin 3 Pin 3 -> Pin 2 Pin 5 -> Pin 5 </pre> (9pole SUB-D) <pre> serial ser: (amiga/aros) tty2 tty1USB0 (linux) COM1 (windows) (depends on the os being used) speed baud transfer rate 9600 38400 lower baud might be more successful data bits 8 stop bits 1 parity none handshaking flow control - none xon/xoff (most likely) rts/cts dsr/dtr (pins not connected so should not work) </pre> *You cannot use compiled aros X86-64 bit software (when ready) on aros X86 32bit. PPC compiled software on X86 and so on. *68k is tested with the UAE emulator (WinUAE) but some tests are done on native 68000 based Amigas and others. *PPC support is very limited to certain devices. If you use the WBStartup, you have to delete the other icons in the folder (readme etc..) and you have to add in the Icon Tooltype the parameter DONOTWAIT If you use user-startup instead, you need to add the attached command "after assignment to LUA" C:WBRun DH1:Extras/Utility/WeatherBar/WeatherBar >NIL: Change the command to match your WeatherBar path. <pre> PATH sys:Utilities/WeatherBar ADD run >nil: lua:amilua weatherforecast.lua </pre> To enter data your Country or City, ist with city_id numbers can be found [http://bulk.openweathermap.org/sample/city.list.json.gz here] or you need to go to [https://www.bbc.com/weather BBC Weather], once you type the name of your city or town in the appropriate tab, and press enter, the 7 numbers to be added in the "WeatherBar" will appear on the Browser url address bar above Unicode v16.0 emojis are not supported but [https://github.com/jens-maus/libcodesets codesets.library] provides <pre> internally supported (hardcoded) charsets/codesets are: (conversions are possible from and to each codeset): AmigaPL – Polish (Amiga) Amiga-1251 – Cyrillic (Amiga) ISO-8859-1 – Western European ISO-8859-1+Euro – West European (with EURO) ISO-8859-2 – Central/East European ISO-8859-3 – South European ISO-8859-4 – North European ISO-8859-5 – Slavic languages ISO-8859-9 – Turkish ISO-8859-15 – West European II ISO-8859-16 – South-Eastern European KOI8-R – Russian UTF-8 – Unicode In addition, external charset table files can be stored in LIBS:Charsets or loaded by an application from PROGDIR:Charsets. The charset files included with this distributions are: IBM866 – Cyrillic (cp866) ISO-8859-7 – Greek (LatinGreek) ISO-8859-10 – Nordic (Latin 6) windows-1250 – Central/East Europe (Windows) windows-1251 – Cyrillic (Windows) windows-1252 – West European (Windows) </pre> Icaros 2.3 USB image needs a header stripped so it can work correctly dd bs=512 skip=1 status=progress if=icaros_light_2-3-0_pendrive.bin of=/dev/sdxy && sync Scalos <pre> ------------------------------- { "STRING", "ID/K,TEXT/K,SRC/K,TEXTPEN/K,HALIGN/K,STYLE/K,FONT/K,VALIGN/K", HALIGN LEFT | CENTER | RIGHT VALIGN TOP | CENTER | BOTTOM STYLE NORMAL | BOLD | ITALIC | BOLDITALIC FONT // font specification - format: "fontname.font/size" ------------------------------- arguments for STRING SRC "diskstate", "diskusage", "diskusagefree", "diskusageinuse", "diskusagepercent", "fibfilename", "filecomment", "filedate", "fileprotection", "filesize", "filetime", "filetypestring", "iconname", "linktarget", "plugin" pluginname <optional plugin arguments> "versionstring", "volumecreateddate", "volumecreatedtime", "volumeordevicename", ------------------------------- arguments for HIDE "novolumenode", "isempty" (some STRING) ------------------------------- all internal commands: "about", "backdrop", "cleanup", "cleanupbyname", "cleanupbydate", "cleanupbysize", "cleanupbytype", "clearselection", "clone", "close", "copy", "cut", "delete", "emptytrashcan", "executecommand", "formatdisk", "iconify", "iconinfo", "lastmsg", "leaveout", "makedir", "open", "parent", "paste", "putaway", "quit", "redraw", "redrawall", "rename", "reset", "selectall", "showallfiles", "showonlyicons", "shutdown", "sizetofit", "snapshot", "snapshotall", "snapshotwindow", "unsnapshot", "update", "updateall", "viewbydate", "viewbyicon", "viewbysize", "viewbytype", "viewbytext", </pre> {{status|50%}} {{BookCat}} eq9gcwznp02ggyzbkgrasw0qt0f8505 4656737 4656734 2026-08-08T08:21:01Z Jeff1138 301139 4656737 wikitext text/x-wiki {{ArosNav}} ==What is AROS== Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=nl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Dutch], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=da&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Danish], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Chinese], [http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Russian], [http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Polish], [http://translate.google.com/translate?hl=en&sl=auto&tl=ja&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Japanese], [http://translate.google.com/translate?hl=en&sl=auto&tl=ko&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Korean], [http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Portuguese], *Computer Hardware *AROS (operating system) *Applications and Games *User [http://www.osnews.com/story/15819 AROS] is one of the intermediate levels between the computer hardware and the user. It is an open-source, clean-room implementation of AmigaOS 3.x that can be run on many different computer architectures. It runs primarily on PC x86 64bit and also PC 32bit hardware but also on motorola 68k and compatibles, some ARM and PowerPC. This page will cover enough to be able to write the downloaded image to your preferred media, to run a LiveUSB, LiveCD or LiveDVD on your office/home PC (Live meaning you can test without changing your existing setup) and, ultimately, to use it. Intel / AMD PC hardware support mostly covers the years 2000 to 2010 but work is under way to cover recent PC hardware. At the moment, AROS is '''not''' recommended to be '''installed''' on a working vital data holding machine. Instead, writing to and booting from a '''USB stick''' could be a much better option. AROS is an hobby OS and can co-exist with Windows(TM), MacOSX(TM), Android(TM) or Linux(TM) and act as an alternative. Unfortunately, Aros has few developers so upgrades and improvements can take [https://sourceforge.net/p/aros/mailman/aros-cvs/ time to appear]. AROS core is now [http://en.wikibooks.org/wiki/Aros/Developer/IncompleteAPIs ~80%] finished and is usable, so keep in mind that the software is still considered ALPHA/BETA and in development. Currently AROS is fun to play with on a curiosity level, but it is also interesting to program. AROS has some multimedia features and has internet access. Most importantly, use AROS to its maximum potential as it stands now, find ways to have fun with it and share your experiences. Good Sites to visit : [https://www.arosworld.org/home.php Aros World User forum] : [https://ae.arosworld.org/ Aros Exec site relocated] : [https://arosnews.github.io/ AROS News] : [https://www.facebook.com/ArosWorkshop/ Aros Workshop], : [https://www.osnews.com/topic/amiga-aros/ OSNews] : [https://www.reddit.com/r/aros/ Reddit] : [https://archives.arosworld.org Aros Archives] : [https://aminet.net/ Aminet] : [http://www.amiga-news.de/en/ English translation of German site] : [https://aros.sourceforge.io AROS] : [https://github.com/aros-development-team/AROS Codebase] : [https://github.com/aros-development-team/AROS/issues Issues] and [https://sourceforge.net/p/aros/bugs/ old defunct bugs site] : [https://github.com/deadwood2 Deadwood's builds], [https://www.axrt.org/download/aros/v11/ v11 builds], [https://axrt.org/downloads-aros Updated i386 32bit PC builds], : [https://github.com/ezrec Ezrec x86 m68k mirror of old svn version] : [https://sites.google.com/view/arosone Aros One x86, x64] : [https://tinyarosdistro.flazio.com/ Tiny Aros x86 and x64] : [https://arosnews.github.io/aros-portable/ AROS portable USB3 stick images of hosted Aros One x86 and x64 on debian] : [http://vmwaros.blogspot.com Icaros Desktop x86 now on sabbatical, very old edition] : [https://sites.google.com/site/arosaspireone AspireOS, of the netbook Aspire One, very old edition] : [http://arosalive.blogspot.co.uk/p/10-basic-aros-how-tos-tutorials.html Basic How To guides] : [http://arosgamer.blogspot.co.uk/ AROS Playground], [http://thewetmachine.net/tag/aros/ Jess Wet Machine], [https://aroshacking.wordpress.com/ Jon Robertson's AROS Experiences and FPC Free Pascal], [], :[http://www.apollo-accelerators.com/ Apollo Accelerators m68k], [http://www.amigablogs.net/ Amiga Blogs], [http://blog.a-eon.biz/blog/ Trevor Dickinson blog], : [https://forum.amiga.org/ Amiga OS AOS 3.x forum] : [http://eab.abime.net/ EAB Amiga] : [http://www.amigaworld.net/ AmigaWorld] : [http://www.ppa.pl/ Polish Amiga Like News] : [http://www.apollo-core.com/ Apollo Forum] : [https://amigaalive.blogspot.com/ AmigaAlive] : [https://www.amigalove.com/software Disk Mags] : [https://amigachristmastree.ultimateamiga.com/ Xmas Amiga Game Jam] : [https://www.reddit.com/r/amiga/ Amiga] == Distributions aka Distros == For end users there are distributions (ready made with selected apps aiming to be easy to use), mostly created and maintained by one person in their own workflow/style. They reuse the nightly boot compiles to suit their needs and possibly other end users. You are free to create your own if required. * For native 64bit Intel/AMD: [https://sites.google.com/view/arosone Aros One x64], [https://tinyarosdistro.flazio.com/ Tiny Aros], * For native 32bit Intel/AMD which will run on 64bit machines: [https://sites.google.com/view/arosone Aros One x86], [https://www.tinyaros.it/ Tiny Aros], * For native 68k [https://sites.google.com/view/arosone Aros One m68k], [http://www.aros-platform.de/ AROS Vision], '''Please, keep in mind that the distros listed above use a different ABI (abi v11) , which is NOT binary compatible with the official ABI V1.''' * For hosted Linux usb drive image [https://arosnews.github.io/aros-portable/ x64 Debian hosted version of Aros One], * For hosted ARM there is Aeros and [https://aros.sourceforge.io/nightly1.html RaspberryPi 3 raspi-aarch64-system native 64bit] AROS was originally developed on Linux but can run on an Intel-based Linux distro as an app. As time has gone on, it can be run as an app on many more operating systems (Windows, FreeBSD, Linux and limited on MacOS). This may sound strange: an OS running on top of another OS. Basically, this is to take advantage of drivers (audio, internet, graphics, etc.) and compiler environments, in the existing OS, with which people may be already familiar. The term we use for what AROS does is "Hosted". AROS Native is the term coined to describe AROS being run without any OS underneath it. It runs alone just like AmigaOS(TM) did. As this version does not benefit from "Hosted" drivers, dedicated ones have to be ported/written. Hence the smaller range of supported hardware / peripherals. We have other pages highlighting this support AROS is open source so basically everyone can take part. The source is public on github and there are new commits most days. AROS is automatically compiled daily, result are the nightly builds hosted on Sourceforge. The nightly builds are only used for testing changes, testing software and the starting point for distribution maintainers or even your own distribution. They are very basic, miss some functionality and apps like web browsers and are not suited for end users. * The [https://sourceforge.net/projects/aros/files/nightly2/ Nightly2], [http://aros.sourceforge.net/download.php nightly builds File Release Service] or [http://aros.sourceforge.net/downloads/ Sourceforge Project Web builds] are made automatically every night directly from the Github and in the past, SVN (Subversion) tree and contain the latest code for the AROS operating system. It should be noted that the builds have not been tested in any way and can be horrible broken. *ABIv11 offspring / adaptation of ABIv1 for PC 64bit *ABIv1 standard for most nightly builds, it is where the most work is done by developers *ABIv0 standard for PC 32bit intel / amd distributions ==Media== AROS media tends to boot in this tier list of media types, first internal HDD SSD, CD DVD drive, and finally usb drive (last two can depend on bios boot order) * USB .VHD [https://sites.google.com/view/arosone Aros One x86 and x64], with md5 below <pre> 0a656d53a9c902e9934000d8392e30ec *ArosOne-USB-1.3-64Bit.zip 7dd7119ab3e56d75ee852c137226b4d7 *ArosOne-USB-v1.2-x86_64-v11.zip cf906eeaad4a83b3520b1896bdc6b0d3 *ArosOne-USB-v1.1-x86_64-v11.zip e2eb8fe8cfd61c567b0152a61cf85251 *ArosOne-x86-v2.8-USB-IMG.zip 559909c75c2f56472c74267a7d075355 *ArosOne-x86-v2.7-USB-IMG.zip 93da5898508c1a8c05bb8991ab7bd117 *AROS One Image-USB-2.4.zip 59fcabd7090e47f12d54f7eb78cf0f45 *ArosOne-x86-v2.2-USB-Image.zip 24fb8de726ae8fc5fe5bac6d30f03dc5 ArosOne-x86-v2.0-USB-Image.zip f3d725e990072edce633b59747911b6b ArosOne-x86-v1.8-USB-IMG.zip e089a24ae310e92fcc407a0125602ce8 Aros-One x86-IMG-USB-v1.6.zip </pre> [https://tinyaros.flazio.com/ Tiny AROS] 22bc993625b7c75b17263c0cc7e7baaa *Tiny Aros_copy.vhd (March 2024) There is usually a vhd image inside the zip that can be written to USB sticks which is so much faster than the old ISO written to physical CD DVD method. This .vhd can be written to an USB stick / ssd with these pieces of software below but it will erase the previous contents from the usb Windows - [https://www.raspberrypi.com/software/ RPi Raspberry Imager, use custom and see all files], [https://hddguru.com/software/HDD-Raw-Copy-Tool/ HDD-Raw-Copy-Tool], [https://rufus.ie/ Rufus up to version 3.20 may work with VirtualBox HD vhd images with Win7 but not some Rufus 4.x versions], [https://etcher.balena.io/ Balena Etcher but may spy on you], Linux - [https://www.raspberrypi.com/software/ Raspberry Imager Ubuntu], Suse Image / Multi writer, dd, Mac - Most of the time when we get reports of "crashes right after grub" from usb boots it's due to wrongly recorded pendrive. Not aware if using 'dd' is a valid approach. AROS One author suggests using either rufus or etcher software for his VHD image. * Virtual Machine .ISO or CDs DVDs The native iso images are currently not compatible with Ventoy, Yumi, MultiBootUSB, Easy2Boot E2B, or similar <pre> 617a905b1665128c5e05f94dcc48e7f1 *AROS-One-v1.3-64Bit-v11.zip 11c8a147fcad7ecf52ae3a43e1934b69 *ArosOne-DVD-v1.2-x86_64-v11.zip f93053d3b9ccf304d7e6ac3389e1987b *ArosOne-DVD-v1.1-x86_64-v11.zip 86d808a40dc7be389a758799a9b4f595 *ArosOne-x86-v2.0-ISO-DVD.zip f1fc8599ef6a39e5df394e0f41d55526 *AROS-One-x86-ISO-DVD-v1.6.zip </pre> You can use a virtual emulator like VirtualBox, VMWare to mount the iso image which can then be used to boot and/or install to USB. no software can write an AROS ISO to a Pendrive. The author of ‘Rufus’ (who used an Amiga 500 as a child) once tried, but when he saw the system composition, he said he was unable to do it. The solution is to boot the ISO from a VM (WMware, VBox), then install the AROS build on the Pendrive, which will eventually become a Live Pendrive that can be booted on a PC. The only precaution is that in some cases it is necessary to thoroughly clean the Pendrive of any partitions and remove any bootloader that is not AROS. The Pendrive must remain raw without any partitions. You can clean the USB stick on a PC with a program that manages hard disks. You need to do a partition wipe. On some USB sticks, you can clean it with InstallAROS. Previously the only installation option was CD-RW or DVD-RW, since the whole system can be burnt onto a single disk and can be reused when the next version is released. Good branded discs like Taiyo Yuden (later JVC) or Verbatim should be used to reduce frustration later. The days for this media is gone but kept here for information Since nobody currently sells AROS on any other media, you will need access to a CD/DVD burner to create the installation disk yourself. After it is on a CD or DVD, then access and writing to USB pendrives becomes available (this should be viewed as an outdated or last resort alternative method now), as well as using good USB manufacturers like Sandisk, Kingston, etc. rather than some other no-names. Try burning it to a CD-RW or DVD-RW using your CD/DVD burning program (most burning software have a burn iso option). The ideal writing speed is 2x or 4x, higher speeds can give errors and problems. Check the writing integrity of your CD or DVD if your software has an option to do so before going any further. Standalone portable usb cd dvd drives do not boot physical burnt discs, please use an internal ide sata drive instead. * SD-card For ARM Pi Aros, copy the files onto a FAT32 formatted SD card. ==Booting== The LiveUSB, and in the past LiveCD LiveDVD, is designed to trial (test drive) various operating systems without having to install them to your working system. Since 2011, UEFI was introduced to replace the original PC BIOS which made booting media more confusing. Some changes in the UEFI/bios may be needed *go into the bios using esc, f2 or f? and disable the Security -> Secure Boot and maybe apply option for Legacy IDE mode *you may have to press F9, F10 or F12 or p on boot up to present a device boot options like USB or CD/DVD *disable the Fast Boot config so it would recognize portable DVD-drive and changed the Boot-sequence Secure boot was introduced by Microsoft and later consortium control what operating systems work with Secure Boot via shims. For Aros, it is best to disable or be able to change Secure Boot (if you dual boot with Windows this may cause issues with Window boots after) The grub part of the boot should be fully automatic, and you should see a multiple choice graphic card screen after 10 seconds for USB or over 30s CDs and DVDs. After the grub graphics choice, AROS takes over the booting and any issues can arise here =====Advice for various machines===== Some of the stages involved and shown on the display in a typical AROS boot start up <pre> [MultiLoader] [ELF Loader] [Boot] [HPET] [Kernel:ACPI] [Kernel:APIC-IA32] [Kernel:SMP APIC] [HiddStorage] ACPI: ???? ACPI Error [ACPI]AcpiOs???? [BattClock] Got RTC century offset 0x32 from ACPI [PCI] Scanning bus ? [AHCI] Sata [Vesa] only if vesa is chosen as graphics option [ATA] detect hd & cd drives [ATA0?] ata-identity [packet] fat.handler be.handler, etc. [DOS] [Storage:Bus] [Storage:Controller] [MSS] USB setup [ehciInit] Port ? maps to controller ? [I2C] [ATI] [drm] nouveau [AROSTCP] if you have network driver prefs set up to start when booting </pre> ; If boot fails, please give us some indication (pictures or videos) where the boot stops and the message(s) on screen. AROS's native SATA/AHCI driver doesn't always work. If you get errors related to ahci.device, try disabling it. At your chosen boot entry in the GRUB menu, Press E, scroll down to the ahci.device entry, and add a # or ; at the start of that line or delete it with Ctrl-K. Then press Ctrl-X or F10 to boot. If your disk isn't accessible at all with this change, you might need to change the SATA controller to IDE legacy mode in the BIOS: however, making this change will likely cause problems booting Windows on the same machine (if it's already installed). To disable ahci.device permanently, edit the text file "SYS:Arch/pc/grub/grub.cfg", and remove the ahci.device line from all boot entries you intend to use. SATA AHCI Timeout while waiting for device to complete operations with BIOS SATA entry set to AHCI mode stops at "waiting for bootable media" screen, changing BIOS SATA setting back to IDE mode may allow it to continue booting The ATA driver doesn't always work. If you get errors related to ata.device, try using the alternative in sys:devs/alt which is an older version. Press E when your chosen boot entry is highlighted in the GRUB menu, scroll down to the ata.device entry, and change it to read "module /Devs/Alt/ata.device". Then press Ctrl-X to boot. To make this change permanent, edit the text file "SYS:Arch/pc/grub/grub.cfg", and change the path to ata.device in all boot entries you intend to use. Further options (removing the " ") to add to the GRUB menus to disable certain other components for debugging: <pre> Disable AHCI "AHCI=disable" Disable NVME "NVME=disable" Disable ATA: "ATA=disable" Disable ATA: "ATA=nopci,nolegacy" ATA safe mode: "ATA=nodma,32bit" Disable IDE from SATA: "ATA=32bit,nosata2pata" VIA / SIS with cdrom read io errors "ATA=nodma,nopoll" noacpi all [PCI] devices to be invisible to AROS. disk drives work but network, sound won't acpi=strict if there are issues with sound after boot noioapic alternative to no acpi Set AHCI "AHCI=force150/force300/force600" Disable AHCI/SATA: comment out with a # ; or remove ahci.device line with Ctrl-K Disable USB: comment out # ; or remove pciusb.device and poseidon.library lines with Ctrl-K Disable native graphics: "nomonitors" USB3 "USB=xhci" </pre> Other useful grub command line options - nomonitors, noacpi, vesahack, nopoll Press Ctrl and X together (or F10) to exit and boot with the new options. Just experiment with different variations until successful. Those working options will need to be reused with every reboot of AROS until you can edit the grub.cfg and make it permanent i.e. install to hard disk or USB. * If you use VESA mode, you can see the debug log if you add 'vesahack' to the command line. This will set up split-screen mode. In the upper half you'll see AROS screen, in the bottom - debug log. * ACPI ie. PCI hardware - If you get crashes at early boot, try adding 'NOACPI' to the command line If you're having boot issues and have a null modem cable and a spare pc, a boot log is always useful. Edit your grub line to include debug=serial but would try with an with sysdebug=all in the line later as it can cause issues booting on machines with sysdebug=all enabled (corrupts the cpu initialization). However, if you feel you have found a genuine bug/fault in AROS that needs attention, please use the [http://sourceforge.net/tracker/?atid=439463&group_id=43586&func=browse bug submission form] to record as much information about what happened, why, and what hardware etc. you have so that people may try to assist you For Virtual machines VMWare VirtualBox, etc., attach and press play to start the ISO image If booting hasn't worked then it could be down to Bios/UEFI settings or USB3 (2014 onwards) =====nvme.device===== Since 2018, nvme drives are standard on most machines Now as far as hardware goes on a newer machine with an NVME drive you may need to add NVME=disable as the NVME driver could potentially cause lockups. =====AHCI===== Starting taking over since 2011 on a lot of machines * Check that UEFI (replacement for PC BIOS) has options set to remove UEFI SecureBoot option and apply CSM * SATA drive is set for Legacy or a mixture AHCI/IDE and not AHCI AHCI sata can be very difficult to get working Most Windows installs are already set to AHCI sata, changing this to a legacy IDE mode setting can help but please check if Windows will still boot. Some hardware like Lenovo laptops do not always like being set in legacy mode so only use as a last resort and aware of issues that can be caused. Now as far as hardware goes on a newer machine with an NVME drive you may need to add NVME=disable as the NVME driver could potentially cause lockups. With a 16C/32T chip machine, disable SMT and it should boot. =====ata.device for old BIOS's ===== Pre 2010 this was the de facto standard method of providing settings to the computer at a lower level Some adjustments to the BIOS setup options are necessary (usually by pressing a key like DEL, F1, F2, F12 or ESC, p on the very early boot up of the computer). *Adjust booting options like moving USB hdd, CDROM higher as it is quite often disabled or placed lower by default, i.e. USB hdd, CD/DVD are placed at the top above the hard drive. Try looking here [http://www.windowsreinstall.com/articles/bios/ Windows] or [http://www.hiren.info/pages/bios-boot-cdrom Bios] or [http://www.wikihow.com/Set-Bios-to-Boot-from-a-CD-ROM Boot] or web search "BIOS BOOT CDROM" * At the '''SAME''' time, check if the SATA/AHCI option is set to Emulate or IDE Legacy, though this can have '''issues''' with any OS already on the hard disk. If in doubt, do nothing and seek advice. * check that under BIOS settings you '''DO NOT''' have plug&play OS selected as Aros at this point is unable to route interrupts on its own and needs the BIOS to do that. '''Save''' options changed at the end. PCITool can show if the motherboard chipset is in IDE mode. Class = 0x01 means STORAGE, Subclass = 0x01 means IDE. Also ProductID 0x3a20 resolves to non-AHCI mode in Intel ICH10 documentation. ==Installing== We have a separate section [https://en.wikibooks.org/wiki/Aros/Platforms/x86_installing here] We have a specific section for each CPU platform under the Specific platforms in the NavBar navigation bar on the right hand side menu error code (-6) when using the ahci.device (has writing to disk problem but not reading) is enabled. change this line in your grub and reboot <pre> #module /Devs/ahci.device << disable module /Devs/Alt/ata.device << add this line instead </pre> ==File structure overview== AROS' directory structure is mostly identical to AmigaOS directory structure, with some additions. AROS: or SYS: also known as DH0: (i.e. the drive partition with AROS system) has the following simplified list of the main drawers (Amigas term for directories/folders). {| class="wikitable" |boot: | grub bootloader |---- |C: | small apps, where AROS looks first for applications/games but will look at Tools, System afterwards |---- |Devs: | .audio, .hidd, network, graphics and other hardware device drivers are stored |---- |L: | where .handler files go |---- |Libs: | where .library files go |---- |Prefs: | applications that adjust or setup AROS functions and capabilities |---- |S: | startup scripts (for the aros boot process '''not''' grub) are stored here |---- |Storage: | place to keep old or alternative device drivers |---- |System: | applications associated with AROS operating system |---- |Tools: | extra applications |---- |Utilities: | extra applications |---- |WBStartup: | copy applications here to autostart with needed icons, drawers, data etc |---- |} See [[Aros/User/DOS#Drives.2C_Files.2C_Assigns.2C_Directories|DOS manual: Drives, Files, Assigns, Directories]] === Filesystem === Whilst the kernel is the heart, the filesystem is the blood of the system they are split into two categories (only a few are supported) <pre> Journalling - ZFS XFS ext4 NTFS SFS PFS3 Non-journaling - BtrFS ext2 exFAT FAT32(VFAT) FFS </pre> Filesystem options for AROS to install * SFS default * Professional File System PFS3 [http://eab.abime.net/showthread.php?t=52234&highlight=pfs3+free&page=13 only on motorola 68k at the moment] * FFS very old now but left in for legacy usage Other [https://archives.arosworld.org/index.php?function=browse&cat=driver/filesystem filesystems] for storage purposes * FAT32 favorite as most OSs support * NTFS (can lock AROS) * exFAT The only filesystems that really NEED defragging (i.e. disk tidy up) are from Microsoft(TM) - exFAT/VFAT/NTFS *SFS tries to do exactly the same thing, but in certain cases it doesn't do as well as PFS. But you can defrag SFS *PFS *minimises* the amount of fragmentation, but does not automatically defrags as it saves files to the drive The setup of the below filesystems is usually done by the distro maintainer but if not.... <pre> Copy L/exfat-handler L: DOSDriver or Mountlist entry for an exFAT partition make sure that the FileSystem and Handler are set as follows: FileSystem = exfat-handler DosType = 0x46415458 </pre> <pre> Copy L/ntfs3g-handler L: DOSDriver or Mountlist entry for an NTFS partition make sure that the FileSystem and Handler are set as follows: FileSystem = ntfs3g-handler DosType = 0x4e544653 Also to make a read-only mount you can set: Control = ro </pre> The Smart File System (SFS) is a journaling filesystem used on Amiga computers and AmigaOS-derived operating systems. It is designed for performance, scalability and integrity, offering improvements over standard Amiga filesystems as well as some special or unique features. SFS is written in C and was originally created and released as freeware in 1998 by John Hendrikx. After the original author left the Amiga scene in 2000, the source code to SFS was released and its development continued by Ralph Schmidt in MorphOS. Its development has now forked; as well as the original Amiga version, there are now versions for MorphOS, AROS, AmigaOS 3, and a version for AmigaOS 4, which have different feature sets but remain compatible to each other. Versions for AROS, AmigaOS and MorphOS are based on different branches. In addition, there is a driver for Linux to read Amiga SFS volumes, GRUB natively supports it and there are free drivers to use it from UEFI. The Linux version is [http://home.elka.pw.edu.pl/~mszyprow/programy/asfs/ independent code]. SFS (Smart File System) partially defragments itself while the filesystem is in use. The defragmentation process is almost completely stateless AROS SFS version has a 120GB partition size limit on hard disks and DVDs current 4gig size limit. The sources for the MorphOS 64-bit version of SFS were available but no porting to AROS has happened so far due to endian issues, etc. SFS Tools * GUI - arSFSDoctor, * CLI - sfscheck , [http://www.portacall.org/ sfsundelete], sfsformat, setcache hits a usability ceiling around the 10GB / 100,000 file mark, sfscheck dh0: seek purge fraglist defragment If there are two simultaneous file writes in progress and you reboot machine (or it locks up or crashes) you may end up with a corrupted filesystem. Although arSFSDoctor may help, you might have to copy the files to another partition, format the partition with the errors on and copy the files back. A bit error on the harddisk would give this error. PFS / SFS are way more advanced and much much faster than the FFS. FFS is supported for legacy reasons only. The Professional File System (PFS) is a filesystem originally developed commercially for the Amiga and now distributed on Aminet with a 4-clause BSD license. It is a compatible successor of AmiFileSafe (AFS), with an emphasis on added reliability and speed compared to standard Amiga filesystems. It also features multi-user abilities like the older MuFS. PFS has so many advantages including the important things, speed, the ability to recover all deleted files even simply same name by typing the command ". Deldir" convenient if done in Directory Opus, virtually deleted files are copied normally as if they had never been deleted, other convenience is to not ever invalidate the filesystem, just put it on top of the startup-sequence command "diskvalid", which automatically corrects any irregularities in the system startup; PFS also provides a device for floppy which makes them very fast and takes advantage of the full capacity of the floppy including the area dedicated to the bootloader. The device is split into two main areas. At the beginning of the device is the metadata section, which consists of a root block, and a generic array of blocks that can be allocated to store metadata. The rest of the device is another contiguous generic array of blocks that can be allocated to store data. The metadata section usually uses a few percent of the device, depending on the size of the device. The metadata is stored as a tree of single blocks in the metadata section. The entire directory structure is recorded in the metadata, so the data section purely contains data from files. The metadata describes the location of data in files with extents of blocks, which makes the metadata quite compact. When a metadata update occurs, the system looks at the block containing the metadata to be changed, and copies it to a newly allocated block from the metadata section, with the change made, then it recursively changes the metadata in the block that points to that block in the same way. This way, eventually the root block needs to be changed, which causes the atomic metadata update. The filesystem is reasonably good at keeping files unfragmented, although there is a defragmentation tool available which will work on an online filesystem ie whilst being used. It was the first filesystem to introduce the concept of the Recycle Bin natively at filesystem-level to the Amiga, holding the last few deleted files in a hidden directory on the disk root. PFS version 5.3 was developed in C and a small portion of assembly code by Michiel Pelt. There are endian issues to be overcome and adapting the small amount of m68k to C before use on intel based machines, etc. Autoupdate of files in a directory is already implemented in Wanderer, but not all file systems handle dos.library/StartNotify() in its full extent. It seems to work correctly in Ram Disk (thanks to AmberRAM handler), and it also works on SFS formatted devices. Other file systems might not yet have it implemented correctly though. The PC equivalent of the Amiga's RDB is the master boot record (MBR). ===Installing Applications=== The typical means to install applications under AROS/AmigaOS involves simply copying/extracting the archive (.zip .lha .rar .tar.gz) file containing the applications files to your own desired location i.e. drawer/folder. Once extracted, launching it by double clicking on an icon (recommended) or using the shell (alternative). Generally, this is on a separate partition from your AROS system files, however in reality it can be any location - including RAM: if you don't want it staying around too long especially when you switch off. At some time in the future it may be desirable for AROS to have a package-manager like subsystem able to retrieve information online about packages available for AROS and whether they update anything you currently have installed, however at the moment no such ability exists. ===User Data files=== AmigaOS has no notion of a default location to store user data files, and presently neither does AROS - though it may be desirable at some time to provide a common start location. For most people, extra small FAT32 NTFS partition(s) as well as the usual Sys: (DH0:) and Work: (DH1:) / Briefcase (DU1:) partitions to store data seems preferable. Especially if a reinstall is ever needed. ===User Environment configuration files=== AmigaOS/AROS stores persistent system configuration data in directory assigned to ENVARC:. This, by default, points to SYS:Prefs/EnvArc. During boot a copy is made to another assign, ENV:, which is for runtime usage. Changes to the files here will not survive a reboot. Setting the env variables is generally done by applications themselves, or when necessary by the user using the SetEnv command. SetEnv has a SAVE switch to force the persistent copy in ENVARC: to be written also for when you are sure the change should be permanent. Under the standard installation of AmigaOS style OSs, ENVARC: is copied to ENV: upon startup, which, if you have a hard drive installation, is in RAM:, hence, ENV: ends up being RAM:Env. ENVARC: is the Environment Archive, which is the permanent copy of ENV:, which is the Environment. It's roughly like the Registry in Windoze. Most programs do (and all should) store their settings in ENVARC: somewhere, and load them from ENV:. The effect of this can be seen in the Preference editors. If you Save your preferences, they go in ENVARC: and ENV:. If you click Use, they only go in ENV:. If you reboot, normally, anything saved to ENV: is lost, and is replaced with a copy of what is in ENVARC:. you can set the default public screen for any tool started from a cli with the PUBSCREEN variable. So open the pubscreen, set PUBSCREEN to the name and start newcli for example, then the new cli window (and all following windows opened from that window) will appear on that public screen. ===Drivers=== All hardware support is placed in the Devs drawer (folder/directory). The network drivers <something.device> go in the Networks sub-drawer. Audio drivers <something.audio> are put in the AHI sub-drawer. Graphics drivers <something.hidd> are put in the Drivers sub-drawer. ==Configuring== AROS has mainly decided on a MUI-like requester/menu/ clone so changing the background, icons, font, menus can be done with SYS:Prefs/Zune AROS has several desktop GUI front ends like * DOpus5 Magellan II, Wanderer and Scalos (medium) * AROS Workbench, Workbook (smaller) File / Directory managers like Dopus4, MCAmiga, App Launch Shortcuts like FKey, Amistart, BoingIconBar, right mouse click on magellan, wanderer desktop, etc. General usability decisions - Prefs/IControl, CLI in icon's tooltypes means 'run it as if it was run from shell' If, on the other hand, the WB parameter (or no parameter) is present in Tooltypes, Wanderer will execute the binary and, if provided, the options included in Tooltypes. WBxCLI is very useful for adding options to DOS Commands. Important: AROS has a different way of managing icons. If you have an executable file, you will never be able to add a project icon. AROS will automatically recognise that it is an executable file and will transform the icon into a tool icon. Most apps can be autostarted by copying into SYS:WBStartup directory folder e.g. WeatherBar.zip can be downloaded, unzip and the contents of the zip copied to wbstartup folder ClicktoFront and .info to SYS:WBStartup so always be activated when turning on the computer or add a text line to user-startup is SYS:S (scripts version of wbstartup) e.g. standard Amiga / AROS does not allow clicking of background windows to come to the front to make it easy to get to the window you need but it has the ability if these apps are copied again to WBStartUp or are added to SYS:S/user-startup script run QUIET sys:Tools/Commodities/ClickToFront >Nil: run QUIET sys:Tools/Commodities/DepthMenu >Nil: run QUIET sys:Tools/Commodities/Blanker seconds=300 >Nil: Exchange controls Commodities and can be opened with alt, ctrl, h Although there are heaps of docks, menus and other launcher programs on the Amiga like OSs, FKey has got to be one of the quickest and less complicated ways to launch programs, and it comes with the OS. In SYS:Tools/Commodities, the FKey commodity (Ctrl Alt F) allows you to make actions assigned to some combinations of keys <pre> ALT TAB Cycle Windows Cycle Screens Enlarge Window Shrink Window Toggle Window Size Insert Text Run Program Run Arexx Script </pre> e.g. <pre> LAmiga F1 = Avail Flush LAmiga F2 = Open Prefs LAmiga F3 = Finder Alt Tab = Cycle Windows LAmiga Tab or M = Cycle Screens Alt Up arrow = Enlarge Window Alt Down arrow = Shrink Window Alt Home = Toggle Window Size = Insert Text LAmiga e = Run Program = Run Arexx Script </pre> If your FKey GUI pops up when you start your Workbench up and you don't want it to, click once on the icon, go to the Icons-Information in the menu and make sure it has the tooltype set "CX_POPUP=NO". Now let's launch it and assign the locale switching. After you double-click on FKey icon, launch the Exchange, choose the FKey from list and click the Show button. This will invoke the FKey window. You can see the ALT TAB in list assigned to window switching. Now enter the first key combination, say, ALT Z and go to the right panel. Choose Launch the program from pulldown menu and enter SYS:Prefs/Input as an argument. Append the USE switch and english preset name to the string as shown: SYS:Prefs/Input USE SYS:Prefs/Presets/english Click on the New Button to add the another combination. Now set the combination for your locale as shown above, replacing English name with your preset name. Click New button again and then Save Settings. Now you can use defined combinations to switch the layouts. Although not needed by most users, the system wide ARexx script capability can manage many file manipulation task(s) but this would work only with those program that support [https://en.wikibooks.org/wiki/Aros/Developer/Docs/Rexx ARexx] like *Desktop - DOpus5, Scalos *Dock - FKey, *Files - Multiview, DOpus4, *Internet Apps - Odyssey, WookieChat, *General Apps - the shell can be modified with escape strings but not needed in most cases Common Keyboard Shortcuts <pre> RAlt Right Alt Key LAlt Left Alt Key RWinKey Right Windows Key LWinKey Left Windows Key RAmiga Right Amiga Key (if one) LAmiga Left Amiga Key (if one) </pre> ;Bootup Options :Spacebar during boot, enters the bootmenu which allows a boot without startup sequence, etc ;Left Click :LAmiga = LWinKey = F11 ;Right Click :RAmiga = Help = F12 ;Mark :RAmiga and B ;Cut :RAmiga and X ;Copy :RAmiga and C ;Paste :RAmiga and V ;Search :RAmiga and S ;Mouse Movement LAmiga and together with arrow keys - shift as well at the same time as well to move faster ;Mouse Selection LAmiga and LAlt to select ;Screen Switching LAmiga and M or N ;HELP key Can sometimes be mapped to F11 but can be changed via FKey ComKeyRemapper or AmigaKeyremapper could swap RAmiga to another key press ===DOpus 5 Directory Opus Magellan II=== Dopus 5.x is a whole desktop replacement on the Amiga Workbench (Desktop) DirectoryOpus app will assign DOpus5: to it's PROGDIR: automatically but if not add the below (edit SYS:System to suit where Dopus5 was installed) to your startup-sequence <pre> Assign DOpus5: SYS:System/DOpus5 DOpus5:DirectoryOpus ;DOpus5:C/LoadDB </pre> Left mouse button clicked twice on the desktop background brings up the Device List window. Green strip notifies SRCE (source) and if another is open it will be red for DEST (destination). clicking on the red strip changes to green Word list of actions with a left mouse click on the DOWN Arrow and directory stuff with < button which mirrors the icons at the top of each lister single-key hotkeys? exactly the same as in dopus4, edit your functions (button bank, toolbar, menus etc.) and under the flags gadget is a key gadget, just click in it and press the key you want to use. As for the extra text field... try turning off Extended lister key selection in environment / miscellaneous. Shift and click on the icon - runs the icon DOpus5 Magellan 2 Directory folder drawer structure <pre> ARexx - Arexx scripts .rexx and .dopus5 to perform tasks Buttons - Commands - Desktop - Environment - two environment files bundled: default gets loaded if you run DOpus as a normal app workbench gets loaded if you run DOpus as a WB Replacement (with LoadDB on startup) Filetypes - Groups - Icons - Images - Modules - compiled tasks Settings - Sounds - Themes - WBStartup - Use this if standard SYS:WBStartup gives cannot wait error messages </pre> Settings -> Environment -> Display -> Workbench (Use) *Settings -> Clock (add to title bar as well as the date) *Toolbar -> Editor (Right Win Key together with 1) for Copy, Move, Delete, etc above the Device List *Menu -> (Right Win Key together with 2) *Buttons -> Editor (Right Win Key together with 3) *Settings -> Environment (Right Win key together with 4) for Backgrounds, etc *File Types -> (Right Win key together with 5) *User Menus -> (Right Win key together with 6) *Hotkeys -> Setup for quick shortcut keypresses (Right Win Key together with 7) *Scripts -> (Right Win key together with 8) *Icon Positioning -> (Right Win key together with 9) Each Dopus5 theme are stored in a separate directory, named appropriately, which contains further sub directories * Font (amiga bitmap fonts) * Screens (jpg or any picture supported by datatypes but not animations) * Sounds (wav but not iff 8svx ) * Icons (png newicons glowicons ) * Patterns (iff jpg png ) Just use wildcards in background filenames and you get a different picture every reboot For example, configure in Environment -> Backgrounds -> Desktop something like this: <pre> Work:Pictures/Backgrounds/#? ...or Work:Pictures/back#?.iff ...etc... </pre> [https://aminet.net/util/dopus arcdir and themes] If you want to change the backdrop pic after a period of time, paste below into a text file called dopusrandbg.rexx and place in DOPus5:ARexx <pre> /* Changes DOpus background image forever Start with: Run >NIL: RX dopusrandbg.rexx */ if ~show("L", "rexxsupport.library") then do if ~addlib("rexxsupport.library", 0, -30,0) then exit 10 end /* Configure these two lines for your needs: */ minutes=1 picpath="Work:Pics/#?.iff" address DOPUS.1 do forever call delay 3000*minutes dopus set background '"'picpath'"' desktop center custom dopus refresh background custom end </pre> If you don't want to use/open rexxsupport.library just for DELAY() then use the DOS Wait command <pre> /* random diropus backdrop changer */ /* by paul trauth, 1999 */ /* to do: non-repeatable randomness? */ options results parse arg path address DOPUS.1 /* get current backdrop pattern so it actually changes */ dopus query background desktop custom currentpatt=result lastslash=lastpos('/',currentpatt) currentpatt=substr(currentpatt,lastslash+1,(pos('"',currentpatt,2)-lastslash-1)) dir=showdir(path,'FILE','/') num=0 do while dir~='' where=pos('/',dir) if where>0 then do file=left(dir,where-1) dir=right(dir,length(dir)-where) end else do file=dir dir='' end if left(file,1) ~='.' & file~=currentpatt then do pics.num=file num=num+1 end end which=random(0,num-1,time(s)) newbg='"'||path||'/'||pics.which||'"' dopus set background newbg desktop tile precision exact dopus set background on dopus refresh background </pre> Clock format commands available are defined by locale. They are: <pre> %a - abbreviated weekday name %A - weekday name %b - abbreviated month name %B - month name %c - same as "%a %b %d %H:%M:%S %Y" %d - day number with leading 0s %D - same as "%m/%d/%y" %e - day number with leading spaces %h - abbreviated month name %H - hour using 24-hour style with leading 0s %I - hour using 12-hour style with leading 0s %j - julian date %m - month number with leading 0s %M - the number of minutes with leading 0s %p - AM or PM strings %q - hour using 24-hour style %Q - hour using 12-hour style %r - same as "%I:%M:%S %p" %R - same as "%H:%M" %S - number of seconds with leadings 0s %T - same as "%H:%M:%S" %U - week number, taking Sunday as first day of week %w - weekday number %W - week number, taking Monday as first day of week %x - same as "%m/%d/%y" %X - same as "%H:%M:%S" %y - year using two digits with leading 0s %Y - year using four digits with leading 0s </pre> like %a %d-%b-%y %H:%M or A WB ARexx interface, you could enter a cli command as a menu item to open a WB drawer like this... RX "address WORKBENCH;WINDOW 'device:drawer' OPEN" Where device:drawer is replaced by the path of the drawer to open. The ARexx script would be capable to manage such a task but this would work only with those program that support ARexx <pre> dopus addappicon dopus addtrap dopus back dopus checkdesktop dopus clear dopus command dopus desktoppopup dopus error dopus front dopus getdesktop dopus getfiletype dopus getstring dopus matchdesktop dopus progress dopus query background, font, palette, pens dopus read dopus refresh all, background, icons, lister dopus remappicon dopus remtrap dopus request dopus script dopus screen dopus send dopus set background, font, palette, pens dopus setappicon dopus version </pre> <pre> lister add lister addstem lister copy lister clear value lister clearcaches lister close lister empty lister findcache lister getstring lister iconify lister new lister query active all, dest source lister query abort, busy, case, dirs, display, entries, entry, files, flags, handler, header, hide lister query label, lock, mode, namelength, numdirs, numentries, numfiles, numseldirs, numselfiles lister query path, proc, position, seldirs, selentries, selfiles, separate, show, sort, lister query title, toolbar, value, visible, window lister read lister refresh lister reload lister remove lister request lister set busy, case, dest, display, field, flags, handler, header, hide, label, lock, mode lister set namelength, newprogress, off, path, position, progress, separate, show, sort, source lister set title, toolbar, value, variable lister select lister wait </pre> The '''command''' allows you to call internal DOpus commands from an ARexx script <pre> command all command wait copy command read s:startup-sequence command source 12345 makedir name noicon </pre> *SFTP secure encrypted comms over internet using libssh2 and zlib (different protocol to the two below) on port 22 *FTPS secured with https like security on port 21 *FTP not secure and unencrypted protocol over internet on port 21 (should not be used today on the internet but for your own server) ===Wanderer === Wanderer prefs in the prefs drawer - Appearance tab and Workbench icon allows backgrounds (wallpapers) icon text sizes, colors, etc but cannot use #? or *.* in the backgrounds file entry to randomly choose pictures - [https://developers.google.com/speed/webp/docs/riff_container webp riff container] issues with this format Enable the bar, you need to edit the text file ‘statusbar.prefs’. The change is simple: just change “False” to ‘True’. Prefs/Env-Archive/SYS/Wanderer/statusbar.prefs Provides a way to hide the old Workbench 3.1 style of windows and screens. Themes - SYS:Prefs -> Appearance The default content of Prefs/Env-Archive/SYS/themes.var should be "themes:ice" but can be changed via the theme prefs, please do NOT click the Use button. Its useless. As you know, it will ask for the theme volume. Just pick the theme you want, click on Save, then reboot. * Decoration is on. Any time trying to change theme, you get: "Please insert volume Theme: in any drive"? You could check if you find SYS:System/Themes or if it is missing. Then you could open startup-sequence which you can find in drawer "S". There should be a line: Assign THEMES: SYS:SYSTEM/THEMES >Nil: This does the trick. Open a shell and run: Assign THEMES: SYS:SYSTEM/THEMES Than start the Theme prefs again... this should work * The theme is the only thing that could slow the system a bit, but it's not that performance impacting on most uses, and you can switch it of completely. Remove C:Decoration from the bottom of the file sys:s/startup-sequence. [http://archives.aros-exec.org/index.php?function=browse&cat=graphics/theme ALua/Zulu script] built for faster Wanderer skin management. You can modify config files, install new (wdz format/zipped skin files) and delete skins via the Theme Manager. [http://sites.google.com/site/arosaspireone/download-1 Global.Prefs] ===Scalos=== [https://web.archive.org/web/20180922220139/http://scalos.noname.fr/ Scalos] is not an OS replacement, it's a Workbench replacement. It replaces the desktop and graphical file management components. Scalos is 100% Workbench replacement with most functions working like the original Workbench ones. Undo and Redo available for most window and icon operations. Fully multitasking so every window has its own task. While loading icons, any window function (e.g. Drag&Drop) is available. 24bit color support with window patterns - Unlimited and easily configurable via tooltypes. Optimised backgroundpatterns routine so patterns can be tiled, centred or even scaled to fit into the windows. Live updating window scrolling - Supports middle mouse button panning and drawer (folder) windows can be iconified on the desktop. Icon imagetypes with all types are supported such as backfill or complement. Configurable surrounding iconborder. Icon support also visually highlights files which are soft-links in the file system. Icon dragging is more stable and far less flickery on graphics cards. Whilst dragging, icons are displayed with text and they can become transparent over anything where they can be dropped. Single-window lasso mode, with scrolling window contents invoked by dragging mouse with configurable qualifier key. Text icon lasso selection used to ignore "Name column selects text icons" flag. Support for backfilled thumbnail icons, with selectable color and transparency. Added option to always generate square thumbnail icons with preview icons for images - Thumbnails can be permanently saved in icons. Supports PNG icons with alpha channel and real transparency and displays OS3.5 GlowIcons and are all scalable. Iconborders with variations (normal, shadowed, outlined). Completely configurable, filetype-specific user-definable popup menus and tooltips. Plugin system to exchange or add features and can enhance the Workbench and make it more configurable. Filetype plugins to display filetype-specific information. - Currently, EXIF information viewer for JPEG images is included. Plugin included for 100% support of OS3.9 Workbench features. Plugin included for AREXX API compatible to OS3.9 Workbench. Online update with updater.module Scalos works also as a Workbench replacement. In this case the 'emulation mode' has to be set by using Scalos' own version of LoadWB and offers * Scalos uses the Workbench Screen for its windows instead opening a new one * AppIcon, AppMenuItem, AppWindow functions are redirected to Scalos * all Programs placed in "WBStartup" should start * The Screen will be reopened in case of changes in ScreenMode and Palette settings <pre> v1.0 (V39.201) - November 1999 v1.1 (V39.212) - December 1999 v1.2b (39.220) - June 6, 2000 v1.2d (39.222) - 2000 (latest public beta executable) v1.3 (40.7) (beta) - August 2, 2001 v1.3 (40.22) - September 25, 2002 v1.4 (40.32) (beta) March 31, 2005 v1.6 (41.4) - March 27, 2007 v1.7 (41.5) - August 12, 2007 v1.8 (41.6) - March 12, 2009 v1.9 (41.7) (beta) - March 15, 2010 v1.9 (41.8) (RC1) - August 25, 2012 open source v1.9.2 (41.10) Deadwoods' AROS late 2022 32bit and 64bit build unifying the code base of ` for AROS x86 ABIv0, AROS x86_64 ABIv11 and AROS m68k </pre> Distros may have Scalos files under SYS:System/Scalos or Extras:Scalos. Known [https://github.com/deadwood2/AROS/issues/75 bug list], Certain files like Menu13.prefs, Palette13.prefs, Pattern.prefs and scalos.prefs need to be in SYS:Prefs/Env-Archive/Scalos they can be found in Scalos:Storage/envarc and country drawer or run the "Scalos Menu" preferences program. Note if already setup with sub-menu entries and then re-save your menu prefs as it will now generate a new/overwrite prefs file called "Menu13.prefs" in "envarc:scalos/". The same is also required for the new Palette prefs update, click 'Save' and a "Palette13.prefs" file will be saved in to "envarc:scalos/" directory. <pre> ASSIGN Scalos: SYS:xxx/xxx DEFER ASSIGN Libs: Scalos:Libs add ;ASSIGN SYS:Devs/Datatypes Scalos:Devs/Datatypes add Assign Theme: Scalos:Themes/Default_Theme add Assign Locale: Scalos:Locale add Protect Scalos:Tools/browse.script s add quiet Protect Scalos:Tools/OpenShell s add quiet Protect Scalos:Tools/run.script s add quiet run Scalos:Tools/LoadWB ;Scalos:Scalos </pre> Add the above to SYS:S/startup-sequence or SYS:S/user-startup '''before any Wanderer entries''' In the prefs drawer (folder) is the big prefs app Scalos_Prefs which covers these user setup areas <pre> About Scalos Paths - should be preset Startup - WBStartup drawer contents should auto run on each startup Desktop - edit titlebar, icon layout and in misc, auto leave-out (drag icon to desktop) Icons - Drag and Drop - Windows - Text Windows - in misc, drawer sorting at start of listing if needed TrueType Fonts - use Truetype fonts rather than system ones Miscellaneous - Plugins - after adding oop/title_clock.plugin %ti %da does not work, maybe needs ASCII .prefs added Modules - ?? Menu - setup for MainMenu and PopupsMenu with New Menu, RE Name, Key: shortcut, Command Properties FileTypes - already added def_Project icons and def_Disk (hdd sdd cd dvd etc) support PopupMenu - tweak how popups appear Pattern - Wallpaper backgrounds with Type DE, each pattern in the list can be edited, Save as Pattern.pre Palette - change the color of things , Save as Palette.pre </pre> Scalos_Prefs - Pattern - Minimum options to be changed are *DE Desktop/Background *SC Screen *TW Window/TextBackground ie Text listing showing if icon type not recognised *IW Window/Background ie Icons showing Workflow - In "Pattern List" tab, select New - choose a picture, highlight in list, click in number box under New button and slide to another number, click on "Defaults" tab and adjust Pattern numbers slider to choose right picture for each of the above options - Click "Pattern List" tab to check eveything is OK and click Save Pattern List tab on Patterns Page - Allows you to compile a list of pictures (one at a time rather than a whole folder e.g. with #? or *.*), assigning a number Nr to one or more of them for easy reference. Using this number you will be able to assign the pictures to specific windows on the Defaults tab Page. If multiple pictures have the same number, one of the pictures will be chosen randomly. This will allow you to have random desktop pictures, random window backdrops etc. Defaults tab on Patterns Page - Here you can set the defaults for the background pictures for the Desktop, Screen, Window and/or Text Mode throughout Scalos. Randomize every time [check box] - Usually Pictures with the same number will be randomly selected as soon as the configuration loads. If this option is set, the picture will be selected as soon as a window with the same number assignment is opened. *Fit size: The picture will be resized to the dimension of the new window.You *MUST* have set GUIGfx on. asyncron layout: Pictures will be loaded and rendered while the windows opens (Like original Workbench). If this function is 'off', pictures will always be loaded before opening the windows. *Use friendbitmap : The picture is present twice in memory for best speed. This option has no effect if V43 picture.datatype or GUIGfx are used. Always relayout: If "Fit size" is set, the picture will be scaled everytime the window's dimensions change. *Randomize everytime: Usually Pictures with the same number will be randomly selected as soon as the If more pictures have the same number, one of them will be chosen randomly. Patternlist New/Delete : Add a new picture. After that you should assign a number to it. The picture will be rendered as tiles. configuration loads. If this option is set, the picture Asyncron-Task priority: You can set the CPU priority for the Task if "asyncron layout" is set. <pre> Desktop: Number of the Picture for the main window. Screen: Number of the picture for the Scalos-Screen. Window: Number of the picture for the Scalos-windows. TextMode: Number of the picture for the Scalos-windows in Text Mode. </pre> Popup Menu preferences fully configurable menus (includes ToolsDaemon and ParM launch apps import), including support for context-sensitive Popup menus configs for top pull down menus for apps, etc. Workflow - Scalos_Prefs then Menu, New Item, New Command add name at top then in Command Properties e.g. add Workbench and location e.g. DOpus:DOpus4 for apps Command for c apps or Rexx for scripts or Plugin for or AmigaDos for modules <pre> DESCRIPTION NAME/A This is the title that is displayed in the top line of any popup menu INCLUDE NAME/A Name of file to be included. Path can be relative to "Scalos:FileTypes" POPUPMENU Starts the popup menu description section for this filetype. </pre> The following Subcommands are allowed inside popup menus: <pre> SUBMENU "NAME/A" ENDSUBMENU MENUENTRY "NAME/A,KEY/K,DEFAULTACTION/S" ENDMENUENTRY INTERNALCMD "NAME/A" WBCMD "NAME/A,STACK/K/N,WBARGS/S,PRI=PRIORITY/K/N" AREXXCMD "NAME/A,STACK/K/N,WBARGS/S,P=PRIORITY/K/N" CLICMD "NAME/A,STACK/K/N,WBARGS/S,P=PRIORITY/K/N" ICONWINDOWCMD "NAME/A" PLUGINCMD MENUSEPARATOR ENDPOPUPMENU TOOLTIP ENDTOOLTIP </pre> <pre> Starts the tooltip description section for this filetype. The following Subcommands are allowed inside popup menus: GROUP "ORIENTATION/K" ENDGROUP MEMBER "HIDE/K" ENDMEMBER HBAR STRING "ID/K,TEXT/K,SRC/K,TEXTPEN/K,HALIGN/K,STYLE/K,FONT/K,VALIGN/K" SPACE "SIZE/N/A" DTIMAGE "FILENAME/A" </pre> Each theme drawer (folder) has these further folders <pre> About - Desktop - FileTrans - FileType - Icons - Menu - Modules - PointerIcons - Prefs - Sound - Window - </pre> *Plugins <pre> devicefilter.plugin persist.plugin should a crash or reboot occur - next time Scalos started, all windows re-opened title_clock.plugin add digital clock to title see more below title_envvar.plugin %ev, which can be used to display the value (a string) of the variable in the titlebar title_freepens.plugin volumegauge.plugin wb39.plugin wbrexx.plugin plugin adds a Workbench 3.5+ compatible AREXX interface to Scalos internals xtwindows.plugin left or right ALT or left or right SHIFT keys when open/close windows filetype.plugin then run FileTypes-prefs and customize the filetypes (eg import from a DefIcons-brainfile) menu.plugin </pre> *Modules - delete, empty_trashcan, execute, find, format_disk, information, iconproperties, newdrawer, reboot, rename, systeminfo, windowproperties *Tools - scripts like LoadWB, quit.rexx, open_volume.rexx, In Scalos_Prefs->Filetype->Recognition you can define the filetypes and on "Action" you define specific context menu for all filetypes defined in recognition (similar to magellan) there is the same you must show all first (list is only limited) so you created a file type AAABBB, you need to have def_AAABBB icon Associating files with "Scalos_FileTypes" is very simple, practically it is very similar to Dopus4, first you create the Def_icons to assign to the file type (will be seen automatically ), then run "Scalos_FileTypes" you add the extension, fill in the descriptor (MATCH or PATTERN etc..) and save then you create a appropriate entry in the list and rename it, if def icon exists it is shown. Below you can define how files are identified. I use "pattern", similar to magellan to identify file by ending. Then you click on the shown icon and define in it what program is used when you double-klick on it and save it. On the tab action you can define popup menu for it. defined all archive types from XAD in "filetypes". If you change to "action" and click on "archive" you can define the context menu that is shown if you do not define a specific context menu for a filetype Reset to Default in Scalos_Prefs resets all settings so BEWARE <pre> The Scalos desktop screen titlebar may be configured using the main Scalos Preference program. This oop/time_clock plugin adds some additional placeholders: %ti, displays the current time in the default Locale format. e.g. "10:43:37" %da, displays the date in the default Locale format. e.g. "Saturday 14 July 2001" Using the supplied prefs program for the plugin, or editing the ASCII file ENVARC:Scalos/title_clock.prefs you can use the following standard Amiga Locale values to change the formatting %a - abbreviated weekday name %A - weekday name %b - abbreviated month name %B - month name %c - same as "%a %b %d %H:%M:%S %Y" %C - same as "%a %b %e %T %Z %Y" %d - day number with leading 0s %D - same as "%m/%d/%y" %e - day number with leading spaces %h - abbreviated month name %H - hour using 24-hour style with leading 0s %I - hour using 12-hour style with leading 0s %j - julian date %m - month number with leading 0s %M - the number of minutes with leading 0s %n - insert a linefeed %p - AM or PM strings %q - hour using 24-hour style %Q - hour using 12-hour style %r - same as "%I:%M:%S %p" %R - same as "%H:%M" %S - number of seconds with leadings 0s %t - insert a tab character %T - same as "%H:%M:%S" %U - week number, taking Sunday as first day of week %w - weekday number %W - week number, taking Monday as first day of week %x - same as "%m/%d/%y" %X - same as "%H:%M:%S" %y - year using two digits with leading 0s %Y - year using four digits with leading 0s like %d %m %y or %a %d %B %Y %p </pre> Shutdown -> right mouse button Scalos, About, Reboot, Shutdown ToolTypes can be added to the Scalos.info icon like *SCALOS_PATTERNNO=<number> : background image matching the number *SCALOS_NOTEXT : The Icon will be drawn without Text. *SCALOS_NODRAG : The Icon will not be draggable. Its position will be fixed. *Module iconproperties - Added SCALOS_BROWSERMODE tooltype support runcommand parameters... in which case: <pre> %p = parameters %w = directory path %d = device-name %% = literal percentage token </pre> With the help of the wbrexx.plugin Scalos gains support for more of the compatible arexx API If an arexx command produces an error you will find the error code placed in the WORKBENCH.LASTERROR variable. ACTIVATEWINDOW <pre> /* Activate the root window */ ADDRESS workbench ACTIVATEWINDOW root /* Activate the "Work:" partition's window if already open*/ ACTIVATEWINDOW "Work:" </pre> CHANGEWINDOW <pre> /* Change the root window; move it to position 10,30. * and change its size to 200100 pixels */ ADDRESS workbench CHANGEWINDOW root LEFTEDGE 10 TOPEDGE 30 WIDTH 200 HEIGHT 100 /* Change the currently active window */ CHANGEWINDOW active 20 40 200 100 </pre> Most of Scalos' issue are due to the flexibility of its' user configuring nature but if The sort menu plugin needs to be ported from ASM to C. IIRC Scalos has a command line option to fully replace Workbench/Wanderer. The Theme: assign is used by both Wanderer and Scalos but I didn't have any problems using both at the same time. The Program will be started from the Shell. If "WB Args" is set, with the Argument "%p" will be replaced by the path of the activated Icons. The Program will started with the specified Stack value. IconWindow: Scalos opens the window of the specified path. PlugIn: Starts a Scalos Menu-PlugIn. If a Menu Item with empty name is specified, Scalos displays a separator line. It's possible to Drag&Drop an Icon in the Configuration Window. All values will be set accordingly. Entries may be dragged across the list. Mac-like selection : This function activates a multiselection method used on MacOS or Win95. Don't have to hold down shift to drag them. Clicking on an already activated icon will not deselect all other icons. MMB move: The window contents may be moved using the middle mouse button. WindowPopup title only: PopupMenu for windows can be opened only on window's title bars. FullBench: Screen-Titles removed and Main Window set Full Size. Scalos Prefs. Go to Settings->Scalos->Prefs and then the Misc section. Remove the tick against Full Bench. If you've enabled it, the titlebar will disappear when you select backdrop. Default Icons saveable : The icons which Scalos generates if "show all files" is enabled, can now be saved using "snapshot" menu option. load DefDisk first : Try to read the icons first from the DefIcons Path before using disk info. Hide hidden files : If this function is activated all files or directories where the "hide" flag is set will not be shown. Many of my Icons display more than once on the screen, while on the workbench all seems ok. The Workbench filters double displayed icons, Scalos does not. Solution: please edit the ".backdrop" file and clear double lines. Background images not scaled. GUIGfx option not set or guigfx.library and/or render.library not installed. If working with CD's causes crashs or Scalos doesn't work correctly. Most Filesystems doesn't support the ExAll function correctly. Disable "Use ExAll" in Scalos prefs. Scalos doesn't start any program in the WBStartup. WBStartup Path may be set wrongly or Scalos was not started in Emulation Mode (LoadWB etc) Some programs will not startup with error message "has not returned, wait some more"? and "unable to open your tool" need a def_icon with the same name predefined, then create an appropriate entry in the list and rename it, if def icon exists it is shown. Below this can define how files are identified. * either "pattern", similar to magellan to identify file by ending * or Then click on the shown icon and define in it what program is used when you double-click on it and save it. On the tab action you can define popup menu for it. All in all handling is of course different to magellan but can do similar For the RAM Icon, to obtain this you have only to copy the icon in the Icon Path as "RAM.info" or "Ram Disk.info". All functions will automatically be performed sometimes cut into half or quarters when scrolled off screen or drawers moved - settings issue probably Sometimes leaves initial drawer window imprint on desktop when moved - settings issue Scalos AROS released a [https://github.com/deadwood2/contrib/tree/master/scalos new build V2022-07-21] with the following changes noted: <pre> Fixed: Numerous crashes when working on 64-bit with 64-bit heap Wrong background color of Scalos logo on Scalos splash window Backgroung image of Scalos splash window and Scalos About window is not visible Icon labels on desktop and in drawer windows are displayed using Topaz instead of Arial font Font.prefs are not being loaded on 64-bit Font.prefs are being wrongly saved on 64-bit scalos.prefs are not being loaded on x86 and x86_64, scalos is using always default preference scalos.prefs are being saved on x86 and x86_64 in format not compatible with m68k NewPopupmenu.prefs is wrongly written Plugins are not loading at Scalos startup wbrexx.plugin is crashing at startup on 64-bit Multiple controls missing on Scalos Prefs/Icons page System crash when clicking on def icon image on FileTypes Prefs/Recognition page Status bar, control bar, buttons sometimes don't have images displayed Buttons in Scalos About window have white corners rendered where they should be transparent Crash when leaving out an icon Crash when adding a User-defined Button to Control bar without setting it's properties in Scalos Prefs Crash when removing any button from Control bar in Scalos Prefs Scalos Prefs allows editing TTEngine font properties when TTEngine is not present causing crash in Icons/Labels and Text Windows/Fonts pages deficons.prefs are not being loaded on x86 and x86_64 Reset to default in FileType Prefs and Save does not save preferences Won't fix: Scrollbars visible on titles of TrueType Fonts, PopupMenu, Menu, FileTypes, Pallette and Pattern pages of Scalos Preferences Not fixed: Wrong rendering on DualPNG icons Refreshing drawer windows is slow Starting Prefs/Locale or Prefs/Input from Scalos causes other preferences to fail Desktop wallpaper is damaged where Splay window was displayed When started from Wanderer, after saving Scalos Prefs, reload does not re-open main Scalos window Difference in behavior between Cleanup from popup menu and Cleanup from top menu - possibly due to missing plugin, check Cleanup association in Menu Prefs </pre> ===DOpus 4 Directory Opus=== Copy DOpus4 app to WBStartup directory folder so it starts on boot up each time Another method is add the below to the bottom of the user-startup script in S: drawer/directory <pre> run DOPUS:DirectoryOpus -i >NIL </pre> makes DOpus starts up in Iconified state at the top of Wanderer's screen. Left click on this to highlight and right mouse click to open. Just click on the sides of either outer edges of DOpus windows and it will display the parent device/volume list. DOpus saves it features in a CFG file which can be edited to suit anyones' needs by reading the [http://archives.aros-exec.org/index.php?function=browse&cat=utility/filetool Dopus Manual] which is in Guide format. ===AmiStart=== Auto generates the apps menu but scans the drive each time - AmiStart can choose apps you are not interested * how to disable annoying zune/mui 'bubbles'? try a right-click on AmiStart and release on Global settings. Then click on the bubbles gadget. Move the Show Bubbles slider all the way to the left. ===BoingIconBar=== User chooses the apps to add to the dock at the centre bottom of the screen but has to be done manually, please use Save afterwards Or easier edit the text file of SYS:Prefs/Env-Archive/iconbar.prefs and save <pre> SYS:System/Shell SYS:Tools/DOpus4/DOpus4 SYS:Utilities/Editor SYS:System/SysMon SYS:System/Scout Work:Extras/Internet/OWB/OWB Work:Extras/Graphics/Lunapaint Work:Extras/Graphics/ZunePaint AROS:Tools/MPlayer/MPlayer Extras:Internet/AmiFox/AmiFox </pre> right mouse click on bottom edge of screen where boingiconbar shows - select settings which opens BoingIconBar Preferences to add apps If no dock showing Add, to add apps click Add Program and search for the executable another method is to drag icons to ends of the bar and move them on the Bar using the Prefs/BoingIconBar ===Icons=== Icons are typically now .png pictures renamed as .info e.g. so Office application name would have a Office.png renamed as Office.info or MyApp.png as MyApp.info, etc. Leave Out menu option to leave app icon on desktop To select multiple icons and save their positions, click on the first icon and after while you hold the Shift key down select further icons and don't release it before SnapShot is finished. You can also select a whole group of icons by pressing the LMB at the top left of the icons and while keeping the LMB down moving the power towards the bottom right. A expanding bounding box will appear and all the icons within it will be selected. Clean Up menu option (right mouse button -> Icons) rearranges icons in a drawer or disk window into a neater condition. To use, open the window to rearrange and select Clean Up. To keep the icons in the new positions, select all the icons (shift key or mouse selection) and select 'Snapshot' and then Window and then again with All. In DOpus5, Scalos, wanderer, most files have an icon file associated with it. To change the default tool, select Icon menu, Information, and change the default tool string. For example, you could use Multiview, Editor and so on for most text, graphics and some sound files as long as the appropriate Datatype classes are installed. For scripts, set the tool to C:IconX C:Join Image1.png Image2.png TO MyFile.info is enough to make a dual state icon from two png images. You can then use Wanderer's menu Icon/Information on it to edit its fields and tooltypes. [http://www.amiga.org/forums/archive/index.php/t-46881.html Amiga OS 3.x AfA icons thread], [http://eab.abime.net/showthread.php?t=66213 Later DualPNG and OS4 icons thread] and [http://archives.aros-exec.org/share/graphics/icon/ Alternative Icons sets] like [http://www.amiga-look.org/artwork/classic-wb-png-iconset-l ClassicWB] [http://www.masonicons.info/6.html AISS toolbar images] unpack unarc them into RAM: and copy Images directory to SYS:Prefs/Presets/ AISS icons are looked for in PROGDIR:, PROGDIR:Images, SYS:Prefs/Presets/Images and then in TBImages: according to Open Amiga guidelines. there is Demos/iconscale which could be launched from S:User-Startup with two arguments, telling it the horizontal and vertical size. IE something like Demos/iconscale 40 40 It will shrink icons... not sure if it will be very nice though. it doesn't work for the icons on the main desktop. there is an option to scale an icon to a bounding box afair, try iconsize followed by two numbers, like: iconsize 32 32 Is there any way in AROS to change an icon type from Project to Tool or vice versa? Either the SIT option of [http://archives.aros-exec.org/index.php?function=showfile&file=utility/workbench/ ProcessIcon], or the TYPE option of HandleInfo (not sure if this one works at all, please test with care). processicon sys:pathoftheicon SIT=Project SIT Set type of ICON. Allowed types are: "Disk", "Drawer", "Tool", "Project", "Garbage", "Device", "Kick" and "AppIcon". Btw, are your icons, the #?.info files, writable, is the W flag set ? ===Fonts=== Install the #?.ttf files to SYS:Fonts/TrueType. Use SYS:System/FTManager to "Install Font" each #?.ttf file which will generate associated #?.otag and #?.font in SYS:Fonts. Use SYS:Prefs/Fonts to change system fonts and SYS:Prefs/Zune to change others. To achieve our goal we will use the Setup Locale, Input, Zune and Fonts, as well as The FTManager. Begin The first step you should do is to get the system to know that we speak and write in another language. What you need to do is to open the setup program and choose Locale country, and list "preferred languages" to put it first and then English. If you want the tab "Time Zone" and select city of residence to set the clock correctly. Of course we save our changes and continue opening the setup program Input. This sets the keyboard language as our beginning. When the language layout was created there was no option to switch to Aros keyboard (layout switching), so to write in the language you had to hold down Alt, something you encounter in other functions. This time working with the team of Aros to create a new keyboard layout to replace the old so we can get rid of the button Alt. For now though let only selected this layout and do not turn the switch on the keyboard. Custom Keyboard Layout [http://repo.or.cz/w/AROS.git/tree/HEAD:/workbench/devs/keymaps keymaps are in place but unfortunately when they are not, then indeed things become a bit 'low-level' as it involves redefining some tables with values that match your keyboards] only need to add your compiled table as new keymap. So taking a little peek here shows that it should be possible to compile using gcc -opc105_tr pc_105.c -nostdlib where the pc105_gr/pc_105.c needs to be replaced with your own adjusted keymapname/c-file [https://en.wikiversity.org/wiki/Enabling_Greek_Characters_on_Your_Keyboard General overview of Greek letters on keyboards] Installing fonts *[http://aminet.net/package/util/wb/EPAGrWb System jaggy] *Outline resizable .font .otag In this step you need to download some fonts that can support the encoding in our system. The easiest way is to run the script "Download Fonts" you'll find in the folder OWB. This script downloads from the Internet, and unpacks some fonts for OWB web browser, which is placed under the folder Fonts:TrueType. But as these can only be used by OWB and not the system, which unfortunately does not see. To make them available to the rest of the system, open the program FTManager, you will find the folder AROS: System /. From there select the field "Codepage" option "ISO-8859-7" and list the font "Arial" and "Regular" form in which you must double-click with the mouse. In the window that appears, select the bottom right the checkbox "Anti-aliasing" button and then "Install". Immediately folder Fonts: created files "arialregular.font" and "arialregular.otag", which are necessary in order to see the system font. Do the same steps if you wish for other fonts. Final stages After completing the above, open the folder AROS: Prefs / and run the program settings Fonts. In the new window, select the fields "Icons" and "Screen" as the font "ArialRegular" to the size you want. In the field "System" to give "s_courier", which, however, because it is not True Type Font support Antialising, and may seem a little broken. You can also use the CourierNew, if you have installed the above procedure. After you save the changes and open the Zune program settings. In this set the "ArialRegular" font fields in tabs "Windows" and "Groups", and save the changes. Reboot the system. To make sure that the above worked properly run NoWinED, which you will find under the folder AROS: Tools /. If that everything is working correctly you will see the menu and the settings window with Greek letters. You can also write in the language using the button Alt. Second program that you can try, which is fully localized, is WookieChat, which you will find in the folder AROS: Extras / Networking. And in this place all the menu and settings window works. ===Windows=== *Intuition The window you position and resize, you right click on that windows title bar and in the dropdown menu you snapshot from there. Right click to show menu -> Window -> Snapshot Windows or All but it will NOT work if that folder has no icon (e.g. Disk.nfo) attached to it. You need a folder icon. The window information gets saved in it. As for maximising the window using a shortcut key - Alt and up arrow key The AROS-Shell windows can be moved, resized by editing sys:s/icaros-sequence <pre> ; run shell if ${Icaros/autoshell} EQ true run QUIET c:newshell >NIL: EndIF </pre> ; slimmer right aros the screen run QUIET c:newshell con:0/150//300/ >NIL: ; top right corner scr-x scr-y win-x win-y run QUIET c:newshell con:600/150//300/ >NIL: *Zune - AROS version of MUI Magic Menu type functionality is implemented in IControl preferences editor: in the frame called Menus, switch type from Pull-Down to Pop-Up and/or iControl just tick the sticky menu option. Windows outside screens causing a problem either uncheck "Offscreen move" for windows in IControl prefs editor. Or use FKey commodity and define two key shortcuts: * the first using the command "cycle windows" (for example ALT TAB); * the second using the command "rescue window" (for example ALT F5). Now you can cycle windows until the one you want to rescue, and then "rescue" it: it will move back inside your screen. How to save the window size on wanderer (snapshot all, snapshot windows) Same for icon position on wanderer, can't save the position. Icon position cannot be saved yet, but you should be able to save the window position and size. sys:prefs - wanderer icon has option to save window size on exit but just for dh0. To get saving working on (DH1: Extras:) partitions try deleting the dh1 disk.info file, then reboot. The system should create a new dh1 icon. * how to set up permanently 'view all files'? As for viewing all files, removing disk.info for that disk did the job * how to list and kill processes (xkill would be useful) ? sys:Extras/System/Scout can kill apps sys:Tools/Commodities/Exchange can remove available commodities * how to restore 'go up' button in wanderer window? (it doesn't show up anymore). If you're using Icaros, go to the theme prefs and make sure that decoration is checked. Also, some themes do not use a parent button, so try another theme. You may have to restart Aros before the theme will change. * Is it really safe to turn off (hardware button) computer at any time (worried about USB hard disk) yes you can turn off the computer IF none of the drives are in progress (i.e. writing). Best to use Wanderer menu option Quit otherwise ===Printing=== This is still work in progress print from my AROS box! <pre> 1. installed printfile ( http://www.lerup.com/printfile/ ) on my Windows XP computer 2. set up the print spooler option, and used ghostscript filter for ps files 3. made the spool folder accessible from ftp (setting up ftp server on Windows) 4. send the ps file from my AROS box to the ftp server using curl (curl -T filename ftp://windows.box.adress --user username:password) </pre> It's a bit complicated but it works! *Postscript Best to set Printer Prefs in the Prefs drawer to print-to-file or parallel/USB port Save document in postscript or convert picture/text to postscript Print using compatible [http://en.wikibooks.org/wiki/Aros/Platforms/AROS_USB_support#printer.class_-_PostScript_3_and_internal_ghostscript_drivers Ghostscript printer] or Postscript printer *GutenPrint Some work has been done ;There are no individual drivers yet for HP's Photosmart, EPSON's EPL, CANON's, Lexmark, CUPS PPD, etc. ===Files=== ====File endings and datatypes==== * Check if the file has his own .info icon file with a tool set to open it. IIRC this has higher priority over the def_XYZ.info file association. * In ENVARC:SYS/def_Text.info or whatever def_ file needs changing, use Wanderer's menu Icon -> Information and change the def_XYZ.info there. If you're on ABIv0 and want it to be applied immediately, you might have to copy it to ENV:SYS/ (or to reboot). * Identifying file types by file ending is only a fallback. Far better it is to search for magic words, for flac files this would be "flaC" according to this [http://flac.sourceforge.net/documentation_format_overview.html documentation]. For instance, to open PDFs with arospdf not localised in the default drawer of Icaros (Work:Extras/Applications/arospdf) but localised in a custom drawer in AROS. The default tools are defined in the icons in sys:prefs/env-archive/sys e.g. def_PDF. File type identification is done by datatype descriptors which you can find in Devs/Datatypes. The AROS build system has a tool which creates such datatype descriptors. '''Changing of default tools of existing icons is easy as shown above. Adding of new file types is not hard, but needs knowledge of the AROS build system.''' The enduser way would be to download the attached file, which contained two executables: 1) createdtdesc, to make a new datatype description 2) examinedtdesc, to read/show existing datatype descriptions use 2 to get an idea on how it things are currently done in aros by providing this executable a file from the drawer sys:devs/datatypes/ (alternatively you can find the original .dtd files here). use 1 to make your new datatype. Use the accompanied FORMAT file (also here) to read how to make your own datatype descriptor. use 2 to get hints from other datatype descriptors. Note: When creating a new descriptor would advise against using the pattern property, but instead use the default pattern of #? and create a Mask that matches your filetype. This requires some research in order to discover how your filetype can be recognized properly. Of course with making something like a descriptor for an ascii textfile, you would fallback to using the pattern (e.g. #?.text as the filetype cannot be determined easily otherwise). <pre > # name - choose wisely and informative. also used for icon's name. # version - choose as you like as long as it complies with version rules # basename - the 'root' datatype class. be aware that e.g. it can influence behaviour. for example when choosing binary and using tool multiview in project icon, the file will be viewed as binary file (choosing sound would tell mulitview to view the file as a soundfile). So this can influence the underlying tool being used. Could become messy if users started to modify the tool manually. # pattern - This is the file pattern match e.g. #?.text # Mask - A mask to identify the file. Requires knowledge of the actual file structure. For example 'M' 'Z' for an msdos executable. # GroupdID - not supported (AROS native) files - use syst as that would be the least intrusive in case an AROS tool/program tries to load such datatyped file. # ID - In your case, the first four characters of the name at subchapter 1 (in lower case) (or less if name is shorter). # flags - How the mask needs to be interpreted. In your case would be mostly DTF_BINARY in combination with (wanted or not) DTF_CASE (to tell if mask used letters are case sensitive or not) # priority - the priority of how the type is handled so that on datatype could have precedence over another? In any case, document tells it to be mostly 0. </pre > Now that you know each field and what it does (more or less), you write this fields in a text file for your own invented datatype, save it and create the actual dt with the tool in 1. in the end the created dt must reside in sys:devs/datatypes/ drawer. Then you would create a default icon in sys:prefs/Env-archive/SYS drawer. Don't forget to reboot or copy .info file to ram:env/sys in order to test. also don't forget to set which tool to start f.e. c:lx or dh4:emulators/mycoolemulator To test, open Wanderer then show all files and doubleclick on a file of type you just created. Alternatively you could use the 'open' command from shell (with file of datatype you just created as parameter). And as a last note. it would perhaps be welcome to have a program like xicon and/or runprglist for AROS (unfortunately both without source, but something similar could be created for AROS). Sounds complicated ? Perhaps... but OS like windows needs a complete registry to be able to do things like this. And yes, i am aware windows has gui tools that does it (more or less) for you (by manipulating the registry). Same could be done for AROS (without integrating a registry in AROS that is ). Would that suffice ? red1+2: typos, reformatting. disclaimer: please note that using these tools can screw up your currently installed support for datatypes when used incorrectly. Do not use if you do not understand what you are doing. Use at own risk. ==Network Connection== AROS currently only has one real choice for TCP/IP networking - AROSTCP. This is a port of the AmiTCP package from AmigaOS (TM), with a number of enhancements/fixes from AROS developers. Please use Prefs/Network to set up wired, wireless or USB networking Non USB wifi is easier, USB wifi can be an annoyance - remember to save whilst in prefs ===Wired=== =====IPv6===== No support so far 128bit IPv6 address packet <pre> Local FD::/8 Global 2000::/3 64:ff9b::/96 </pre> NAT64 translates IPv6 to IPv4 DNS64 OS routing works with <pre> MacOS Ventura Windows 11 with cloud account Ubuntu Jammy Jellyfish Android 10 (block google dns) </pre> ====IPv4==== The top half of the IPv4 Configuration tab on the Network Prefs deals with the network card/USB and the lower half the router part. [[File:AROS Wanderer Network Prefs DHCP.png|thumb|DHCP Settings]] '''Upper part of IPv4 tab''' * Click Add on the top right of the Prefs which opens a window called '''Interface''' * Enter Name as net0 (but can be anything as long as it is consistently used in other sections) * check mark on Active * select device to be used using the '''right hand-side gadget''' of the box where the device name will go * set Unit to 0 * IP Mode is default set to '''Get address from DHCP''' * IP Mode set to Manual if DHCP does not work automatically From the shell CLI, ifconfig -a Under net0: section, inet starting 192.168.x.xxx * inet or '''Address''' of network card * netmask convert to decimal so 0x'''ffffff7f''' becomes 255.255.255.247 which is used to adjust the above '''Address''' into * broadcast 192.168.xxx.xxx click OK [[File:AROS Wanderer Network Prefs Manual.png|thumb|Manual Settings]] '''Lower part of IPv4 tab''' * IP Mode Get address from DHCP (default) * or changing to Manual if automatic DHCP set up does not work * '''Gateway''' (Router Internal LAN-IP) (Default Route) = 192.168.0.1 (D-Link Netgear), 192.168.1.1 (Linksys 3com), 192.168.2.1 (SMC Microsoft), 192.168.1.254 (Belkin), 192.168.123.254 (USRobotics) else check with your router manual * first DNS = use 208.67.222.222 (opendns) or Gateway number above (to test web browser access to router) or 212.50.160.100 (google) i.e. or whatever your ISP needs you to set * second DNS = use 208.67.220.220 (opendns) or Gateway number above (to test web browser access to router) or 213.249.130.100 (google) i.e. or whatever your ISP needs you to set * At the bottom of IPv4 tab, check mark the '''Start networking during system boot''' option * Save and reboot (sometimes Network restart fails, so reboot every time to be sure) '''an alternative way''' to AROS ifconfig -a, other OSs have similar for the same internet connection. Another connection will have different settings. e.g. From [http://www.ncsu.edu/resnet/windows/ipconfig/ Windows], '''ipconfig /all''' and note down the IP, subnet mask, default gateway, and DNS servers values and put these values in "manually" into AROS Network prefs. e.g. From Linux via dhcp router have a look at etc./dhcpc/dhcpcd-eth0.info * for manual input look at /etc/networks (IP or Gateway) and /etc/resolv.conf (DNS) Please note that all in one routers (wired+wireless) or separate routers may need different settings IPv4 involves routing (192,168.x.x), firewall, NAT ===Wireless=== [[File:MyArosWirelessSetup.png|thumb|Setting up]] [[File:MyArosWirelessTCP.png|thumb|Shell commands to work out what is happening]] We must first make certain you have a Atheros 5k chip inside acting as the wireless wifi option. Open PCITool in Tools directory. Down left hand side are a series of numbers 0.00.0 etc. Click on some at the bottom and hopefully one of them will say Atheros AR5??? or AR242?. or a Realtek RTL8187B, we can check using Prefs/Trident as this one is USB based There are many similarities with the above Wired set up so please read the above section as well * open Network/Prefs * In '''IPv4 Configuration''' tab - click Add - enter net0 / active tick / #?.device / Unit 0 / IP Mode = manual (important if default DHCP does not work automatically) Make sure that any extra network names (e.g. eth1 or net1) should be deleted. If net0 already st previously, change net0 so that it shows associated with the appropriate device name like atheros5000.device or realtek8180.device. Having two entries here will cause sub-net problems. * Go to '''Wireless''' tab and click on "Add" button. * Insert network name (SSID your wireless network name use wirelessmanager to get it), select right "encyption" that is most likely "WPA". * Key Type set as "Passphrase". i.e. type in your password for your router (aka access key). * Unselect (no tick) "hidden" if it is selected, then apply. You may have to tick it if wireless does not work. * Finally, Save and '''reboot'''. For the best chance of success, set networking to start at boot, and then reboot with the USB adapter plugged in. ===USB Ethernet=== Open SYS:Prefs/Network and in the IPv4 Configuration tag (top table covers your usb stick) * click Add button * set Name as net0 * Tick Active box * enter the usb-ethernet.device e.g. dm9601eth.device, usbpegasus.device or usbasixeth.device use SYS:c/devlist, '''Scout''' or trident prefs to get the correct spelling * set Unit to 0 (which is usual but check the messages from the bottom of the Trident prefs whilst plugging the device in to determine the unit number otherwise) * IP Mode is set to Get address from DHCP (make sure your router is set right for that) '''or manual''' * IP Address of network card, i.e. 192.168.0.xx or 192.168.1.xx (xx being greater than 1) * Subnet netmask = 255.255.255.0 * click OK There can be sometimes be boot failures when using USB ethernet - plug the USB device in after boot and save the network prefs to make it work again. Lower part of IPv4 tab covers the router information * IP Mode Get address from DHCP '''or if manual settings''' * Gateway (IP Address of router) = usually 192.168.0.1 or 192.168.1.1 but see router manual to make sure. * first DNS = use 8.8.8.8, 208.67.222.222 (opendns) or 212.50.160.100 * second DNS = use 8.8.4.4, 208.67.220.220 (opendns) or 213.249.130.100 ===USB Tethering via Android smartphone=== Go to AROS Network Prefs (IPv4 configuration tab) and write type in "usbrndis.device" in the "device" textfield of "Interface" sub-window, which appears when you add a new device (or modify an existing one). Select "Start Network during system boot" and saved the configuration, the Connection is immediate no reboot is needed.<br> usbrndis.device is a resident device (virtually always there) in fact, a driver is not present in DEVS:Networks <br><br> Plug in USB cable, go to Android settings and enable "USB Tethering" <br> A reboot should not be necessary. When restarting AROS, the Smartphone deactivates the connection and to access the network again have to reactivate it before starting the browser. ===Solving Issues=== [[File:MyArosTCP.png|thumb|Aros network setup diagnostics - why does it not work?]] * In Network Preferences, have '''only one''' item in the IPv4 Configuration tab * If using manual settings, make sure all numbers are correct, especially for IP address of the card/usb (changing the last number in chain of four) * For any USB based networking, it is often necessary to save in Prefs/Network, reboot AROS and network support can begin * For wired, make sure that the LAN-cable is plugged in before starting the computer * If wireless, try getting closer to the router. * Switch off the encryption option from your router then try wifi, if successful then your ip/dns is ok. If not then your ip/dns settings are most probably wrong or need to use one or more opendns numbers * Replace detachable wireless antenna (best wireless option to buy if you can) with a stronger antenna ie. 5&nbsp;dBi or 7&nbsp;dBi * Try with another computer/laptop/machine Program Error C:WirelessManager * Test with another OS * Check that Wifi works before changeover (if possible) * Check that socket and card are working * Check if card is too new for laptop (date code on card MMYY blue askey date 2005-2007 etc) Are you connecting with the Router ? Check with protection off e.g. wps and wep to see if it makes a difference. For USB wireless - stopping and starting may be needed... <pre> ; $VER: AROSTCP-startnet 1.0 (01/08/06) ; AROSTCP-startnet (c) The AROS Dev Team. ; Run <NIL: >NIL: AROSTCP WaitForPort AROSTCP If NOT Warn ; echo "Stack online" Else echo "Wait for Stack Failed" EndIf ; stop and restart execute "sys:system/network/AROSTCP/s/stopnet" Run <NIL: >NIL: AROSTCP WaitForPort AROSTCP If NOT Warn ; echo "Stack online" Else echo "Wait for Stack Failed" EndIf run <NIL: >NIL: wirelessmanager realtek8180.device </pre> What IRQ number is assigned to the device? You can check with Tools/PCITool? It's possible the BIOS hasn't set the right IRQ number. If you have a Linux CD/DVD handy, could you check if it boots with the options "acpi=off noapic nolapic"? If the following does nothing, this will help us figure out why networking doesn't start automatically at boot open a shell and run the following commands: <pre> echo ${AROSTCP/AutoRun} echo ${AROSTCP/WirelessAutoRun} echo ${AROSTCP/WirelessDevice} </pre> Please report the output, typically it will look like this # True (explanation this variable is related to the "Start networking during system boot" checkbox in network prefs) # True () # Devs:networks/atheros5000.device unit 0 If there's a problem with the AROSTCP package. What's the output of this? ENV:sys/packages/AROSTCP should return a string = Sys:System/Network/AROSTCP By the way, a quicker way to check networking is working would be to run some shell commands such as: <pre> ping www.google.com ifconfig net0 </pre> The best way to list the available networks and diagnose / troubleshoot problems with connecting to a wireless network is to run WirelessManager manually. First uncheck the "Start networking during system boot" box in the Network prefs app, then save and reboot. Then run this in a shell: C:wirelessmanager atheros5000.device verbose or C:wirelessmanager realtek8180.device verbose and capture the output If the above does not help, could you edit the file SYS:System/Network/AROSTCP/S/Package-Startup, and change ">NIL:" to ">T:wifi.log" on the WirelessManager line and add this as well Wait 5? <pre> if ${AROSTCP/WirelessAutoRun} eq "True" Run QUIET "C:WirelessManager ${AROSTCP/WirelessDevice} >T:wifi.log" wait 5 EndIf </pre> Then save, reboot and post the log file (T:wifi.log) here. <pre> c:wirelessmanager atheros5000.device verbose Initializing interface 'atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Reading configuration file 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=7) 65 63 68 65 6c 6f 6e echelon PSK (ASCII passphrase) - hexdump_ascii(len=14): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='echelon' Then it just sits there. Not sure what a normal dump looks like, I don't see anything that looks wrong in the configuration. </pre> looks like the driver isn't working with that card. Has anyone else successfully used that exact model number (AR2413)? <pre> Initializing interface 'atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=7): 65 63 68 65 6c 6f 6e echelon PSK (ASCII passphrase) - hexdump_ascii(len=14): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='echelon' *** [wpa_sm_init] sm->pmksa=02c66fd4 *** Own MAC address: 00:01:36:15:ae:0c RSN: flushing PMKID list in the driver Setting scan request: 0 sec 100000 usec EAPOL: SUPP_PAE entering state DISCONNECTED EAPOL: Supplicant port status: Unauthorized EAPOL: KEY_RX entering state NO_KEY_RECEIVE EAPOL: SUPP_BE entering state INITIALIZE EAP: EAP entering state DISABLED EAPOL: Supplicant port status: Unauthorized EAPOL: Supplicant port status: Unauthorized Added interface atheros5000.device:0 State: DISCONNECTED -> SCANNING Started AP scan for wildcard SSID MLME: starting scan MLME: scan channel 1 (2412 MHz) sana2: sending MLME frame Then it stops. Does this mean the router is not authorizing this NIC? IRQ 4 (A) </pre> apparently locking up when the first frame is sent (a scan request). <pre> Devs/Networks/atheros5000.device:0 Initializing interface 'Devs/Networks/atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Reading configuration file 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=12): 41 69 72 4c 69 6e 6b 35 39 33 30 30 AirLink59300 PSK (ASCII passphrase) - hexdump_ascii(len=8): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='AirLink59300' *** [wpa_sm_init] sm->pmksa=0224e444 *** Own MAC address: 00:1f:e1:42:e3:7a RSN: flushing PMKID list in the driver Setting scan request: 0 sec 100000 usec [eloop_reg_timeout] Timeout is at 1317686594.160000 EAPOL: SUPP_PAE entering state DISCONNECTED EAPOL: Supplicant port status: Unauthorized EAPOL: KEY_RX entering state NO_KEY_RECEIVE EAPOL: SUPP_BE entering state INITIALIZE EAP: EAP entering state DISABLED EAPOL: Supplicant port status: Unauthorized EAPOL: Supplicant port status: Unauthorized [eloop_reg_timeout] Timeout is at 1317686595.060000 [eloop_reg_timeout] Timeout is at 1317686604.060000 Added interface Devs/Networks/atheros5000.device:0 [eloop_run] Starting State: DISCONNECTED -> SCANNING Starting AP scan for wildcard SSID MLME: starting scan [eloop_reg_timeout] Timeout is at 1317686594.160001 MLME: scan channel 1 (2412 MHz) [eloop_reg_timeout] Timeout is at 1317686594.193000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.233000 MLME: scan channel 2 (2417 MHz) [eloop_reg_timeout] Timeout is at 1317686594.253000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.293000 MLME: scan channel 3 (2422 MHz) [eloop_reg_timeout] Timeout is at 1317686594.333000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.373000 MLME: scan channel 4 (2427 MHz) [eloop_reg_timeout] Timeout is at 1317686594.393000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.433000 MLME: scan channel 5 (2432 MHz) [eloop_reg_timeout] Timeout is at 1317686594.473000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.513000 MLME: scan channel 6 (2437 MHz) [eloop_reg_timeout] Timeout is at 1317686594.553000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.573000 MLME: scan channel 7 (2442 MHz) [eloop_reg_timeout] Timeout is at 1317686594.613000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.653000 MLME: scan channel 8 (2447 MHz) [eloop_reg_timeout] Timeout is at 1317686594.693000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.713000 MLME: scan channel 9 (2452 MHz) [eloop_reg_timeout] Timeout is at 1317686594.753000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.793000 MLME: scan channel 10 (2457 MHz) [eloop_reg_timeout] Timeout is at 1317686594.833000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.853000 MLME: scan channel 11 (2462 MHz) [eloop_reg_timeout] Timeout is at 1317686594.893000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.933000 MLME: scan channel 12 (2467 MHz) [eloop_reg_timeout] Timeout is at 1317686594.973000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.013000 MLME: scan channel 13 (2472 MHz) [eloop_reg_timeout] Timeout is at 1317686595.033000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.073000 EAPOL: disable timer tick EAPOL: Supplicant port status: Unauthorized MLME: scan channel 14 (2484 MHz) [eloop_reg_timeout] Timeout is at 1317686595.113000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.153000 MLME: scan channel 1 (2412 MHz) [eloop_reg_timeout] Timeout is at 1317686595.193000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.213000 MLME: scan channel 2 (2417 MHz) [eloop_reg_timeout] Timeout is at 1317686595.253000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.293000 MLME: scan channel 3 (2422 MHz) [eloop_reg_timeout] Timeout is at 1317686595.333000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.353000 MLME: scan channel 4 (2427 MHz) [eloop_reg_timeout] Timeout is at 1317686595.393000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.433000 MLME: scan channel 5 (2432 MHz) [eloop_reg_timeout] Timeout is at 1317686595.473000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.493000 MLME: scan channel 6 (2437 MHz) [eloop_reg_timeout] Timeout is at 1317686595.533000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.573000 MLME: scan channel 7 (2442 MHz) [eloop_reg_timeout] Timeout is at 1317686595.613000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.653000 MLME: scan channel 8 (2447 MHz) [eloop_reg_timeout] Timeout is at 1317686595.673000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.713000 MLME: scan channel 9 (2452 MHz) [eloop_reg_timeout] Timeout is at 1317686595.753000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.793000 MLME: scan channel 10 (2457 MHz) [eloop_reg_timeout] Timeout is at 1317686595.833000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.853000 MLME: scan channel 11 (2462 MHz) [eloop_reg_timeout] Timeout is at 1317686595.893000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.933000 MLME: scan channel 12 (2467 MHz) [eloop_reg_timeout] Timeout is at 1317686595.973000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.993000 MLME: scan channel 13 (2472 MHz) [eloop_reg_timeout] Timeout is at 1317686596.033000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686596.073000 MLME: scan completed </pre> Is your network hidden? If so, did you enable the 'Hidden' checkbox in the network prefs? What distro version are you using? <pre> "ENV:sys/wireless.prefs" looks like this: network={ ssid="testadhoc" key_mgmt=NONE wep_key0="12345" wep_tx_keyidx=0 } </pre> If your router doesn't broadcast its SSID (hidden), you need to add this option to the network block of the wpa_supplicant.conf on your aros machine and make changes after # Example blocks: scan_ssid=1 Here's a full description of all the [http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/wpa_supplicant.conf config file options]. <pre> ap_scan=1 network={ ssid="YOURESSID" scan_ssid=1 proto=RSN key_mgmt=WPA-PSK pairwise=CCMP group=CCMP psk=YOURPASSWORD } </pre> <pre> filter_ssids=1 ap_scan=2 network={ ssid="REMOVED" scan_ssid=1 bssid=REMOVED priority=100 mode=0 proto=RSN key_mgmt=WPA-PSK auth_alg=OPEN pairwise=CCMP group=CCMP psk=REMOVED } </pre> Error 6: Couldn't resolve host name. Check Scout -> Devices and look at the device that you are using, in the OCnt column it should state 2 which means AROSTCP and Wirelessmanager are both accessing this driver. If 0 or 1, then uncheck the checkbox in Network prefs for starting networking at boot, save and reboot. Then run this is the shell: C:WirelessManager realtek8180.device unit 0 some quirks setting up the wireless network as well 1) it's far better setting up either the wired OR the wireless network adapter as net0:, or weird things happen 2) it's better using fixed IP on the local network instead of DHCP 3) network setting must be placed in network setting panel in /prefs, using the wirelessmanager helped me finding available SSIDs, but not actually connecting to them once done, reboot. If previous setup is proving problematic <pre > SYS:Prefs/Env-Archive/Wireless.prefs SYS:Prefs/Env-Archive/Zune/OWB.config SYS:Prefs/Env-Archive/Zune/global.config SYS:Prefs/Env-Archive/AROSTCP/WirelessDevice SYS:Prefs/Env-Archive/AROSTCP/db/Interfaces </pre > Make a copy of these files and restore in case of problems. Please try this test to check if you can connect to your router, ie established that the WiFi layer is working ̊̊̊̊Boot with networking disabled, by make sure that "Start networking at boot" in Network Prefs is unchecked (no tick). ̊ Run this in a shell: C:WirelessManager atheros5000.device VERBOSE ̊If the output of that command is too long to summarise here, you can redirect it to a file by adding >RAM:wifi.log to the end, then attach or paste that file here. try running "status" in the shell and check that AROSTCP is listed/running If AROStcp is not showing, then AROSTCP is not running. attempted to start it by clicking Use or Save in network prefs, or checking the "start networking at boot" box or typing into a shell. Execute SYS:System/Network/AROSTCP/s/startnet (run Status again afterwards). The "cannot resolve hostname" will appear if you are blocked on the wifi network by the router as well as aros not being able to assign correct network address. One way of testing this might be to disable the firewall in the router. you might also check the router how it sees the attempts aros do to speak to it. The easiest way to do that would be to manually give aros an IP number in the routers accepted range. and see if it shows up at all within the router. Tests that can be undertaken to determine correct settings and functions pciinfo sanautil -d broadcom4400.device status <pre > ping <router-address> e.g. 192.168.0.1 (aka inet) or 80.237.146.33 (www.amiganews.de) ifconfig net0 ifconfig net0 up extras:networking/utils/sanautil/sanautil -d atheros5000.device status WirelessManager atheros5000.device verbose >RAM:wifi.log ;to send the log to RAM disk to be read easier or if detected, Run WirelessManager atheros5000.device >NIL: Run WirelessManager atheros5000.device ssid="mynet1" >NIL: C:WirelessManager realtek8180.device unit 0 </pre > Please look at the task list in Scout, and check if WirelessManager and AROSTCP are running. Also look at the device list in Scout to check if realtek8180.device is open. start tools/debug/sashimi, maybe it shows some debug messages when disconnection happens. Firstly, let's take a look at what your setup most likely looks like, assuming you use a router. See diagram below: <pre> Internet <---------> home router <---------> computer -----------external IP------------------internal IP------------- </pre> Okay, so what am I trying to show you with that diagram. A few things. Firstly, the IP address that connects you to the Internet is not the same one that connects you to your router. What happens is that your computer doesn't have a direct connection to the Internet, instead your router connects to the Internet, and your computer connects to the router. You can see the external and internal IP addresses in these example settings... * Default Gateway : 76.91.64.1 (external IP for ISP/Internet host) * IP Address : 76.91.71.184 (external IP for home router) * IP Address : 192.168.0.1 (internal IP for home router) * Address = 192.168.0.161 (internal IP for computer) As you can see, there are two internal IP addresses and two external IP addresses. This is because there is a client/server relationship, effectively one address is for the service (server) and one address is for the device trying to access that service (client). The server addresses in your case are 76.91.64.1 (your ISP's address, serving the Internet), and 192.168.0.1 (your home router's address, serving your home network). The term gateway applies here, they are your gateway to those services. Subnet masks are used along with IP addresses to determine which IP addresses are allowed access to a network. I did learn the more in-depth rules about subnet masks once (watched a CCNA vid), but I've forgotten about it. The basic level of understanding you'll need is easy to remember though. A subnet mask value of 255 means that portion of the IP address must stay constant, whereas a subnet value of 0 means any unassigned value up to 255 is allowed in the IP address. By far the most common subnet value is 255.255.255.0. What this means is that the first three parts of the IP address you use to connect to a service must stay the same as the server/gateway address, and only the last section can change. So if your router's internal IP address is 192.168.0.1, and the subnet mask is 255.255.255.0, the only addresses that will be allowed to be used on that network are between 192.168.0.2 and 192.168.0.255 (I think 192.168.0.0 is reserved for other uses). Final point to make is about DHCP (a.k.a. dynamic IP) vs static IP. A server/router using DHCP gives a device that connects to it an address within the acceptable range. It usually starts with the lowest numbered free address, so with your router it'll give the first device that connects to it 192.168.0.2, the next device 192.168.0.3, and so on. Static IP addresses are where you set the IP address you want to connect with in advance. When using static IP addresses on a router where DHCP is active, it's good to use a high number to avoid conflicts with other devices that are connected to your network, to reduce the risk that both devices will try using the same IP. That's why your current choice of 192.168.0.161 is good, unless you have over 159 devices connected on your current network! Okay, so what's the next step. Well, if you can use ping, I'd suggest pinging 192.168.0.1. If you get a positive response it means you're connected to your router, if you don't get a response it means the connection between your router and your computer is at fault. Documentation on configuring the AROSTCP environment further can be found [http://en.wikibooks.org/wiki/Aros/User/Networking here] ===File Sharing=== As AROS knows only a few filesystems (FFS, OFS, SFS, PFS (amiga only), FAT12, 16, 32, Microsoft NTFS (windows), UDF (Blu-ray)). The others in regular use like MacOSX hfs+, Linux ext2/ext3 and ext4, Haiku BeFS provide a problem in transferring files. Linux can access SFS partitions but it needs to be compiled. The latest full source are [http://home.elka.pw.edu.pl/~mszyprow/programy/asfs/ here]. It compiled fine with a 2.6.30 kernel in Puppy Linux 4.31. An alternative, is to use a FAT32 partition to share. Setup first with a 2G FAT32 partition for sharing, and the rest of the space as SFS for an Aros install. It works very well. Files could be transferred via TCP internet network. ====SMB2/3==== With Windows you can share one folder or all folders of the "Public" user. On Windows what is important is to enable sharing (Network and Sharing Center). AROS Mountlist should look lke this <pre> Handler = L:smb2-handler StackSize = 65536 Priority = 5 GlobVec = -1 ACTIVATE=1 Startup = "smb://UserAcc:password@PCShare/Sharefolder" </pre> which could also be "smb://UserPC:password@192.168.x.x/Public" or "smb://UserPC:password@Name-PC/Public" so "smb://UserPC:password@192.168.1.158/Folder" or "smb://UserPC:password@Name-PC/Folder" After you have configured a share generates a DOSDrivers it is named "SMB0" which includes the setting, and at each reboot it is Mounted. You can still delete the DOSDriver by hand, is located in Storage/DOSDrivers, the file "ServerAutoMounts", in ENV:AROSTCP which indicates the DOSDriver to be mounted, should also be deleted. The per-mount files are written to ENV:SMB or SYS:Storage/DOSDrivers. There is also additional file ENV:AROSTCP/ServerAutoMounts which states what will be presented to the end user. ====Old SMBFS==== e.g. to connect to a NAS share such as \\NASBOX\Shared use -: SMBFS WORKGROUP=<YOUR WORKGROUP NAME> VOLUME=<AROS volume name to use>: SERVICE=<UNC Path to connect to> SMBFS WORKGROUP=MYNET VOLUME=Shared: SERVICE=//NASBOX/Shared And you will then have an icon appear on your desktop for the volume name you have chosen. You can put the above script into wbstartup or give it an icon, change it to a 'project' and give it the default tool c:iconx Open a shell and type copy sys:script.info "sys:wbstartup/YOURSCRIPTNAME.info" This should create an icon for your script file. Now right-click on your script and select 'information'. Change 'tool' to 'project', put 'c:iconx' into the 'default tool' box, click save The reason being that scripts need to be opened with 'execute SCRIPTNAME' (or 'iconx') whereas the programs started from wbstartup are opened using 'run PROGRAMNAME'. It's the same as trying to start a command-line tool from the workbench by double-clicking it. ====Setup ISO images within AROS==== Use [http://archives.aros-exec.org/index.php?function=browse&cat=driver/storage DiskImage] which supports many cd image formats ISO, CCD, MDF/MDS, CUE/BIN, NRG and UIF. To mount CD or DVD images use below.... <pre > # Rename your iso 'Unit0' (note no extension). # Do 'View/All files' on you Aros partition. You should now see a folder called 'Diskimages'. Copy your renamed iso to there. (Alternatively, you could type at the shell 'assign FDSK: xxx', where xxx is the location of your iso.) # From the shell, type 'mount CD0:' and the iso should appear on the Wanderer desktop. You can now access it like a real disk. </pre > assign devname: dismount Assign DOSVOLUME: remove [http://aminet.net/package/disk/misc/unmount-0.1 unmount] most filesystems work but SFS lacks support for ACTION_DIE packet If you are using an IcAros install, the startup scripts are set up to wipe the Diskimages directory on boot, so its worth keeping a second copy of the iso somewhere else. Alternatively, you could set up extra mountlists for additional iso images. I've made a file called iso1 in the Aros:devs directory that contains the following text: <pre> /* Entry for ISO image */ ISO1: FileSystem = cdrom.handler Device = fdsk.device Unit = 1 LowCyl = 0 HighCyl = 0 Surfaces = 1 BlocksPerTrack = 1 DOSType = 0x41434400 Activate = 1 # </pre> Then I just need an iso called 'Unit1' (corresponding to the 'Unit = 1' entry in the mountlist) in Diskimages (or wherever I assign FDSK: to) and to mount I type in at the shell: Mount iso1: from devs:iso1 Of course, if you create mountlists for ISO2, ISO3:, etc. (with the corresponding change to the 'Unit = ' line) you can have as many isos mounted as you wish. I just call mine ISO1: etc. to distinguish them from the real CD drives ==Video Guides== Video demonstrations and tutorials covering: :00. '''Introduction''' ::[https://www.youtube.com/@jamesmattson6813/videos Various Aros Installs], ::[https://www.youtube.com/embed/j8EmSEby0Rg AROS repo in gource, view of AROS dev commits from 1997 to 2025], [http://www.youtube.com/watch?v=Vx_zqlBow40&feature=related Gource view of AROS 1997 up to 2009], ::[http://www.youtube.com/watch?v=s1RsvEm7UrU Why an Amiga OS in 2011], ::[https://www.youtube.com/watch?v=1W886mheV74&pp=ygUPYW1pZ2EgYXJvcyAyMDI2 Johan Grip on early days of AROS x86], [https://www.youtube.com/watch?v=mXaKDhtTTqQ&t=14s&pp=ygUPYW1pZ2EgYXJvcyAyMDI2 Michel Schulz on Aros and PiStorm], :01. '''Installation''' ::[https://www.youtube.com/watch?v=M7YjufrJqDs Aros One install], [https://www.youtube.com/watch?v=iIMguHTdC5E Aros One USB install], [https://www.youtube.com/watch?v=ZNXauy5m5Wc Aros One install], [http://vimeo.com/11013489 Modify Grub boot], ::[http://www.youtube.com/watch?v=wyQVeyXIywc&feature=channel iMica Silent Pt3], [http://www.youtube.com/watch?v=o2AnkoflY14 Wipe whole drive and Install - warning loss of data on drive], ::[http://www.youtube.com/watch?v=OVXm6_-witQ VirtualBox install], [ VMware install], ::[http://www.youtube.com/watch?v=0k2PEmT8I14 Broadway AROS Install], ::[https://www.youtube.com/watch?v=PtDiXhjSIfs Is Aros Icaros a choice?], ::[ driver install], ::[http://www.vimeo.com/10491104 HDAudio install but needs account], [], :02. '''Amiga Basics''' ::[http://www.youtube.com/watch?v=TY8mWxwzH5o Screens tutorial], ::[https://m.youtube.com/user/AMIGASYSTEM/videos General], [ Dos Scripts tutorial], [http://www.youtube.com/watch?v=hPT7SmVEpjc OS 1.2], [http://www.youtube.com/watch?v=n6kX3FqH8Ww&feature=related OS 1.3], :03. '''Customisation demos''' ::[https://www.youtube.com/@AMIGASYSTEM/videos Prefs tutorial], [ Decoration tutorial], [http://www.youtube.com/watch?v=Dn5C8G3aDXU Scalos], :04. '''Setting up''' internet access and surfing the web, FTP, IRC and Mail apps ::[ Network Prefs], [ AirCOS tutorial], [ jabberwocky tutorial], :05. '''Native bundled Games and Applications''' ::[http://www.youtube.com/watch?v=aYlFv2B-VXc 3D Games], [http://www.youtube.com/watch?v=MXK7wwhd-R0 Latest Games], [http://www.youtube.com/watch?v=RUgiVThv23Q&feature=mfu_in_order&list=UL PrBoom GL], [http://www.youtube.com/watch?v=0s7u8TPy7V4 Assault Cubes], [http://www.youtube.com/watch?v=fih6aCXKeqs Cube 2], [http://www.youtube.com/watch?v=-X0ay0MGOms DosBox on Aros], [http://www.youtube.com/watch?v=7nKduDjf14k Oct 2010], ::[http://www.youtube.com/watch?v=FziV2z_uxnQ Apps Pt 1], [http://www.youtube.com/watch?v=xs37_nfa5CI Apps Pt 2], [http://www.youtube.com/watch?v=Bn59_VvbQR0&feature=related Apps Pt 3], ::DOpus4 [http://www.youtube.com/watch?v=aSRybWjrrME DOpus 4], ::Milkytracker [http://www.youtube.com/watch?v=VxBOEPzpdKg&feature=related Laying Down Base Tracks], ::[http://www.youtube.com/watch?v=k2uKQ0-ieOE Audio Evolution 4 in action], [http://www.youtube.com/watch?v=Zq4r9k0_jZI Quick Videos], ::[http://www.youtube.com/watch?v=gGKCFZcIc0I&feature=related ScreenRecorder], [http://www.youtube.com/watch?v=974c2e-Fqak&feature=related TV out Tests], ::[http://www.youtube.com/watch?v=fjq8ct5d5IY AmiFIG], [http://www.youtube.com/watch?v=h0rHvPhYJo4&feature=youtu.be ZuneFIG], ::[http://wiki.povray.org/content/Documentation:Tutorial_Section_1 POVray Tutorial 1], ::[http://www.youtube.com/watch?v=Jk-ZNLfJsvQ pt 1, jan. 2008], [http://www.youtube.com/watch?v=nWRy33g1R7Y pt 2, feb. 2009], [http://www.youtube.com/watch?v=r5PbhCtm4vE pt 3, feb. 2010], ::[https://www.youtube.com/watch?v=G7_FJUoQ89o Hollywood programming], [], [], [], ::[], [], [], ::[], [], [], ::[], [], [], :06. '''Commercial software available''' ::[http://www.youtube.com/watch?v=fKXY9B4R43s AntiryadGX 3D Game Editor], ::[http://www.youtube.com/watch?v=TMS9NDzwm5U BOH indie Game], :07. '''Running classic amiga apps and games''' :: Amiberry [], [], ::[http://vmwaros.blogspot.com/2008/11/introducing-amibridge.html Intro Amibridge], [http://www.youtube.com/watch?v=ee2PWvCZeLo Old Amiga Apps], [http://www.youtube.com/watch?v=ee2PWvCZeLo Why Janus UAE is good], ::[https://www.youtube.com/watch?v=VhlsNSYSuDg DPaint tutorial] ::[http://vmwaros.blogspot.com/2009/11/can-icaros-play-my-amiga-games-and-why.html Play Amiga Games], [https://www.youtube.com/watch?v=XTaZCNOvCnE], ::[http://www.youtube.com/watch?v=tMehS77LXQ4 Pagestream Introduction], [http://www.youtube.com/watch?v=284-w3hTzII Pagestream Tutorial 1], [http://www.youtube.com/watch?v=mlwEGwhZzl4 Pagestream Tutorial 2], ::[http://www.youtube.com/watch?v=iIcrIjPOctc Catweasel Mk4 PCI Part 1] and [http://www.youtube.com/watch?v=BaitHeL6bEA Part 2], :08. '''Misc and History''' ::[http://www.youtube.com/watch?v=d6mDXKU29w0 Mum uses old AmigaOS Workbench 1.1 (1986)], [http://www.youtube.com/watch?v=DaRkacQ-YMg Why an Amiga 500 (1987)], [http://www.youtube.com/watch?v=k5CYsgVCzYY an Amiga 2000 (1987)], :09. '''Misc Shows and Events''' ::[http://www.youtube.com/watch?v=klgVSWKs4kE VCF 2010], [https://www.youtube.com/watch?v=eQ3d5qR-Hv8 24:06 Jason McMullan at amiwest 2012 about AROS], [https://www.youtube.com/watch?v=jpQO7XSfAv4 Aros SMP multi core amiwest 2013], [], [https://www.youtube.com/watch?v=gFRtAAmiFbE], [https://www.youtube.com/watch?v=DjdUEyjx8GM], [https://www.youtube.com/watch?v=ydYDqZQpim8], [], [https://www.youtube.com/@uminekoshouten/featured], [https://www.youtube.com/shorts/NfoY023w-vE], :10. ::[https://www.youtube.com/shorts/6qJTNW4-6GY] ===History=== The project was originally started by a small group of Amiga [http://www.amigahistory.co.uk/aros.html enthusiasts] in 1995. These individuals were mainly computer-based college university students at the start, though that student trend has diminished since. An interview with Aaron Digulla [http://arosshow.blogspot.com/2006/12/interview-with-aaron-digulla-who.html here] * 1992 Commodore folds * 1996-1998 much of the early years was concerned with exec, dos and intuition libraries. * Early 1999, Haage & Partner used parts of the AROS code in AmigaOS 3.9. * March 2001, floppy disk images of AROS became available. * Early 2002, AROS changed its name from Amiga Replacement Operating System to Amiga Research Operating System * June 2002, AROS devs decided to use Zune (MUI 3.8 rewrite) as the GUI system. * November 2002, Eric Schwartz drew Kitty for AROS usage. * Early 2003, AROS.org underwent a graphics facelift. * Late 2003, GCC C compiler arrived. * Early 2004, Aros-Exec opened. * Early 2005, Aros Max bootable CD arrived. * Late 2005, SFS filesystem ported and allowed fast access to apps and network support arrived * Early 2007, AROS.org underwent another graphics facelift. * Mid-2007, AROS changed to AROS Research Operating System after A.Inc. sued Hyperion with a trademark violation. * Late 2007, the hard disk installer added and VmwAROS (later called Icaros Desktop) distro launched. * Early 2009, Our first usable web browser (OWB) * September 2010, first wireless support appears and AspireOS started as a distro * Early 2012, the first paper-cut bugfix and Fab's Odyssey Web Browser ported * Early 2014, backport of most features of ABIv1 into mainstream everyday use (Icaros 2.0 and above) * 2015 work started on using the extra cores of the PI 2 * Early 2017, work started on utilising the addition cores on modern CPUs starting with the 64bit x86 version * Mid-2017, m68k port optimized for the Vampire 2 / Apollo accelerators (68080 AMMX FPGA) * 2018 The old AROS Exec website closed and a new one opened * 2019 AROS One distribution started and now with USB install version * Early 2021, backport of more features of ABIv1 into mainstream everyday ABIv0 (Aros One 1.5 and above) * 2025 year of 64bit pc builds and porting 32bit applications to 64bit ABIv11 * 2026 update to 2015 and earlier [https://www.youtube.com/watch?v=6FKTL068ULM&pp=ygUPYXJvcyBhbWlnYSAyMDI2 nvidia nouveau driver] ===Bounties=== To help inspire developers with both ideas and monetary incentives, rewards are offered for the successful completion of "bounties" (requests for missing/new functionality) chosen by the community and handled by [http://power2people.org power2people] (formerly done by TeamAROS). A monthly option is [http://www.power2people.org/funds/aros/ here]. Future goals for AROS include expanding its underlying retargetability to support even more diverse architectures, provide memory protection features and user level file security, SMP and many other wonderful features missing from AmigaOS &mdash; while still providing as much source level compatibility as is possible (however it is accepted that to achieve some goals code certain things may require a little recoding). [http://www.ohloh.net/p/aros/contributors Developers] come and go as with any open source effort and we would like to thank them for their efforts... ;1996-2000:In DigullaA (coordinator), GripJ, TempletonI (BSD), SchulzM, RittauS, voordenDagL, HolmM, JohanssonT, VanIngelgomH, SteigerwaldM, BortasP, deJongK, AlfredssonJ, InnocentiB, ;2001-2005:In [http://chodorowski.com/adam/aros.html ChodorowskiA], StegerG, BergerS, HeutlingS, AlemagnaF (gcc), VerhaegenS (rexx), KielH, MatheussenKS (CAMD), SzczygielskiP, ErikssonP, LeCorfecD (Zune), BauerS (Zune), FurlongW, GustafssonJ, AndrewsN, CafferkeyN, GierichM (jpeg), PattonJ, ParsonsM, DietrichJ, SeilerT, BischoffL, LorentzenNH, AdamO, BerglundH, SmithP, HolmenD, BlomM, ;2006-2010:In FedinP, RusslerM, SzymczykS (owb), SmiechowiczK (openGL), WeissM, NorrisR, BrunnerO, WiszkowskiT, GreppinA, [http://www.fukt.bsnet.se/~bearsoft/ Bearsoft Björn Screwelius], ErbY, CharletF, HodgesC, [http://aros-exec.org/modules/newbb/viewtopic.php?topic_id=4819&forum=18&post_id=43103#forumpost43103 HokstadV], McMullanJ (m68k), WilenT (m68k), ;2011- :In MuijzenbergPHvanden, ALB42, JonesEM, weiju, DizzyofCRN, wawa, miker, * 1996 - The linux hosted version for i386 was the first to arrive * 1998 - i386, The native version for i386-based PC AT computers and compatibles. * 2004 - x86/64, The native version for 64-bit (x86_64, amd64) PC computers. * 2008 - sam440/ppc, The native version for Sam440EP, Sam440EP Flex and Sam460ex computers. * 2009 - efika, The native version for PowerPC Efika computers. * 2010 - m68k, The native version for m68k Amigas or WinUAE * 2013 - raspi/armfh, early native version for ARMv6 based Raspberry Pi computers. * 2017 - x86/64bit smp Debugging capture serial debug at all (especially with sysdebug=all or --sysdebug=all) to see it displayed on screen * yes, usb -> rs232 adapters can work most of the time, some of the cheapest ones are not fully compatible with all rs232 devices to capture to another device * you will need a null modem cable (or a null modem adapter usually female to female) in addition to the usb -> rs232 adapter (usb adapter is a normal modem ie. the pins are not crossed over) Normal modem cable - straight connection DCE <pre> Pin 2 -> Pin 2 RXD Pin 3 -> Pin 3 TXD Pin 5 -> Pin 5 GND </pre> Null modem cable connections DTE <pre> Pin 2 -> Pin 3 Pin 3 -> Pin 2 Pin 5 -> Pin 5 </pre> (9pole SUB-D) <pre> serial ser: (amiga/aros) tty2 tty1USB0 (linux) COM1 (windows) (depends on the os being used) speed baud transfer rate 9600 38400 lower baud might be more successful data bits 8 stop bits 1 parity none handshaking flow control - none xon/xoff (most likely) rts/cts dsr/dtr (pins not connected so should not work) </pre> *You cannot use compiled aros X86-64 bit software (when ready) on aros X86 32bit. PPC compiled software on X86 and so on. *68k is tested with the UAE emulator (WinUAE) but some tests are done on native 68000 based Amigas and others. *PPC support is very limited to certain devices. If you use the WBStartup, you have to delete the other icons in the folder (readme etc..) and you have to add in the Icon Tooltype the parameter DONOTWAIT If you use user-startup instead, you need to add the attached command "after assignment to LUA" C:WBRun DH1:Extras/Utility/WeatherBar/WeatherBar >NIL: Change the command to match your WeatherBar path. <pre> PATH sys:Utilities/WeatherBar ADD run >nil: lua:amilua weatherforecast.lua </pre> To enter data your Country or City, ist with city_id numbers can be found [http://bulk.openweathermap.org/sample/city.list.json.gz here] or you need to go to [https://www.bbc.com/weather BBC Weather], once you type the name of your city or town in the appropriate tab, and press enter, the 7 numbers to be added in the "WeatherBar" will appear on the Browser url address bar above Unicode v16.0 emojis are not supported but [https://github.com/jens-maus/libcodesets codesets.library] provides <pre> internally supported (hardcoded) charsets/codesets are: (conversions are possible from and to each codeset): AmigaPL – Polish (Amiga) Amiga-1251 – Cyrillic (Amiga) ISO-8859-1 – Western European ISO-8859-1+Euro – West European (with EURO) ISO-8859-2 – Central/East European ISO-8859-3 – South European ISO-8859-4 – North European ISO-8859-5 – Slavic languages ISO-8859-9 – Turkish ISO-8859-15 – West European II ISO-8859-16 – South-Eastern European KOI8-R – Russian UTF-8 – Unicode In addition, external charset table files can be stored in LIBS:Charsets or loaded by an application from PROGDIR:Charsets. The charset files included with this distributions are: IBM866 – Cyrillic (cp866) ISO-8859-7 – Greek (LatinGreek) ISO-8859-10 – Nordic (Latin 6) windows-1250 – Central/East Europe (Windows) windows-1251 – Cyrillic (Windows) windows-1252 – West European (Windows) </pre> Icaros 2.3 USB image needs a header stripped so it can work correctly dd bs=512 skip=1 status=progress if=icaros_light_2-3-0_pendrive.bin of=/dev/sdxy && sync Scalos <pre> ------------------------------- { "STRING", "ID/K,TEXT/K,SRC/K,TEXTPEN/K,HALIGN/K,STYLE/K,FONT/K,VALIGN/K", HALIGN LEFT | CENTER | RIGHT VALIGN TOP | CENTER | BOTTOM STYLE NORMAL | BOLD | ITALIC | BOLDITALIC FONT // font specification - format: "fontname.font/size" ------------------------------- arguments for STRING SRC "diskstate", "diskusage", "diskusagefree", "diskusageinuse", "diskusagepercent", "fibfilename", "filecomment", "filedate", "fileprotection", "filesize", "filetime", "filetypestring", "iconname", "linktarget", "plugin" pluginname <optional plugin arguments> "versionstring", "volumecreateddate", "volumecreatedtime", "volumeordevicename", ------------------------------- arguments for HIDE "novolumenode", "isempty" (some STRING) ------------------------------- all internal commands: "about", "backdrop", "cleanup", "cleanupbyname", "cleanupbydate", "cleanupbysize", "cleanupbytype", "clearselection", "clone", "close", "copy", "cut", "delete", "emptytrashcan", "executecommand", "formatdisk", "iconify", "iconinfo", "lastmsg", "leaveout", "makedir", "open", "parent", "paste", "putaway", "quit", "redraw", "redrawall", "rename", "reset", "selectall", "showallfiles", "showonlyicons", "shutdown", "sizetofit", "snapshot", "snapshotall", "snapshotwindow", "unsnapshot", "update", "updateall", "viewbydate", "viewbyicon", "viewbysize", "viewbytype", "viewbytext", </pre> {{status|50%}} {{BookCat}} n1fig9p87mcyg42d6rf30bnc8jt7itm 4656739 4656737 2026-08-08T08:44:41Z Jeff1138 301139 4656739 wikitext text/x-wiki {{ArosNav}} ==What is AROS== Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=nl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Dutch], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=da&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Danish], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Chinese], [http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Russian], [http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Polish], [http://translate.google.com/translate?hl=en&sl=auto&tl=ja&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Japanese], [http://translate.google.com/translate?hl=en&sl=auto&tl=ko&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Korean], [http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Portuguese], *Computer Hardware *AROS (operating system) *Applications and Games *User [http://www.osnews.com/story/15819 AROS] is one of the intermediate levels between the computer hardware and the user. It is an open-source, clean-room implementation of AmigaOS 3.x that can be run on many different computer architectures. It runs primarily on PC x86 64bit and also PC 32bit hardware but also on motorola 68k and compatibles, some ARM and PowerPC. This page will cover enough to be able to write the downloaded image to your preferred media, to run a LiveUSB, LiveCD or LiveDVD on your office/home PC (Live meaning you can test without changing your existing setup) and, ultimately, to use it. Intel / AMD PC hardware support mostly covers the years 2000 to 2010 but work is under way to cover recent PC hardware. At the moment, AROS is '''not''' recommended to be '''installed''' on a working vital data holding machine. Instead, writing to and booting from a '''USB stick''' could be a much better option. AROS is an hobby OS and can co-exist with Windows(TM), MacOSX(TM), Android(TM) or Linux(TM) and act as an alternative. Unfortunately, Aros has few developers so upgrades and improvements can take [https://sourceforge.net/p/aros/mailman/aros-cvs/ time to appear]. AROS core is now [http://en.wikibooks.org/wiki/Aros/Developer/IncompleteAPIs ~80%] finished and is usable, so keep in mind that the software is still considered ALPHA/BETA and in development. Currently AROS is fun to play with on a curiosity level, but it is also interesting to program. AROS has some multimedia features and has internet access. Most importantly, use AROS to its maximum potential as it stands now, find ways to have fun with it and share your experiences. Good Sites to visit : [https://www.arosworld.org/home.php Aros World User forum] : [https://ae.arosworld.org/ Aros Exec site relocated] : [https://arosnews.github.io/ AROS News] : [https://www.facebook.com/ArosWorkshop/ Aros Workshop], : [https://www.osnews.com/topic/amiga-aros/ OSNews] : [https://www.reddit.com/r/aros/ Reddit] : [https://archives.arosworld.org Aros Archives] : [https://aminet.net/ Aminet] : [http://www.amiga-news.de/en/ English translation of German site] : [https://aros.sourceforge.io AROS] : [https://github.com/aros-development-team/AROS Codebase] : [https://github.com/aros-development-team/AROS/issues Issues] and [https://sourceforge.net/p/aros/bugs/ old defunct bugs site] : [https://github.com/deadwood2 Deadwood's builds], [https://www.axrt.org/download/aros/v11/ v11 builds], [https://axrt.org/downloads-aros Updated i386 32bit PC builds], : [https://github.com/ezrec Ezrec x86 m68k mirror of old svn version] : [https://sites.google.com/view/arosone Aros One x86, x64] : [https://tinyarosdistro.flazio.com/ Tiny Aros x86 and x64] : [https://arosnews.github.io/aros-portable/ AROS portable USB3 stick images of hosted Aros One x86 and x64 on debian] : [http://vmwaros.blogspot.com Icaros Desktop x86 now on sabbatical, very old edition] : [https://sites.google.com/site/arosaspireone AspireOS, of the netbook Aspire One, very old edition] : [http://arosalive.blogspot.co.uk/p/10-basic-aros-how-tos-tutorials.html Basic How To guides] : [http://arosgamer.blogspot.co.uk/ AROS Playground], [http://thewetmachine.net/tag/aros/ Jess Wet Machine], [https://aroshacking.wordpress.com/ Jon Robertson's AROS Experiences and FPC Free Pascal], [], :[http://www.apollo-accelerators.com/ Apollo Accelerators m68k], [http://www.amigablogs.net/ Amiga Blogs], [http://blog.a-eon.biz/blog/ Trevor Dickinson blog], : [https://forum.amiga.org/ Amiga OS AOS 3.x forum] : [http://eab.abime.net/ EAB Amiga] : [http://www.amigaworld.net/ AmigaWorld] : [http://www.ppa.pl/ Polish Amiga Like News] : [http://www.apollo-core.com/ Apollo Forum] : [https://amigaalive.blogspot.com/ AmigaAlive] : [https://www.amigalove.com/software Disk Mags] : [https://amigachristmastree.ultimateamiga.com/ Xmas Amiga Game Jam] : [https://www.reddit.com/r/amiga/ Amiga] == Distributions aka Distros == For end users there are distributions (ready made with selected apps aiming to be easy to use), mostly created and maintained by one person in their own workflow/style. They reuse the nightly boot compiles to suit their needs and possibly other end users. You are free to create your own if required. * For native 64bit Intel/AMD: [https://sites.google.com/view/arosone Aros One x64], [https://tinyarosdistro.flazio.com/ Tiny Aros], * For native 32bit Intel/AMD which will run on 64bit machines: [https://sites.google.com/view/arosone Aros One x86], [https://www.tinyaros.it/ Tiny Aros], * For native 68k [https://sites.google.com/view/arosone Aros One m68k], [http://www.aros-platform.de/ AROS Vision], '''Please, keep in mind that the distros listed above use a different ABI (abi v11) , which is NOT binary compatible with the official ABI V1.''' * For hosted Linux usb drive image [https://arosnews.github.io/aros-portable/ x64 Debian hosted version of Aros One], * For hosted ARM there is Aeros and [https://aros.sourceforge.io/nightly1.html RaspberryPi 3 raspi-aarch64-system native 64bit] AROS was originally developed on Linux but can run on an Intel-based Linux distro as an app. As time has gone on, it can be run as an app on many more operating systems (Windows, FreeBSD, Linux and limited on MacOS). This may sound strange: an OS running on top of another OS. Basically, this is to take advantage of drivers (audio, internet, graphics, etc.) and compiler environments, in the existing OS, with which people may be already familiar. The term we use for what AROS does is "Hosted". AROS Native is the term coined to describe AROS being run without any OS underneath it. It runs alone just like AmigaOS(TM) did. As this version does not benefit from "Hosted" drivers, dedicated ones have to be ported/written. Hence the smaller range of supported hardware / peripherals. We have other pages highlighting this support AROS is open source so basically everyone can take part. The source is public on github and there are new commits most days. AROS is automatically compiled daily, result are the nightly builds hosted on Sourceforge. The nightly builds are only used for testing changes, testing software and the starting point for distribution maintainers or even your own distribution. They are very basic, miss some functionality and apps like web browsers and are not suited for end users. * The [https://sourceforge.net/projects/aros/files/nightly2/ Nightly2], [http://aros.sourceforge.net/download.php nightly builds File Release Service] or [http://aros.sourceforge.net/downloads/ Sourceforge Project Web builds] are made automatically every night directly from the Github and in the past, SVN (Subversion) tree and contain the latest code for the AROS operating system. It should be noted that the builds have not been tested in any way and can be horrible broken. *ABIv11 offspring / adaptation of ABIv1 for PC 64bit *ABIv1 standard for most nightly builds, it is where the most work is done by developers *ABIv0 standard for PC 32bit intel / amd distributions ==Media== AROS media tends to boot in this tier list of media types, first internal HDD SSD, CD DVD drive, and finally usb drive (last two can depend on bios boot order) * USB .VHD [https://sites.google.com/view/arosone Aros One x86 and x64], with md5 below <pre> 0a656d53a9c902e9934000d8392e30ec *ArosOne-USB-1.3-64Bit.zip 7dd7119ab3e56d75ee852c137226b4d7 *ArosOne-USB-v1.2-x86_64-v11.zip cf906eeaad4a83b3520b1896bdc6b0d3 *ArosOne-USB-v1.1-x86_64-v11.zip e2eb8fe8cfd61c567b0152a61cf85251 *ArosOne-x86-v2.8-USB-IMG.zip 559909c75c2f56472c74267a7d075355 *ArosOne-x86-v2.7-USB-IMG.zip 93da5898508c1a8c05bb8991ab7bd117 *AROS One Image-USB-2.4.zip 59fcabd7090e47f12d54f7eb78cf0f45 *ArosOne-x86-v2.2-USB-Image.zip 24fb8de726ae8fc5fe5bac6d30f03dc5 ArosOne-x86-v2.0-USB-Image.zip f3d725e990072edce633b59747911b6b ArosOne-x86-v1.8-USB-IMG.zip e089a24ae310e92fcc407a0125602ce8 Aros-One x86-IMG-USB-v1.6.zip </pre> [https://tinyaros.flazio.com/ Tiny AROS] 22bc993625b7c75b17263c0cc7e7baaa *Tiny Aros_copy.vhd (March 2024) There is usually a vhd image inside the zip that can be written to USB sticks which is so much faster than the old ISO written to physical CD DVD method. This .vhd can be written to an USB stick / ssd with these pieces of software below but it will erase the previous contents from the usb Windows - [https://www.raspberrypi.com/software/ RPi Raspberry Imager, use custom and see all files], [https://hddguru.com/software/HDD-Raw-Copy-Tool/ HDD-Raw-Copy-Tool], [https://rufus.ie/ Rufus up to version 3.20 may work with VirtualBox HD vhd images with Win7 but not some Rufus 4.x versions], [https://etcher.balena.io/ Balena Etcher but may spy on you], Linux - [https://www.raspberrypi.com/software/ Raspberry Imager Ubuntu], Suse Image / Multi writer, dd, Mac - Most of the time when we get reports of "crashes right after grub" from usb boots it's due to wrongly recorded pendrive. Not aware if using 'dd' is a valid approach. AROS One author suggests using either rufus or etcher software for his VHD image. * Virtual Machine .ISO or CDs DVDs The native iso images are currently not compatible with Ventoy, Yumi, MultiBootUSB, Easy2Boot E2B, or similar <pre> 617a905b1665128c5e05f94dcc48e7f1 *AROS-One-v1.3-64Bit-v11.zip 11c8a147fcad7ecf52ae3a43e1934b69 *ArosOne-DVD-v1.2-x86_64-v11.zip f93053d3b9ccf304d7e6ac3389e1987b *ArosOne-DVD-v1.1-x86_64-v11.zip 86d808a40dc7be389a758799a9b4f595 *ArosOne-x86-v2.0-ISO-DVD.zip f1fc8599ef6a39e5df394e0f41d55526 *AROS-One-x86-ISO-DVD-v1.6.zip </pre> You can use a virtual emulator like VirtualBox, VMWare to mount the iso image which can then be used to boot and/or install to USB. no software can write an AROS ISO to a Pendrive. The author of ‘Rufus’ (who used an Amiga 500 as a child) once tried, but when he saw the system composition, he said he was unable to do it. The solution is to boot the ISO from a VM (WMware, VBox), then install the AROS build on the Pendrive, which will eventually become a Live Pendrive that can be booted on a PC. The only precaution is that in some cases it is necessary to thoroughly clean the Pendrive of any partitions and remove any bootloader that is not AROS. The Pendrive must remain raw without any partitions. You can clean the USB stick on a PC with a program that manages hard disks. You need to do a partition wipe. On some USB sticks, you can clean it with InstallAROS. Previously the only installation option was CD-RW or DVD-RW, since the whole system can be burnt onto a single disk and can be reused when the next version is released. Good branded discs like Taiyo Yuden (later JVC) or Verbatim should be used to reduce frustration later. The days for this media is gone but kept here for information Since nobody currently sells AROS on any other media, you will need access to a CD/DVD burner to create the installation disk yourself. After it is on a CD or DVD, then access and writing to USB pendrives becomes available (this should be viewed as an outdated or last resort alternative method now), as well as using good USB manufacturers like Sandisk, Kingston, etc. rather than some other no-names. Try burning it to a CD-RW or DVD-RW using your CD/DVD burning program (most burning software have a burn iso option). The ideal writing speed is 2x or 4x, higher speeds can give errors and problems. Check the writing integrity of your CD or DVD if your software has an option to do so before going any further. Standalone portable usb cd dvd drives do not boot physical burnt discs, please use an internal ide sata drive instead. * SD-card For ARM Pi Aros, copy the files onto a FAT32 formatted SD card. ==Booting== The LiveUSB, and in the past LiveCD LiveDVD, is designed to trial (test drive) various operating systems without having to install them to your working system. Since 2011, UEFI was introduced to replace the original PC BIOS which made booting media more confusing. Some changes in the UEFI/bios may be needed *go into the bios using esc, f2 or f? and disable the Security -> Secure Boot and maybe apply option for Legacy IDE mode *you may have to press F9, F10 or F12 or p on boot up to present a device boot options like USB or CD/DVD *disable the Fast Boot config so it would recognize portable DVD-drive and changed the Boot-sequence Secure boot was introduced by Microsoft and later consortium control what operating systems work with Secure Boot via shims. For Aros, it is best to disable or be able to change Secure Boot (if you dual boot with Windows this may cause issues with Window boots after) The grub part of the boot should be fully automatic, and you should see a multiple choice graphic card screen after 10 seconds for USB or over 30s CDs and DVDs. After the grub graphics choice, AROS takes over the booting and any issues can arise here =====Advice for various machines===== Some of the stages involved and shown on the display in a typical AROS boot start up <pre> [MultiLoader] [ELF Loader] [Boot] [HPET] [Kernel:ACPI] [Kernel:APIC-IA32] [Kernel:SMP APIC] [HiddStorage] ACPI: ???? ACPI Error [ACPI]AcpiOs???? [BattClock] Got RTC century offset 0x32 from ACPI [PCI] Scanning bus ? [AHCI] Sata [Vesa] only if vesa is chosen as graphics option [ATA] detect hd & cd drives [ATA0?] ata-identity [packet] fat.handler be.handler, etc. [DOS] [Storage:Bus] [Storage:Controller] [MSS] USB setup [ehciInit] Port ? maps to controller ? [I2C] [ATI] [drm] nouveau [AROSTCP] if you have network driver prefs set up to start when booting </pre> ; If boot fails, please give us some indication (pictures or videos) where the boot stops and the message(s) on screen. AROS's native SATA/AHCI driver doesn't always work. If you get errors related to ahci.device, try disabling it. At your chosen boot entry in the GRUB menu, Press E, scroll down to the ahci.device entry, and add a # or ; at the start of that line or delete it with Ctrl-K. Then press Ctrl-X or F10 to boot. If your disk isn't accessible at all with this change, you might need to change the SATA controller to IDE legacy mode in the BIOS: however, making this change will likely cause problems booting Windows on the same machine (if it's already installed). To disable ahci.device permanently, edit the text file "SYS:Arch/pc/grub/grub.cfg", and remove the ahci.device line from all boot entries you intend to use. SATA AHCI Timeout while waiting for device to complete operations with BIOS SATA entry set to AHCI mode stops at "waiting for bootable media" screen, changing BIOS SATA setting back to IDE mode may allow it to continue booting The ATA driver doesn't always work. If you get errors related to ata.device, try using the alternative in sys:devs/alt which is an older version. Press E when your chosen boot entry is highlighted in the GRUB menu, scroll down to the ata.device entry, and change it to read "module /Devs/Alt/ata.device". Then press Ctrl-X to boot. To make this change permanent, edit the text file "SYS:Arch/pc/grub/grub.cfg", and change the path to ata.device in all boot entries you intend to use. Further options (removing the " ") to add to the GRUB menus to disable certain other components for debugging: <pre> Disable AHCI "AHCI=disable" Disable NVME "NVME=disable" Disable ATA: "ATA=disable" Disable ATA: "ATA=nopci,nolegacy" ATA safe mode: "ATA=nodma,32bit" Disable IDE from SATA: "ATA=32bit,nosata2pata" VIA / SIS with cdrom read io errors "ATA=nodma,nopoll" noacpi all [PCI] devices to be invisible to AROS. disk drives work but network, sound won't acpi=strict if there are issues with sound after boot noioapic alternative to no acpi Set AHCI "AHCI=force150/force300/force600" Disable AHCI/SATA: comment out with a # ; or remove ahci.device line with Ctrl-K Disable USB: comment out # ; or remove pciusb.device and poseidon.library lines with Ctrl-K Disable native graphics: "nomonitors" USB3 "USB=xhci" </pre> Other useful grub command line options - nomonitors, noacpi, vesahack, nopoll Press Ctrl and X together (or F10) to exit and boot with the new options. Just experiment with different variations until successful. Those working options will need to be reused with every reboot of AROS until you can edit the grub.cfg and make it permanent i.e. install to hard disk or USB. * If you use VESA mode, you can see the debug log if you add 'vesahack' to the command line. This will set up split-screen mode. In the upper half you'll see AROS screen, in the bottom - debug log. * ACPI ie. PCI hardware - If you get crashes at early boot, try adding 'NOACPI' to the command line If you're having boot issues and have a null modem cable and a spare pc, a boot log is always useful. Edit your grub line to include debug=serial but would try with an with sysdebug=all in the line later as it can cause issues booting on machines with sysdebug=all enabled (corrupts the cpu initialization). However, if you feel you have found a genuine bug/fault in AROS that needs attention, please use the [http://sourceforge.net/tracker/?atid=439463&group_id=43586&func=browse bug submission form] to record as much information about what happened, why, and what hardware etc. you have so that people may try to assist you For Virtual machines VMWare VirtualBox, etc., attach and press play to start the ISO image If booting hasn't worked then it could be down to Bios/UEFI settings or USB3 (2014 onwards) =====nvme.device===== Since 2018, nvme drives are standard on most machines Now as far as hardware goes on a newer machine with an NVME drive you may need to add NVME=disable as the NVME driver could potentially cause lockups. =====AHCI===== Starting taking over since 2011 on a lot of machines * Check that UEFI (replacement for PC BIOS) has options set to remove UEFI SecureBoot option and apply CSM * SATA drive is set for Legacy or a mixture AHCI/IDE and not AHCI AHCI sata can be very difficult to get working Most Windows installs are already set to AHCI sata, changing this to a legacy IDE mode setting can help but please check if Windows will still boot. Some hardware like Lenovo laptops do not always like being set in legacy mode so only use as a last resort and aware of issues that can be caused. Now as far as hardware goes on a newer machine with an NVME drive you may need to add NVME=disable as the NVME driver could potentially cause lockups. With a 16C/32T chip machine, disable SMT and it should boot. =====ata.device for old BIOS's ===== Pre 2010 this was the de facto standard method of providing settings to the computer at a lower level Some adjustments to the BIOS setup options are necessary (usually by pressing a key like DEL, F1, F2, F12 or ESC, p on the very early boot up of the computer). *Adjust booting options like moving USB hdd, CDROM higher as it is quite often disabled or placed lower by default, i.e. USB hdd, CD/DVD are placed at the top above the hard drive. Try looking here [http://www.windowsreinstall.com/articles/bios/ Windows] or [http://www.hiren.info/pages/bios-boot-cdrom Bios] or [http://www.wikihow.com/Set-Bios-to-Boot-from-a-CD-ROM Boot] or web search "BIOS BOOT CDROM" * At the '''SAME''' time, check if the SATA/AHCI option is set to Emulate or IDE Legacy, though this can have '''issues''' with any OS already on the hard disk. If in doubt, do nothing and seek advice. * check that under BIOS settings you '''DO NOT''' have plug&play OS selected as Aros at this point is unable to route interrupts on its own and needs the BIOS to do that. '''Save''' options changed at the end. PCITool can show if the motherboard chipset is in IDE mode. Class = 0x01 means STORAGE, Subclass = 0x01 means IDE. Also ProductID 0x3a20 resolves to non-AHCI mode in Intel ICH10 documentation. ==Installing== We have a separate section [https://en.wikibooks.org/wiki/Aros/Platforms/x86_installing here] We have a specific section for each CPU platform under the Specific platforms in the NavBar navigation bar on the right hand side menu error code (-6) when using the ahci.device (has writing to disk problem but not reading) is enabled. change this line in your grub and reboot <pre> #module /Devs/ahci.device << disable module /Devs/Alt/ata.device << add this line instead </pre> ==File structure overview== AROS' directory structure is mostly identical to AmigaOS directory structure, with some additions. AROS: or SYS: also known as DH0: (i.e. the drive partition with AROS system) has the following simplified list of the main drawers (Amigas term for directories/folders). {| class="wikitable" |boot: | grub bootloader |---- |C: | small apps, where AROS looks first for applications/games but will look at Tools, System afterwards |---- |Devs: | .audio, .hidd, network, graphics and other hardware device drivers are stored |---- |L: | where .handler files go |---- |Libs: | where .library files go |---- |Prefs: | applications that adjust or setup AROS functions and capabilities |---- |S: | startup scripts (for the aros boot process '''not''' grub) are stored here |---- |Storage: | place to keep old or alternative device drivers |---- |System: | applications associated with AROS operating system |---- |Tools: | extra applications |---- |Utilities: | extra applications |---- |WBStartup: | copy applications here to autostart with needed icons, drawers, data etc |---- |} See [[Aros/User/DOS#Drives.2C_Files.2C_Assigns.2C_Directories|DOS manual: Drives, Files, Assigns, Directories]] === Filesystem === Whilst the kernel is the heart, the filesystem is the blood of the system they are split into two categories (only a few are supported) <pre> Journalling - ZFS XFS ext4 NTFS SFS PFS3 Non-journaling - BtrFS ext2 exFAT FAT32(VFAT) FFS </pre> Filesystem options for AROS to install * SFS default * Professional File System PFS3 [http://eab.abime.net/showthread.php?t=52234&highlight=pfs3+free&page=13 only on motorola 68k at the moment] * FFS very old now but left in for legacy usage Other [https://archives.arosworld.org/index.php?function=browse&cat=driver/filesystem filesystems] for storage purposes * FAT32 favorite as most OSs support * NTFS (can lock AROS) * exFAT The only filesystems that really NEED defragging (i.e. disk tidy up) are from Microsoft(TM) - exFAT/VFAT/NTFS *SFS tries to do exactly the same thing, but in certain cases it doesn't do as well as PFS. But you can defrag SFS *PFS *minimises* the amount of fragmentation, but does not automatically defrags as it saves files to the drive The setup of the below filesystems is usually done by the distro maintainer but if not.... <pre> Copy L/exfat-handler L: DOSDriver or Mountlist entry for an exFAT partition make sure that the FileSystem and Handler are set as follows: FileSystem = exfat-handler DosType = 0x46415458 </pre> <pre> Copy L/ntfs3g-handler L: DOSDriver or Mountlist entry for an NTFS partition make sure that the FileSystem and Handler are set as follows: FileSystem = ntfs3g-handler DosType = 0x4e544653 Also to make a read-only mount you can set: Control = ro </pre> The Smart File System (SFS) is a journaling filesystem used on Amiga computers and AmigaOS-derived operating systems. It is designed for performance, scalability and integrity, offering improvements over standard Amiga filesystems as well as some special or unique features. SFS is written in C and was originally created and released as freeware in 1998 by John Hendrikx. After the original author left the Amiga scene in 2000, the source code to SFS was released and its development continued by Ralph Schmidt in MorphOS. Its development has now forked; as well as the original Amiga version, there are now versions for MorphOS, AROS, AmigaOS 3, and a version for AmigaOS 4, which have different feature sets but remain compatible to each other. Versions for AROS, AmigaOS and MorphOS are based on different branches. In addition, there is a driver for Linux to read Amiga SFS volumes, GRUB natively supports it and there are free drivers to use it from UEFI. The Linux version is [http://home.elka.pw.edu.pl/~mszyprow/programy/asfs/ independent code]. SFS (Smart File System) partially defragments itself while the filesystem is in use. The defragmentation process is almost completely stateless AROS SFS version has a 120GB partition size limit on hard disks and DVDs current 4gig size limit. The sources for the MorphOS 64-bit version of SFS were available but no porting to AROS has happened so far due to endian issues, etc. SFS Tools * GUI - arSFSDoctor, * CLI - sfscheck , [http://www.portacall.org/ sfsundelete], sfsformat, setcache hits a usability ceiling around the 10GB / 100,000 file mark, sfscheck dh0: seek purge fraglist defragment If there are two simultaneous file writes in progress and you reboot machine (or it locks up or crashes) you may end up with a corrupted filesystem. Although arSFSDoctor may help, you might have to copy the files to another partition, format the partition with the errors on and copy the files back. A bit error on the harddisk would give this error. PFS / SFS are way more advanced and much much faster than the FFS. FFS is supported for legacy reasons only. The Professional File System (PFS) is a filesystem originally developed commercially for the Amiga and now distributed on Aminet with a 4-clause BSD license. It is a compatible successor of AmiFileSafe (AFS), with an emphasis on added reliability and speed compared to standard Amiga filesystems. It also features multi-user abilities like the older MuFS. PFS has so many advantages including the important things, speed, the ability to recover all deleted files even simply same name by typing the command ". Deldir" convenient if done in Directory Opus, virtually deleted files are copied normally as if they had never been deleted, other convenience is to not ever invalidate the filesystem, just put it on top of the startup-sequence command "diskvalid", which automatically corrects any irregularities in the system startup; PFS also provides a device for floppy which makes them very fast and takes advantage of the full capacity of the floppy including the area dedicated to the bootloader. The device is split into two main areas. At the beginning of the device is the metadata section, which consists of a root block, and a generic array of blocks that can be allocated to store metadata. The rest of the device is another contiguous generic array of blocks that can be allocated to store data. The metadata section usually uses a few percent of the device, depending on the size of the device. The metadata is stored as a tree of single blocks in the metadata section. The entire directory structure is recorded in the metadata, so the data section purely contains data from files. The metadata describes the location of data in files with extents of blocks, which makes the metadata quite compact. When a metadata update occurs, the system looks at the block containing the metadata to be changed, and copies it to a newly allocated block from the metadata section, with the change made, then it recursively changes the metadata in the block that points to that block in the same way. This way, eventually the root block needs to be changed, which causes the atomic metadata update. The filesystem is reasonably good at keeping files unfragmented, although there is a defragmentation tool available which will work on an online filesystem ie whilst being used. It was the first filesystem to introduce the concept of the Recycle Bin natively at filesystem-level to the Amiga, holding the last few deleted files in a hidden directory on the disk root. PFS version 5.3 was developed in C and a small portion of assembly code by Michiel Pelt. There are endian issues to be overcome and adapting the small amount of m68k to C before use on intel based machines, etc. Autoupdate of files in a directory is already implemented in Wanderer, but not all file systems handle dos.library/StartNotify() in its full extent. It seems to work correctly in Ram Disk (thanks to AmberRAM handler), and it also works on SFS formatted devices. Other file systems might not yet have it implemented correctly though. The PC equivalent of the Amiga's RDB is the master boot record (MBR). ===Installing Applications=== The typical means to install applications under AROS/AmigaOS involves simply copying/extracting the archive (.zip .lha .rar .tar.gz) file containing the applications files to your own desired location i.e. drawer/folder. Once extracted, launching it by double clicking on an icon (recommended) or using the shell (alternative). Generally, this is on a separate partition from your AROS system files, however in reality it can be any location - including RAM: if you don't want it staying around too long especially when you switch off. At some time in the future it may be desirable for AROS to have a package-manager like subsystem able to retrieve information online about packages available for AROS and whether they update anything you currently have installed, however at the moment no such ability exists. ===User Data files=== AmigaOS has no notion of a default location to store user data files, and presently neither does AROS - though it may be desirable at some time to provide a common start location. For most people, extra small FAT32 NTFS partition(s) as well as the usual Sys: (DH0:) and Work: (DH1:) / Briefcase (DU1:) partitions to store data seems preferable. Especially if a reinstall is ever needed. ===User Environment configuration files=== AmigaOS/AROS stores persistent system configuration data in directory assigned to ENVARC:. This, by default, points to SYS:Prefs/EnvArc. During boot a copy is made to another assign, ENV:, which is for runtime usage. Changes to the files here will not survive a reboot. Setting the env variables is generally done by applications themselves, or when necessary by the user using the SetEnv command. SetEnv has a SAVE switch to force the persistent copy in ENVARC: to be written also for when you are sure the change should be permanent. Under the standard installation of AmigaOS style OSs, ENVARC: is copied to ENV: upon startup, which, if you have a hard drive installation, is in RAM:, hence, ENV: ends up being RAM:Env. ENVARC: is the Environment Archive, which is the permanent copy of ENV:, which is the Environment. It's roughly like the Registry in Windoze. Most programs do (and all should) store their settings in ENVARC: somewhere, and load them from ENV:. The effect of this can be seen in the Preference editors. If you Save your preferences, they go in ENVARC: and ENV:. If you click Use, they only go in ENV:. If you reboot, normally, anything saved to ENV: is lost, and is replaced with a copy of what is in ENVARC:. you can set the default public screen for any tool started from a cli with the PUBSCREEN variable. So open the pubscreen, set PUBSCREEN to the name and start newcli for example, then the new cli window (and all following windows opened from that window) will appear on that public screen. ===Drivers=== All hardware support is placed in the Devs drawer (folder/directory). The network drivers <something.device> go in the Networks sub-drawer. Audio drivers <something.audio> are put in the AHI sub-drawer. Graphics drivers <something.hidd> are put in the Drivers sub-drawer. ==Configuring== AROS has mainly decided on a MUI-like requester/menu/ clone so changing the background, icons, font, menus can be done with SYS:Prefs/Zune AROS has several desktop GUI front ends like * DOpus5 Magellan II, Wanderer and Scalos (medium) * AROS Workbench, Workbook (smaller) File / Directory managers like Dopus4, MCAmiga, App Launch Shortcuts like FKey, Amistart, BoingIconBar, right mouse click on magellan, wanderer desktop, etc. General usability decisions - Prefs/IControl, CLI in icon's tooltypes means 'run it as if it was run from shell' If, on the other hand, the WB parameter (or no parameter) is present in Tooltypes, Wanderer will execute the binary and, if provided, the options included in Tooltypes. WBxCLI is very useful for adding options to DOS Commands. Important: AROS has a different way of managing icons. If you have an executable file, you will never be able to add a project icon. AROS will automatically recognise that it is an executable file and will transform the icon into a tool icon. Most apps can be autostarted by copying into SYS:WBStartup directory folder e.g. WeatherBar.zip can be downloaded, unzip and the contents of the zip copied to wbstartup folder ClicktoFront and .info to SYS:WBStartup so always be activated when turning on the computer or add a text line to user-startup is SYS:S (scripts version of wbstartup) e.g. standard Amiga / AROS does not allow clicking of background windows to come to the front to make it easy to get to the window you need but it has the ability if these apps are copied again to WBStartUp or are added to SYS:S/user-startup script run QUIET sys:Tools/Commodities/ClickToFront >Nil: run QUIET sys:Tools/Commodities/DepthMenu >Nil: run QUIET sys:Tools/Commodities/Blanker seconds=300 >Nil: Exchange controls Commodities and can be opened with alt, ctrl, h Although there are heaps of docks, menus and other launcher programs on the Amiga like OSs, FKey has got to be one of the quickest and less complicated ways to launch programs, and it comes with the OS. In SYS:Tools/Commodities, the FKey commodity (Ctrl Alt F) allows you to make actions assigned to some combinations of keys <pre> ALT TAB Cycle Windows Cycle Screens Enlarge Window Shrink Window Toggle Window Size Insert Text Run Program Run Arexx Script </pre> e.g. <pre> LAmiga F1 = Avail Flush LAmiga F2 = Open Prefs LAmiga F3 = Finder Alt Tab = Cycle Windows LAmiga Tab or M = Cycle Screens Alt Up arrow = Enlarge Window Alt Down arrow = Shrink Window Alt Home = Toggle Window Size = Insert Text LAmiga e = Run Program = Run Arexx Script </pre> If your FKey GUI pops up when you start your Workbench up and you don't want it to, click once on the icon, go to the Icons-Information in the menu and make sure it has the tooltype set "CX_POPUP=NO". Now let's launch it and assign the locale switching. After you double-click on FKey icon, launch the Exchange, choose the FKey from list and click the Show button. This will invoke the FKey window. You can see the ALT TAB in list assigned to window switching. Now enter the first key combination, say, ALT Z and go to the right panel. Choose Launch the program from pulldown menu and enter SYS:Prefs/Input as an argument. Append the USE switch and english preset name to the string as shown: SYS:Prefs/Input USE SYS:Prefs/Presets/english Click on the New Button to add the another combination. Now set the combination for your locale as shown above, replacing English name with your preset name. Click New button again and then Save Settings. Now you can use defined combinations to switch the layouts. Although not needed by most users, the system wide ARexx script capability can manage many file manipulation task(s) but this would work only with those program that support [https://en.wikibooks.org/wiki/Aros/Developer/Docs/Rexx ARexx] like *Desktop - DOpus5, Scalos *Dock - FKey, *Files - Multiview, DOpus4, *Internet Apps - Odyssey, WookieChat, *General Apps - the shell can be modified with escape strings but not needed in most cases Common Keyboard Shortcuts <pre> RAlt Right Alt Key LAlt Left Alt Key RWinKey Right Windows Key LWinKey Left Windows Key RAmiga Right Amiga Key (if one) LAmiga Left Amiga Key (if one) </pre> ;Bootup Options :Spacebar during boot, enters the bootmenu which allows a boot without startup sequence, etc ;Left Click :LAmiga = LWinKey = F11 ;Right Click :RAmiga = Help = F12 ;Mark :RAmiga and B ;Cut :RAmiga and X ;Copy :RAmiga and C ;Paste :RAmiga and V ;Search :RAmiga and S ;Mouse Movement LAmiga and together with arrow keys - shift as well at the same time as well to move faster ;Mouse Selection LAmiga and LAlt to select ;Screen Switching LAmiga and M or N ;HELP key Can sometimes be mapped to F11 but can be changed via FKey ComKeyRemapper or AmigaKeyremapper could swap RAmiga to another key press ===DOpus 5 Directory Opus Magellan II=== Dopus 5.x is a whole desktop replacement on the Amiga Workbench (Desktop) DirectoryOpus app will assign DOpus5: to it's PROGDIR: automatically but if not add the below (edit SYS:System to suit where Dopus5 was installed) to your startup-sequence <pre> Assign DOpus5: SYS:System/DOpus5 DOpus5:DirectoryOpus ;DOpus5:C/LoadDB </pre> Left mouse button clicked twice on the desktop background brings up the Device List window. Green strip notifies SRCE (source) and if another is open it will be red for DEST (destination). clicking on the red strip changes to green Word list of actions with a left mouse click on the DOWN Arrow and directory stuff with < button which mirrors the icons at the top of each lister single-key hotkeys? exactly the same as in dopus4, edit your functions (button bank, toolbar, menus etc.) and under the flags gadget is a key gadget, just click in it and press the key you want to use. As for the extra text field... try turning off Extended lister key selection in environment / miscellaneous. Shift and click on the icon - runs the icon DOpus5 Magellan 2 Directory folder drawer structure <pre> ARexx - Arexx scripts .rexx and .dopus5 to perform tasks Buttons - Commands - Desktop - Environment - two environment files bundled: default gets loaded if you run DOpus as a normal app workbench gets loaded if you run DOpus as a WB Replacement (with LoadDB on startup) Filetypes - Groups - Icons - Images - Modules - compiled tasks Settings - Sounds - Themes - WBStartup - Use this if standard SYS:WBStartup gives cannot wait error messages </pre> Settings -> Environment -> Display -> Workbench (Use) *Settings -> Clock (add to title bar as well as the date) *Toolbar -> Editor (Right Win Key together with 1) for Copy, Move, Delete, etc above the Device List *Menu -> (Right Win Key together with 2) *Buttons -> Editor (Right Win Key together with 3) *Settings -> Environment (Right Win key together with 4) for Backgrounds, etc *File Types -> (Right Win key together with 5) *User Menus -> (Right Win key together with 6) *Hotkeys -> Setup for quick shortcut keypresses (Right Win Key together with 7) *Scripts -> (Right Win key together with 8) *Icon Positioning -> (Right Win key together with 9) Each Dopus5 theme are stored in a separate directory, named appropriately, which contains further sub directories * Font (amiga bitmap fonts) * Screens (jpg or any picture supported by datatypes but not animations) * Sounds (wav but not iff 8svx ) * Icons (png newicons glowicons ) * Patterns (iff jpg png ) Just use wildcards in background filenames and you get a different picture every reboot For example, configure in Environment -> Backgrounds -> Desktop something like this: <pre> Work:Pictures/Backgrounds/#? ...or Work:Pictures/back#?.iff ...etc... </pre> [https://aminet.net/util/dopus arcdir and themes] If you want to change the backdrop pic after a period of time, paste below into a text file called dopusrandbg.rexx and place in DOPus5:ARexx <pre> /* Changes DOpus background image forever Start with: Run >NIL: RX dopusrandbg.rexx */ if ~show("L", "rexxsupport.library") then do if ~addlib("rexxsupport.library", 0, -30,0) then exit 10 end /* Configure these two lines for your needs: */ minutes=1 picpath="Work:Pics/#?.iff" address DOPUS.1 do forever call delay 3000*minutes dopus set background '"'picpath'"' desktop center custom dopus refresh background custom end </pre> If you don't want to use/open rexxsupport.library just for DELAY() then use the DOS Wait command <pre> /* random diropus backdrop changer */ /* by paul trauth, 1999 */ /* to do: non-repeatable randomness? */ options results parse arg path address DOPUS.1 /* get current backdrop pattern so it actually changes */ dopus query background desktop custom currentpatt=result lastslash=lastpos('/',currentpatt) currentpatt=substr(currentpatt,lastslash+1,(pos('"',currentpatt,2)-lastslash-1)) dir=showdir(path,'FILE','/') num=0 do while dir~='' where=pos('/',dir) if where>0 then do file=left(dir,where-1) dir=right(dir,length(dir)-where) end else do file=dir dir='' end if left(file,1) ~='.' & file~=currentpatt then do pics.num=file num=num+1 end end which=random(0,num-1,time(s)) newbg='"'||path||'/'||pics.which||'"' dopus set background newbg desktop tile precision exact dopus set background on dopus refresh background </pre> Clock format commands available are defined by locale. They are: <pre> %a - abbreviated weekday name %A - weekday name %b - abbreviated month name %B - month name %c - same as "%a %b %d %H:%M:%S %Y" %d - day number with leading 0s %D - same as "%m/%d/%y" %e - day number with leading spaces %h - abbreviated month name %H - hour using 24-hour style with leading 0s %I - hour using 12-hour style with leading 0s %j - julian date %m - month number with leading 0s %M - the number of minutes with leading 0s %p - AM or PM strings %q - hour using 24-hour style %Q - hour using 12-hour style %r - same as "%I:%M:%S %p" %R - same as "%H:%M" %S - number of seconds with leadings 0s %T - same as "%H:%M:%S" %U - week number, taking Sunday as first day of week %w - weekday number %W - week number, taking Monday as first day of week %x - same as "%m/%d/%y" %X - same as "%H:%M:%S" %y - year using two digits with leading 0s %Y - year using four digits with leading 0s </pre> like %a %d-%b-%y %H:%M or A WB ARexx interface, you could enter a cli command as a menu item to open a WB drawer like this... RX "address WORKBENCH;WINDOW 'device:drawer' OPEN" Where device:drawer is replaced by the path of the drawer to open. The ARexx script would be capable to manage such a task but this would work only with those program that support ARexx <pre> dopus addappicon dopus addtrap dopus back dopus checkdesktop dopus clear dopus command dopus desktoppopup dopus error dopus front dopus getdesktop dopus getfiletype dopus getstring dopus matchdesktop dopus progress dopus query background, font, palette, pens dopus read dopus refresh all, background, icons, lister dopus remappicon dopus remtrap dopus request dopus script dopus screen dopus send dopus set background, font, palette, pens dopus setappicon dopus version </pre> <pre> lister add lister addstem lister copy lister clear value lister clearcaches lister close lister empty lister findcache lister getstring lister iconify lister new lister query active all, dest source lister query abort, busy, case, dirs, display, entries, entry, files, flags, handler, header, hide lister query label, lock, mode, namelength, numdirs, numentries, numfiles, numseldirs, numselfiles lister query path, proc, position, seldirs, selentries, selfiles, separate, show, sort, lister query title, toolbar, value, visible, window lister read lister refresh lister reload lister remove lister request lister set busy, case, dest, display, field, flags, handler, header, hide, label, lock, mode lister set namelength, newprogress, off, path, position, progress, separate, show, sort, source lister set title, toolbar, value, variable lister select lister wait </pre> The '''command''' allows you to call internal DOpus commands from an ARexx script <pre> command all command wait copy command read s:startup-sequence command source 12345 makedir name noicon </pre> *SFTP secure encrypted comms over internet using libssh2 and zlib (different protocol to the two below) on port 22 *FTPS secured with https like security on port 21 *FTP not secure and unencrypted protocol over internet on port 21 (should not be used today on the internet but for your own server) ===Wanderer === Wanderer prefs in the prefs drawer - Appearance tab and Workbench icon allows backgrounds (wallpapers) icon text sizes, colors, etc but cannot use #? or *.* in the backgrounds file entry to randomly choose pictures - [https://developers.google.com/speed/webp/docs/riff_container webp riff container] issues with this format but Multiview has none. Enable the bar, you need to edit the text file ‘statusbar.prefs’. The change is simple: just change “False” to ‘True’. Prefs/Env-Archive/SYS/Wanderer/statusbar.prefs Provides a way to hide the old Workbench 3.1 style of windows and screens. Themes - SYS:Prefs -> Appearance The default content of Prefs/Env-Archive/SYS/themes.var should be "themes:ice" but can be changed via the theme prefs, please do NOT click the Use button. Its useless. As you know, it will ask for the theme volume. Just pick the theme you want, click on Save, then reboot. * Decoration is on. Any time trying to change theme, you get: "Please insert volume Theme: in any drive"? You could check if you find SYS:System/Themes or if it is missing. Then you could open startup-sequence which you can find in drawer "S". There should be a line: Assign THEMES: SYS:SYSTEM/THEMES >Nil: This does the trick. Open a shell and run: Assign THEMES: SYS:SYSTEM/THEMES Than start the Theme prefs again... this should work * The theme is the only thing that could slow the system a bit, but it's not that performance impacting on most uses, and you can switch it of completely. Remove C:Decoration from the bottom of the file sys:s/startup-sequence. [http://archives.aros-exec.org/index.php?function=browse&cat=graphics/theme ALua/Zulu script] built for faster Wanderer skin management. You can modify config files, install new (wdz format/zipped skin files) and delete skins via the Theme Manager. [http://sites.google.com/site/arosaspireone/download-1 Global.Prefs] ===Scalos=== [https://web.archive.org/web/20180922220139/http://scalos.noname.fr/ Scalos] is not an OS replacement, it's a Workbench replacement. It replaces the desktop and graphical file management components. Scalos is 100% Workbench replacement with most functions working like the original Workbench ones. Undo and Redo available for most window and icon operations. Fully multitasking so every window has its own task. While loading icons, any window function (e.g. Drag&Drop) is available. 24bit color support with window patterns - Unlimited and easily configurable via tooltypes. Optimised backgroundpatterns routine so patterns can be tiled, centred or even scaled to fit into the windows. Live updating window scrolling - Supports middle mouse button panning and drawer (folder) windows can be iconified on the desktop. Icon imagetypes with all types are supported such as backfill or complement. Configurable surrounding iconborder. Icon support also visually highlights files which are soft-links in the file system. Icon dragging is more stable and far less flickery on graphics cards. Whilst dragging, icons are displayed with text and they can become transparent over anything where they can be dropped. Single-window lasso mode, with scrolling window contents invoked by dragging mouse with configurable qualifier key. Text icon lasso selection used to ignore "Name column selects text icons" flag. Support for backfilled thumbnail icons, with selectable color and transparency. Added option to always generate square thumbnail icons with preview icons for images - Thumbnails can be permanently saved in icons. Supports PNG icons with alpha channel and real transparency and displays OS3.5 GlowIcons and are all scalable. Iconborders with variations (normal, shadowed, outlined). Completely configurable, filetype-specific user-definable popup menus and tooltips. Plugin system to exchange or add features and can enhance the Workbench and make it more configurable. Filetype plugins to display filetype-specific information. - Currently, EXIF information viewer for JPEG images is included. Plugin included for 100% support of OS3.9 Workbench features. Plugin included for AREXX API compatible to OS3.9 Workbench. Online update with updater.module Scalos works also as a Workbench replacement. In this case the 'emulation mode' has to be set by using Scalos' own version of LoadWB and offers * Scalos uses the Workbench Screen for its windows instead opening a new one * AppIcon, AppMenuItem, AppWindow functions are redirected to Scalos * all Programs placed in "WBStartup" should start * The Screen will be reopened in case of changes in ScreenMode and Palette settings <pre> v1.0 (V39.201) - November 1999 v1.1 (V39.212) - December 1999 v1.2b (39.220) - June 6, 2000 v1.2d (39.222) - 2000 (latest public beta executable) v1.3 (40.7) (beta) - August 2, 2001 v1.3 (40.22) - September 25, 2002 v1.4 (40.32) (beta) March 31, 2005 v1.6 (41.4) - March 27, 2007 v1.7 (41.5) - August 12, 2007 v1.8 (41.6) - March 12, 2009 v1.9 (41.7) (beta) - March 15, 2010 v1.9 (41.8) (RC1) - August 25, 2012 open source v1.9.2 (41.10) Deadwoods' AROS late 2022 32bit and 64bit build unifying the code base of ` for AROS x86 ABIv0, AROS x86_64 ABIv11 and AROS m68k </pre> Distros may have Scalos files under SYS:System/Scalos or Extras:Scalos. Known [https://github.com/deadwood2/AROS/issues/75 bug list], Certain files like Menu13.prefs, Palette13.prefs, Pattern.prefs and scalos.prefs need to be in SYS:Prefs/Env-Archive/Scalos they can be found in Scalos:Storage/envarc and country drawer or run the "Scalos Menu" preferences program. Note if already setup with sub-menu entries and then re-save your menu prefs as it will now generate a new/overwrite prefs file called "Menu13.prefs" in "envarc:scalos/". The same is also required for the new Palette prefs update, click 'Save' and a "Palette13.prefs" file will be saved in to "envarc:scalos/" directory. <pre> ASSIGN Scalos: SYS:xxx/xxx DEFER ASSIGN Libs: Scalos:Libs add ;ASSIGN SYS:Devs/Datatypes Scalos:Devs/Datatypes add Assign Theme: Scalos:Themes/Default_Theme add Assign Locale: Scalos:Locale add Protect Scalos:Tools/browse.script s add quiet Protect Scalos:Tools/OpenShell s add quiet Protect Scalos:Tools/run.script s add quiet run Scalos:Tools/LoadWB ;Scalos:Scalos </pre> Add the above to SYS:S/startup-sequence or SYS:S/user-startup '''before any Wanderer entries''' In the prefs drawer (folder) is the big prefs app Scalos_Prefs which covers these user setup areas <pre> About Scalos Paths - should be preset Startup - WBStartup drawer contents should auto run on each startup Desktop - edit titlebar, icon layout and in misc, auto leave-out (drag icon to desktop) Icons - Drag and Drop - Windows - Text Windows - in misc, drawer sorting at start of listing if needed TrueType Fonts - use Truetype fonts rather than system ones Miscellaneous - Plugins - after adding oop/title_clock.plugin %ti %da does not work, maybe needs ASCII .prefs added Modules - ?? Menu - setup for MainMenu and PopupsMenu with New Menu, RE Name, Key: shortcut, Command Properties FileTypes - already added def_Project icons and def_Disk (hdd sdd cd dvd etc) support PopupMenu - tweak how popups appear Pattern - Wallpaper backgrounds with Type DE, each pattern in the list can be edited, Save as Pattern.pre Palette - change the color of things , Save as Palette.pre </pre> Scalos_Prefs - Pattern - Minimum options to be changed are *DE Desktop/Background *SC Screen *TW Window/TextBackground ie Text listing showing if icon type not recognised *IW Window/Background ie Icons showing Workflow - In "Pattern List" tab, select New - choose a picture, highlight in list, click in number box under New button and slide to another number, click on "Defaults" tab and adjust Pattern numbers slider to choose right picture for each of the above options - Click "Pattern List" tab to check eveything is OK and click Save Pattern List tab on Patterns Page - Allows you to compile a list of pictures (one at a time rather than a whole folder e.g. with #? or *.*), assigning a number Nr to one or more of them for easy reference. Using this number you will be able to assign the pictures to specific windows on the Defaults tab Page. If multiple pictures have the same number, one of the pictures will be chosen randomly. This will allow you to have random desktop pictures, random window backdrops etc. Defaults tab on Patterns Page - Here you can set the defaults for the background pictures for the Desktop, Screen, Window and/or Text Mode throughout Scalos. Randomize every time [check box] - Usually Pictures with the same number will be randomly selected as soon as the configuration loads. If this option is set, the picture will be selected as soon as a window with the same number assignment is opened. *Fit size: The picture will be resized to the dimension of the new window.You *MUST* have set GUIGfx on. asyncron layout: Pictures will be loaded and rendered while the windows opens (Like original Workbench). If this function is 'off', pictures will always be loaded before opening the windows. *Use friendbitmap : The picture is present twice in memory for best speed. This option has no effect if V43 picture.datatype or GUIGfx are used. Always relayout: If "Fit size" is set, the picture will be scaled everytime the window's dimensions change. *Randomize everytime: Usually Pictures with the same number will be randomly selected as soon as the If more pictures have the same number, one of them will be chosen randomly. Patternlist New/Delete : Add a new picture. After that you should assign a number to it. The picture will be rendered as tiles. configuration loads. If this option is set, the picture Asyncron-Task priority: You can set the CPU priority for the Task if "asyncron layout" is set. <pre> Desktop: Number of the Picture for the main window. Screen: Number of the picture for the Scalos-Screen. Window: Number of the picture for the Scalos-windows. TextMode: Number of the picture for the Scalos-windows in Text Mode. </pre> Popup Menu preferences fully configurable menus (includes ToolsDaemon and ParM launch apps import), including support for context-sensitive Popup menus configs for top pull down menus for apps, etc. Workflow - Scalos_Prefs then Menu, New Item, New Command add name at top then in Command Properties e.g. add Workbench and location e.g. DOpus:DOpus4 for apps Command for c apps or Rexx for scripts or Plugin for or AmigaDos for modules <pre> DESCRIPTION NAME/A This is the title that is displayed in the top line of any popup menu INCLUDE NAME/A Name of file to be included. Path can be relative to "Scalos:FileTypes" POPUPMENU Starts the popup menu description section for this filetype. </pre> The following Subcommands are allowed inside popup menus: <pre> SUBMENU "NAME/A" ENDSUBMENU MENUENTRY "NAME/A,KEY/K,DEFAULTACTION/S" ENDMENUENTRY INTERNALCMD "NAME/A" WBCMD "NAME/A,STACK/K/N,WBARGS/S,PRI=PRIORITY/K/N" AREXXCMD "NAME/A,STACK/K/N,WBARGS/S,P=PRIORITY/K/N" CLICMD "NAME/A,STACK/K/N,WBARGS/S,P=PRIORITY/K/N" ICONWINDOWCMD "NAME/A" PLUGINCMD MENUSEPARATOR ENDPOPUPMENU TOOLTIP ENDTOOLTIP </pre> <pre> Starts the tooltip description section for this filetype. The following Subcommands are allowed inside popup menus: GROUP "ORIENTATION/K" ENDGROUP MEMBER "HIDE/K" ENDMEMBER HBAR STRING "ID/K,TEXT/K,SRC/K,TEXTPEN/K,HALIGN/K,STYLE/K,FONT/K,VALIGN/K" SPACE "SIZE/N/A" DTIMAGE "FILENAME/A" </pre> Each theme drawer (folder) has these further folders <pre> About - Desktop - FileTrans - FileType - Icons - Menu - Modules - PointerIcons - Prefs - Sound - Window - </pre> *Plugins <pre> devicefilter.plugin persist.plugin should a crash or reboot occur - next time Scalos started, all windows re-opened title_clock.plugin add digital clock to title see more below title_envvar.plugin %ev, which can be used to display the value (a string) of the variable in the titlebar title_freepens.plugin volumegauge.plugin wb39.plugin wbrexx.plugin plugin adds a Workbench 3.5+ compatible AREXX interface to Scalos internals xtwindows.plugin left or right ALT or left or right SHIFT keys when open/close windows filetype.plugin then run FileTypes-prefs and customize the filetypes (eg import from a DefIcons-brainfile) menu.plugin </pre> *Modules - delete, empty_trashcan, execute, find, format_disk, information, iconproperties, newdrawer, reboot, rename, systeminfo, windowproperties *Tools - scripts like LoadWB, quit.rexx, open_volume.rexx, In Scalos_Prefs->Filetype->Recognition you can define the filetypes and on "Action" you define specific context menu for all filetypes defined in recognition (similar to magellan) there is the same you must show all first (list is only limited) so you created a file type AAABBB, you need to have def_AAABBB icon Associating files with "Scalos_FileTypes" is very simple, practically it is very similar to Dopus4, first you create the Def_icons to assign to the file type (will be seen automatically ), then run "Scalos_FileTypes" you add the extension, fill in the descriptor (MATCH or PATTERN etc..) and save then you create a appropriate entry in the list and rename it, if def icon exists it is shown. Below you can define how files are identified. I use "pattern", similar to magellan to identify file by ending. Then you click on the shown icon and define in it what program is used when you double-klick on it and save it. On the tab action you can define popup menu for it. defined all archive types from XAD in "filetypes". If you change to "action" and click on "archive" you can define the context menu that is shown if you do not define a specific context menu for a filetype Reset to Default in Scalos_Prefs resets all settings so BEWARE <pre> The Scalos desktop screen titlebar may be configured using the main Scalos Preference program. This oop/time_clock plugin adds some additional placeholders: %ti, displays the current time in the default Locale format. e.g. "10:43:37" %da, displays the date in the default Locale format. e.g. "Saturday 14 July 2001" Using the supplied prefs program for the plugin, or editing the ASCII file ENVARC:Scalos/title_clock.prefs you can use the following standard Amiga Locale values to change the formatting %a - abbreviated weekday name %A - weekday name %b - abbreviated month name %B - month name %c - same as "%a %b %d %H:%M:%S %Y" %C - same as "%a %b %e %T %Z %Y" %d - day number with leading 0s %D - same as "%m/%d/%y" %e - day number with leading spaces %h - abbreviated month name %H - hour using 24-hour style with leading 0s %I - hour using 12-hour style with leading 0s %j - julian date %m - month number with leading 0s %M - the number of minutes with leading 0s %n - insert a linefeed %p - AM or PM strings %q - hour using 24-hour style %Q - hour using 12-hour style %r - same as "%I:%M:%S %p" %R - same as "%H:%M" %S - number of seconds with leadings 0s %t - insert a tab character %T - same as "%H:%M:%S" %U - week number, taking Sunday as first day of week %w - weekday number %W - week number, taking Monday as first day of week %x - same as "%m/%d/%y" %X - same as "%H:%M:%S" %y - year using two digits with leading 0s %Y - year using four digits with leading 0s like %d %m %y or %a %d %B %Y %p </pre> Shutdown -> right mouse button Scalos, About, Reboot, Shutdown ToolTypes can be added to the Scalos.info icon like *SCALOS_PATTERNNO=<number> : background image matching the number *SCALOS_NOTEXT : The Icon will be drawn without Text. *SCALOS_NODRAG : The Icon will not be draggable. Its position will be fixed. *Module iconproperties - Added SCALOS_BROWSERMODE tooltype support runcommand parameters... in which case: <pre> %p = parameters %w = directory path %d = device-name %% = literal percentage token </pre> With the help of the wbrexx.plugin Scalos gains support for more of the compatible arexx API If an arexx command produces an error you will find the error code placed in the WORKBENCH.LASTERROR variable. ACTIVATEWINDOW <pre> /* Activate the root window */ ADDRESS workbench ACTIVATEWINDOW root /* Activate the "Work:" partition's window if already open*/ ACTIVATEWINDOW "Work:" </pre> CHANGEWINDOW <pre> /* Change the root window; move it to position 10,30. * and change its size to 200100 pixels */ ADDRESS workbench CHANGEWINDOW root LEFTEDGE 10 TOPEDGE 30 WIDTH 200 HEIGHT 100 /* Change the currently active window */ CHANGEWINDOW active 20 40 200 100 </pre> Most of Scalos' issue are due to the flexibility of its' user configuring nature but if The sort menu plugin needs to be ported from ASM to C. IIRC Scalos has a command line option to fully replace Workbench/Wanderer. The Theme: assign is used by both Wanderer and Scalos but I didn't have any problems using both at the same time. The Program will be started from the Shell. If "WB Args" is set, with the Argument "%p" will be replaced by the path of the activated Icons. The Program will started with the specified Stack value. IconWindow: Scalos opens the window of the specified path. PlugIn: Starts a Scalos Menu-PlugIn. If a Menu Item with empty name is specified, Scalos displays a separator line. It's possible to Drag&Drop an Icon in the Configuration Window. All values will be set accordingly. Entries may be dragged across the list. Mac-like selection : This function activates a multiselection method used on MacOS or Win95. Don't have to hold down shift to drag them. Clicking on an already activated icon will not deselect all other icons. MMB move: The window contents may be moved using the middle mouse button. WindowPopup title only: PopupMenu for windows can be opened only on window's title bars. FullBench: Screen-Titles removed and Main Window set Full Size. Scalos Prefs. Go to Settings->Scalos->Prefs and then the Misc section. Remove the tick against Full Bench. If you've enabled it, the titlebar will disappear when you select backdrop. Default Icons saveable : The icons which Scalos generates if "show all files" is enabled, can now be saved using "snapshot" menu option. load DefDisk first : Try to read the icons first from the DefIcons Path before using disk info. Hide hidden files : If this function is activated all files or directories where the "hide" flag is set will not be shown. Many of my Icons display more than once on the screen, while on the workbench all seems ok. The Workbench filters double displayed icons, Scalos does not. Solution: please edit the ".backdrop" file and clear double lines. Background images not scaled. GUIGfx option not set or guigfx.library and/or render.library not installed. If working with CD's causes crashs or Scalos doesn't work correctly. Most Filesystems doesn't support the ExAll function correctly. Disable "Use ExAll" in Scalos prefs. Scalos doesn't start any program in the WBStartup. WBStartup Path may be set wrongly or Scalos was not started in Emulation Mode (LoadWB etc) Some programs will not startup with error message "has not returned, wait some more"? and "unable to open your tool" need a def_icon with the same name predefined, then create an appropriate entry in the list and rename it, if def icon exists it is shown. Below this can define how files are identified. * either "pattern", similar to magellan to identify file by ending * or Then click on the shown icon and define in it what program is used when you double-click on it and save it. On the tab action you can define popup menu for it. All in all handling is of course different to magellan but can do similar For the RAM Icon, to obtain this you have only to copy the icon in the Icon Path as "RAM.info" or "Ram Disk.info". All functions will automatically be performed sometimes cut into half or quarters when scrolled off screen or drawers moved - settings issue probably Sometimes leaves initial drawer window imprint on desktop when moved - settings issue Scalos AROS released a [https://github.com/deadwood2/contrib/tree/master/scalos new build V2022-07-21] with the following changes noted: <pre> Fixed: Numerous crashes when working on 64-bit with 64-bit heap Wrong background color of Scalos logo on Scalos splash window Backgroung image of Scalos splash window and Scalos About window is not visible Icon labels on desktop and in drawer windows are displayed using Topaz instead of Arial font Font.prefs are not being loaded on 64-bit Font.prefs are being wrongly saved on 64-bit scalos.prefs are not being loaded on x86 and x86_64, scalos is using always default preference scalos.prefs are being saved on x86 and x86_64 in format not compatible with m68k NewPopupmenu.prefs is wrongly written Plugins are not loading at Scalos startup wbrexx.plugin is crashing at startup on 64-bit Multiple controls missing on Scalos Prefs/Icons page System crash when clicking on def icon image on FileTypes Prefs/Recognition page Status bar, control bar, buttons sometimes don't have images displayed Buttons in Scalos About window have white corners rendered where they should be transparent Crash when leaving out an icon Crash when adding a User-defined Button to Control bar without setting it's properties in Scalos Prefs Crash when removing any button from Control bar in Scalos Prefs Scalos Prefs allows editing TTEngine font properties when TTEngine is not present causing crash in Icons/Labels and Text Windows/Fonts pages deficons.prefs are not being loaded on x86 and x86_64 Reset to default in FileType Prefs and Save does not save preferences Won't fix: Scrollbars visible on titles of TrueType Fonts, PopupMenu, Menu, FileTypes, Pallette and Pattern pages of Scalos Preferences Not fixed: Wrong rendering on DualPNG icons Refreshing drawer windows is slow Starting Prefs/Locale or Prefs/Input from Scalos causes other preferences to fail Desktop wallpaper is damaged where Splay window was displayed When started from Wanderer, after saving Scalos Prefs, reload does not re-open main Scalos window Difference in behavior between Cleanup from popup menu and Cleanup from top menu - possibly due to missing plugin, check Cleanup association in Menu Prefs </pre> ===DOpus 4 Directory Opus=== Copy DOpus4 app to WBStartup directory folder so it starts on boot up each time Another method is add the below to the bottom of the user-startup script in S: drawer/directory <pre> run DOPUS:DirectoryOpus -i >NIL </pre> makes DOpus starts up in Iconified state at the top of Wanderer's screen. Left click on this to highlight and right mouse click to open. Just click on the sides of either outer edges of DOpus windows and it will display the parent device/volume list. DOpus saves it features in a CFG file which can be edited to suit anyones' needs by reading the [http://archives.aros-exec.org/index.php?function=browse&cat=utility/filetool Dopus Manual] which is in Guide format. ===AmiStart=== Auto generates the apps menu but scans the drive each time - AmiStart can choose apps you are not interested * how to disable annoying zune/mui 'bubbles'? try a right-click on AmiStart and release on Global settings. Then click on the bubbles gadget. Move the Show Bubbles slider all the way to the left. ===BoingIconBar=== User chooses the apps to add to the dock at the centre bottom of the screen but has to be done manually, please use Save afterwards Or easier edit the text file of SYS:Prefs/Env-Archive/iconbar.prefs and save <pre> SYS:System/Shell SYS:Tools/DOpus4/DOpus4 SYS:Utilities/Editor SYS:System/SysMon SYS:System/Scout Work:Extras/Internet/OWB/OWB Work:Extras/Graphics/Lunapaint Work:Extras/Graphics/ZunePaint AROS:Tools/MPlayer/MPlayer Extras:Internet/AmiFox/AmiFox </pre> right mouse click on bottom edge of screen where boingiconbar shows - select settings which opens BoingIconBar Preferences to add apps If no dock showing Add, to add apps click Add Program and search for the executable another method is to drag icons to ends of the bar and move them on the Bar using the Prefs/BoingIconBar ===Icons=== Icons are typically now .png pictures renamed as .info e.g. so Office application name would have a Office.png renamed as Office.info or MyApp.png as MyApp.info, etc. Leave Out menu option to leave app icon on desktop To select multiple icons and save their positions, click on the first icon and after while you hold the Shift key down select further icons and don't release it before SnapShot is finished. You can also select a whole group of icons by pressing the LMB at the top left of the icons and while keeping the LMB down moving the power towards the bottom right. A expanding bounding box will appear and all the icons within it will be selected. Clean Up menu option (right mouse button -> Icons) rearranges icons in a drawer or disk window into a neater condition. To use, open the window to rearrange and select Clean Up. To keep the icons in the new positions, select all the icons (shift key or mouse selection) and select 'Snapshot' and then Window and then again with All. In DOpus5, Scalos, wanderer, most files have an icon file associated with it. To change the default tool, select Icon menu, Information, and change the default tool string. For example, you could use Multiview, Editor and so on for most text, graphics and some sound files as long as the appropriate Datatype classes are installed. For scripts, set the tool to C:IconX C:Join Image1.png Image2.png TO MyFile.info is enough to make a dual state icon from two png images. You can then use Wanderer's menu Icon/Information on it to edit its fields and tooltypes. [http://www.amiga.org/forums/archive/index.php/t-46881.html Amiga OS 3.x AfA icons thread], [http://eab.abime.net/showthread.php?t=66213 Later DualPNG and OS4 icons thread] and [http://archives.aros-exec.org/share/graphics/icon/ Alternative Icons sets] like [http://www.amiga-look.org/artwork/classic-wb-png-iconset-l ClassicWB] [http://www.masonicons.info/6.html AISS toolbar images] unpack unarc them into RAM: and copy Images directory to SYS:Prefs/Presets/ AISS icons are looked for in PROGDIR:, PROGDIR:Images, SYS:Prefs/Presets/Images and then in TBImages: according to Open Amiga guidelines. there is Demos/iconscale which could be launched from S:User-Startup with two arguments, telling it the horizontal and vertical size. IE something like Demos/iconscale 40 40 It will shrink icons... not sure if it will be very nice though. it doesn't work for the icons on the main desktop. there is an option to scale an icon to a bounding box afair, try iconsize followed by two numbers, like: iconsize 32 32 Is there any way in AROS to change an icon type from Project to Tool or vice versa? Either the SIT option of [http://archives.aros-exec.org/index.php?function=showfile&file=utility/workbench/ ProcessIcon], or the TYPE option of HandleInfo (not sure if this one works at all, please test with care). processicon sys:pathoftheicon SIT=Project SIT Set type of ICON. Allowed types are: "Disk", "Drawer", "Tool", "Project", "Garbage", "Device", "Kick" and "AppIcon". Btw, are your icons, the #?.info files, writable, is the W flag set ? ===Fonts=== Install the #?.ttf files to SYS:Fonts/TrueType. Use SYS:System/FTManager to "Install Font" each #?.ttf file which will generate associated #?.otag and #?.font in SYS:Fonts. Use SYS:Prefs/Fonts to change system fonts and SYS:Prefs/Zune to change others. To achieve our goal we will use the Setup Locale, Input, Zune and Fonts, as well as The FTManager. Begin The first step you should do is to get the system to know that we speak and write in another language. What you need to do is to open the setup program and choose Locale country, and list "preferred languages" to put it first and then English. If you want the tab "Time Zone" and select city of residence to set the clock correctly. Of course we save our changes and continue opening the setup program Input. This sets the keyboard language as our beginning. When the language layout was created there was no option to switch to Aros keyboard (layout switching), so to write in the language you had to hold down Alt, something you encounter in other functions. This time working with the team of Aros to create a new keyboard layout to replace the old so we can get rid of the button Alt. For now though let only selected this layout and do not turn the switch on the keyboard. Custom Keyboard Layout [http://repo.or.cz/w/AROS.git/tree/HEAD:/workbench/devs/keymaps keymaps are in place but unfortunately when they are not, then indeed things become a bit 'low-level' as it involves redefining some tables with values that match your keyboards] only need to add your compiled table as new keymap. So taking a little peek here shows that it should be possible to compile using gcc -opc105_tr pc_105.c -nostdlib where the pc105_gr/pc_105.c needs to be replaced with your own adjusted keymapname/c-file [https://en.wikiversity.org/wiki/Enabling_Greek_Characters_on_Your_Keyboard General overview of Greek letters on keyboards] Installing fonts *[http://aminet.net/package/util/wb/EPAGrWb System jaggy] *Outline resizable .font .otag In this step you need to download some fonts that can support the encoding in our system. The easiest way is to run the script "Download Fonts" you'll find in the folder OWB. This script downloads from the Internet, and unpacks some fonts for OWB web browser, which is placed under the folder Fonts:TrueType. But as these can only be used by OWB and not the system, which unfortunately does not see. To make them available to the rest of the system, open the program FTManager, you will find the folder AROS: System /. From there select the field "Codepage" option "ISO-8859-7" and list the font "Arial" and "Regular" form in which you must double-click with the mouse. In the window that appears, select the bottom right the checkbox "Anti-aliasing" button and then "Install". Immediately folder Fonts: created files "arialregular.font" and "arialregular.otag", which are necessary in order to see the system font. Do the same steps if you wish for other fonts. Final stages After completing the above, open the folder AROS: Prefs / and run the program settings Fonts. In the new window, select the fields "Icons" and "Screen" as the font "ArialRegular" to the size you want. In the field "System" to give "s_courier", which, however, because it is not True Type Font support Antialising, and may seem a little broken. You can also use the CourierNew, if you have installed the above procedure. After you save the changes and open the Zune program settings. In this set the "ArialRegular" font fields in tabs "Windows" and "Groups", and save the changes. Reboot the system. To make sure that the above worked properly run NoWinED, which you will find under the folder AROS: Tools /. If that everything is working correctly you will see the menu and the settings window with Greek letters. You can also write in the language using the button Alt. Second program that you can try, which is fully localized, is WookieChat, which you will find in the folder AROS: Extras / Networking. And in this place all the menu and settings window works. ===Windows=== *Intuition The window you position and resize, you right click on that windows title bar and in the dropdown menu you snapshot from there. Right click to show menu -> Window -> Snapshot Windows or All but it will NOT work if that folder has no icon (e.g. Disk.nfo) attached to it. You need a folder icon. The window information gets saved in it. As for maximising the window using a shortcut key - Alt and up arrow key The AROS-Shell windows can be moved, resized by editing sys:s/icaros-sequence <pre> ; run shell if ${Icaros/autoshell} EQ true run QUIET c:newshell >NIL: EndIF </pre> ; slimmer right aros the screen run QUIET c:newshell con:0/150//300/ >NIL: ; top right corner scr-x scr-y win-x win-y run QUIET c:newshell con:600/150//300/ >NIL: *Zune - AROS version of MUI Magic Menu type functionality is implemented in IControl preferences editor: in the frame called Menus, switch type from Pull-Down to Pop-Up and/or iControl just tick the sticky menu option. Windows outside screens causing a problem either uncheck "Offscreen move" for windows in IControl prefs editor. Or use FKey commodity and define two key shortcuts: * the first using the command "cycle windows" (for example ALT TAB); * the second using the command "rescue window" (for example ALT F5). Now you can cycle windows until the one you want to rescue, and then "rescue" it: it will move back inside your screen. How to save the window size on wanderer (snapshot all, snapshot windows) Same for icon position on wanderer, can't save the position. Icon position cannot be saved yet, but you should be able to save the window position and size. sys:prefs - wanderer icon has option to save window size on exit but just for dh0. To get saving working on (DH1: Extras:) partitions try deleting the dh1 disk.info file, then reboot. The system should create a new dh1 icon. * how to set up permanently 'view all files'? As for viewing all files, removing disk.info for that disk did the job * how to list and kill processes (xkill would be useful) ? sys:Extras/System/Scout can kill apps sys:Tools/Commodities/Exchange can remove available commodities * how to restore 'go up' button in wanderer window? (it doesn't show up anymore). If you're using Icaros, go to the theme prefs and make sure that decoration is checked. Also, some themes do not use a parent button, so try another theme. You may have to restart Aros before the theme will change. * Is it really safe to turn off (hardware button) computer at any time (worried about USB hard disk) yes you can turn off the computer IF none of the drives are in progress (i.e. writing). Best to use Wanderer menu option Quit otherwise ===Printing=== This is still work in progress print from my AROS box! <pre> 1. installed printfile ( http://www.lerup.com/printfile/ ) on my Windows XP computer 2. set up the print spooler option, and used ghostscript filter for ps files 3. made the spool folder accessible from ftp (setting up ftp server on Windows) 4. send the ps file from my AROS box to the ftp server using curl (curl -T filename ftp://windows.box.adress --user username:password) </pre> It's a bit complicated but it works! *Postscript Best to set Printer Prefs in the Prefs drawer to print-to-file or parallel/USB port Save document in postscript or convert picture/text to postscript Print using compatible [http://en.wikibooks.org/wiki/Aros/Platforms/AROS_USB_support#printer.class_-_PostScript_3_and_internal_ghostscript_drivers Ghostscript printer] or Postscript printer *GutenPrint Some work has been done ;There are no individual drivers yet for HP's Photosmart, EPSON's EPL, CANON's, Lexmark, CUPS PPD, etc. ===Files=== ====File endings and datatypes==== * Check if the file has his own .info icon file with a tool set to open it. IIRC this has higher priority over the def_XYZ.info file association. * In ENVARC:SYS/def_Text.info or whatever def_ file needs changing, use Wanderer's menu Icon -> Information and change the def_XYZ.info there. If you're on ABIv0 and want it to be applied immediately, you might have to copy it to ENV:SYS/ (or to reboot). * Identifying file types by file ending is only a fallback. Far better it is to search for magic words, for flac files this would be "flaC" according to this [http://flac.sourceforge.net/documentation_format_overview.html documentation]. For instance, to open PDFs with arospdf not localised in the default drawer of Icaros (Work:Extras/Applications/arospdf) but localised in a custom drawer in AROS. The default tools are defined in the icons in sys:prefs/env-archive/sys e.g. def_PDF. File type identification is done by datatype descriptors which you can find in Devs/Datatypes. The AROS build system has a tool which creates such datatype descriptors. '''Changing of default tools of existing icons is easy as shown above. Adding of new file types is not hard, but needs knowledge of the AROS build system.''' The enduser way would be to download the attached file, which contained two executables: 1) createdtdesc, to make a new datatype description 2) examinedtdesc, to read/show existing datatype descriptions use 2 to get an idea on how it things are currently done in aros by providing this executable a file from the drawer sys:devs/datatypes/ (alternatively you can find the original .dtd files here). use 1 to make your new datatype. Use the accompanied FORMAT file (also here) to read how to make your own datatype descriptor. use 2 to get hints from other datatype descriptors. Note: When creating a new descriptor would advise against using the pattern property, but instead use the default pattern of #? and create a Mask that matches your filetype. This requires some research in order to discover how your filetype can be recognized properly. Of course with making something like a descriptor for an ascii textfile, you would fallback to using the pattern (e.g. #?.text as the filetype cannot be determined easily otherwise). <pre > # name - choose wisely and informative. also used for icon's name. # version - choose as you like as long as it complies with version rules # basename - the 'root' datatype class. be aware that e.g. it can influence behaviour. for example when choosing binary and using tool multiview in project icon, the file will be viewed as binary file (choosing sound would tell mulitview to view the file as a soundfile). So this can influence the underlying tool being used. Could become messy if users started to modify the tool manually. # pattern - This is the file pattern match e.g. #?.text # Mask - A mask to identify the file. Requires knowledge of the actual file structure. For example 'M' 'Z' for an msdos executable. # GroupdID - not supported (AROS native) files - use syst as that would be the least intrusive in case an AROS tool/program tries to load such datatyped file. # ID - In your case, the first four characters of the name at subchapter 1 (in lower case) (or less if name is shorter). # flags - How the mask needs to be interpreted. In your case would be mostly DTF_BINARY in combination with (wanted or not) DTF_CASE (to tell if mask used letters are case sensitive or not) # priority - the priority of how the type is handled so that on datatype could have precedence over another? In any case, document tells it to be mostly 0. </pre > Now that you know each field and what it does (more or less), you write this fields in a text file for your own invented datatype, save it and create the actual dt with the tool in 1. in the end the created dt must reside in sys:devs/datatypes/ drawer. Then you would create a default icon in sys:prefs/Env-archive/SYS drawer. Don't forget to reboot or copy .info file to ram:env/sys in order to test. also don't forget to set which tool to start f.e. c:lx or dh4:emulators/mycoolemulator To test, open Wanderer then show all files and doubleclick on a file of type you just created. Alternatively you could use the 'open' command from shell (with file of datatype you just created as parameter). And as a last note. it would perhaps be welcome to have a program like xicon and/or runprglist for AROS (unfortunately both without source, but something similar could be created for AROS). Sounds complicated ? Perhaps... but OS like windows needs a complete registry to be able to do things like this. And yes, i am aware windows has gui tools that does it (more or less) for you (by manipulating the registry). Same could be done for AROS (without integrating a registry in AROS that is ). Would that suffice ? red1+2: typos, reformatting. disclaimer: please note that using these tools can screw up your currently installed support for datatypes when used incorrectly. Do not use if you do not understand what you are doing. Use at own risk. ==Network Connection== AROS currently only has one real choice for TCP/IP networking - AROSTCP. This is a port of the AmiTCP package from AmigaOS (TM), with a number of enhancements/fixes from AROS developers. Please use Prefs/Network to set up wired, wireless or USB networking Non USB wifi is easier, USB wifi can be an annoyance - remember to save whilst in prefs ===Wired=== =====IPv6===== No support so far 128bit IPv6 address packet <pre> Local FD::/8 Global 2000::/3 64:ff9b::/96 </pre> NAT64 translates IPv6 to IPv4 DNS64 OS routing works with <pre> MacOS Ventura Windows 11 with cloud account Ubuntu Jammy Jellyfish Android 10 (block google dns) </pre> ====IPv4==== The top half of the IPv4 Configuration tab on the Network Prefs deals with the network card/USB and the lower half the router part. [[File:AROS Wanderer Network Prefs DHCP.png|thumb|DHCP Settings]] '''Upper part of IPv4 tab''' * Click Add on the top right of the Prefs which opens a window called '''Interface''' * Enter Name as net0 (but can be anything as long as it is consistently used in other sections) * check mark on Active * select device to be used using the '''right hand-side gadget''' of the box where the device name will go * set Unit to 0 * IP Mode is default set to '''Get address from DHCP''' * IP Mode set to Manual if DHCP does not work automatically From the shell CLI, ifconfig -a Under net0: section, inet starting 192.168.x.xxx * inet or '''Address''' of network card * netmask convert to decimal so 0x'''ffffff7f''' becomes 255.255.255.247 which is used to adjust the above '''Address''' into * broadcast 192.168.xxx.xxx click OK [[File:AROS Wanderer Network Prefs Manual.png|thumb|Manual Settings]] '''Lower part of IPv4 tab''' * IP Mode Get address from DHCP (default) * or changing to Manual if automatic DHCP set up does not work * '''Gateway''' (Router Internal LAN-IP) (Default Route) = 192.168.0.1 (D-Link Netgear), 192.168.1.1 (Linksys 3com), 192.168.2.1 (SMC Microsoft), 192.168.1.254 (Belkin), 192.168.123.254 (USRobotics) else check with your router manual * first DNS = use 208.67.222.222 (opendns) or Gateway number above (to test web browser access to router) or 212.50.160.100 (google) i.e. or whatever your ISP needs you to set * second DNS = use 208.67.220.220 (opendns) or Gateway number above (to test web browser access to router) or 213.249.130.100 (google) i.e. or whatever your ISP needs you to set * At the bottom of IPv4 tab, check mark the '''Start networking during system boot''' option * Save and reboot (sometimes Network restart fails, so reboot every time to be sure) '''an alternative way''' to AROS ifconfig -a, other OSs have similar for the same internet connection. Another connection will have different settings. e.g. From [http://www.ncsu.edu/resnet/windows/ipconfig/ Windows], '''ipconfig /all''' and note down the IP, subnet mask, default gateway, and DNS servers values and put these values in "manually" into AROS Network prefs. e.g. From Linux via dhcp router have a look at etc./dhcpc/dhcpcd-eth0.info * for manual input look at /etc/networks (IP or Gateway) and /etc/resolv.conf (DNS) Please note that all in one routers (wired+wireless) or separate routers may need different settings IPv4 involves routing (192,168.x.x), firewall, NAT ===Wireless=== [[File:MyArosWirelessSetup.png|thumb|Setting up]] [[File:MyArosWirelessTCP.png|thumb|Shell commands to work out what is happening]] We must first make certain you have a Atheros 5k chip inside acting as the wireless wifi option. Open PCITool in Tools directory. Down left hand side are a series of numbers 0.00.0 etc. Click on some at the bottom and hopefully one of them will say Atheros AR5??? or AR242?. or a Realtek RTL8187B, we can check using Prefs/Trident as this one is USB based There are many similarities with the above Wired set up so please read the above section as well * open Network/Prefs * In '''IPv4 Configuration''' tab - click Add - enter net0 / active tick / #?.device / Unit 0 / IP Mode = manual (important if default DHCP does not work automatically) Make sure that any extra network names (e.g. eth1 or net1) should be deleted. If net0 already st previously, change net0 so that it shows associated with the appropriate device name like atheros5000.device or realtek8180.device. Having two entries here will cause sub-net problems. * Go to '''Wireless''' tab and click on "Add" button. * Insert network name (SSID your wireless network name use wirelessmanager to get it), select right "encyption" that is most likely "WPA". * Key Type set as "Passphrase". i.e. type in your password for your router (aka access key). * Unselect (no tick) "hidden" if it is selected, then apply. You may have to tick it if wireless does not work. * Finally, Save and '''reboot'''. For the best chance of success, set networking to start at boot, and then reboot with the USB adapter plugged in. ===USB Ethernet=== Open SYS:Prefs/Network and in the IPv4 Configuration tag (top table covers your usb stick) * click Add button * set Name as net0 * Tick Active box * enter the usb-ethernet.device e.g. dm9601eth.device, usbpegasus.device or usbasixeth.device use SYS:c/devlist, '''Scout''' or trident prefs to get the correct spelling * set Unit to 0 (which is usual but check the messages from the bottom of the Trident prefs whilst plugging the device in to determine the unit number otherwise) * IP Mode is set to Get address from DHCP (make sure your router is set right for that) '''or manual''' * IP Address of network card, i.e. 192.168.0.xx or 192.168.1.xx (xx being greater than 1) * Subnet netmask = 255.255.255.0 * click OK There can be sometimes be boot failures when using USB ethernet - plug the USB device in after boot and save the network prefs to make it work again. Lower part of IPv4 tab covers the router information * IP Mode Get address from DHCP '''or if manual settings''' * Gateway (IP Address of router) = usually 192.168.0.1 or 192.168.1.1 but see router manual to make sure. * first DNS = use 8.8.8.8, 208.67.222.222 (opendns) or 212.50.160.100 * second DNS = use 8.8.4.4, 208.67.220.220 (opendns) or 213.249.130.100 ===USB Tethering via Android smartphone=== Go to AROS Network Prefs (IPv4 configuration tab) and write type in "usbrndis.device" in the "device" textfield of "Interface" sub-window, which appears when you add a new device (or modify an existing one). Select "Start Network during system boot" and saved the configuration, the Connection is immediate no reboot is needed.<br> usbrndis.device is a resident device (virtually always there) in fact, a driver is not present in DEVS:Networks <br><br> Plug in USB cable, go to Android settings and enable "USB Tethering" <br> A reboot should not be necessary. When restarting AROS, the Smartphone deactivates the connection and to access the network again have to reactivate it before starting the browser. ===Solving Issues=== [[File:MyArosTCP.png|thumb|Aros network setup diagnostics - why does it not work?]] * In Network Preferences, have '''only one''' item in the IPv4 Configuration tab * If using manual settings, make sure all numbers are correct, especially for IP address of the card/usb (changing the last number in chain of four) * For any USB based networking, it is often necessary to save in Prefs/Network, reboot AROS and network support can begin * For wired, make sure that the LAN-cable is plugged in before starting the computer * If wireless, try getting closer to the router. * Switch off the encryption option from your router then try wifi, if successful then your ip/dns is ok. If not then your ip/dns settings are most probably wrong or need to use one or more opendns numbers * Replace detachable wireless antenna (best wireless option to buy if you can) with a stronger antenna ie. 5&nbsp;dBi or 7&nbsp;dBi * Try with another computer/laptop/machine Program Error C:WirelessManager * Test with another OS * Check that Wifi works before changeover (if possible) * Check that socket and card are working * Check if card is too new for laptop (date code on card MMYY blue askey date 2005-2007 etc) Are you connecting with the Router ? Check with protection off e.g. wps and wep to see if it makes a difference. For USB wireless - stopping and starting may be needed... <pre> ; $VER: AROSTCP-startnet 1.0 (01/08/06) ; AROSTCP-startnet (c) The AROS Dev Team. ; Run <NIL: >NIL: AROSTCP WaitForPort AROSTCP If NOT Warn ; echo "Stack online" Else echo "Wait for Stack Failed" EndIf ; stop and restart execute "sys:system/network/AROSTCP/s/stopnet" Run <NIL: >NIL: AROSTCP WaitForPort AROSTCP If NOT Warn ; echo "Stack online" Else echo "Wait for Stack Failed" EndIf run <NIL: >NIL: wirelessmanager realtek8180.device </pre> What IRQ number is assigned to the device? You can check with Tools/PCITool? It's possible the BIOS hasn't set the right IRQ number. If you have a Linux CD/DVD handy, could you check if it boots with the options "acpi=off noapic nolapic"? If the following does nothing, this will help us figure out why networking doesn't start automatically at boot open a shell and run the following commands: <pre> echo ${AROSTCP/AutoRun} echo ${AROSTCP/WirelessAutoRun} echo ${AROSTCP/WirelessDevice} </pre> Please report the output, typically it will look like this # True (explanation this variable is related to the "Start networking during system boot" checkbox in network prefs) # True () # Devs:networks/atheros5000.device unit 0 If there's a problem with the AROSTCP package. What's the output of this? ENV:sys/packages/AROSTCP should return a string = Sys:System/Network/AROSTCP By the way, a quicker way to check networking is working would be to run some shell commands such as: <pre> ping www.google.com ifconfig net0 </pre> The best way to list the available networks and diagnose / troubleshoot problems with connecting to a wireless network is to run WirelessManager manually. First uncheck the "Start networking during system boot" box in the Network prefs app, then save and reboot. Then run this in a shell: C:wirelessmanager atheros5000.device verbose or C:wirelessmanager realtek8180.device verbose and capture the output If the above does not help, could you edit the file SYS:System/Network/AROSTCP/S/Package-Startup, and change ">NIL:" to ">T:wifi.log" on the WirelessManager line and add this as well Wait 5? <pre> if ${AROSTCP/WirelessAutoRun} eq "True" Run QUIET "C:WirelessManager ${AROSTCP/WirelessDevice} >T:wifi.log" wait 5 EndIf </pre> Then save, reboot and post the log file (T:wifi.log) here. <pre> c:wirelessmanager atheros5000.device verbose Initializing interface 'atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Reading configuration file 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=7) 65 63 68 65 6c 6f 6e echelon PSK (ASCII passphrase) - hexdump_ascii(len=14): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='echelon' Then it just sits there. Not sure what a normal dump looks like, I don't see anything that looks wrong in the configuration. </pre> looks like the driver isn't working with that card. Has anyone else successfully used that exact model number (AR2413)? <pre> Initializing interface 'atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=7): 65 63 68 65 6c 6f 6e echelon PSK (ASCII passphrase) - hexdump_ascii(len=14): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='echelon' *** [wpa_sm_init] sm->pmksa=02c66fd4 *** Own MAC address: 00:01:36:15:ae:0c RSN: flushing PMKID list in the driver Setting scan request: 0 sec 100000 usec EAPOL: SUPP_PAE entering state DISCONNECTED EAPOL: Supplicant port status: Unauthorized EAPOL: KEY_RX entering state NO_KEY_RECEIVE EAPOL: SUPP_BE entering state INITIALIZE EAP: EAP entering state DISABLED EAPOL: Supplicant port status: Unauthorized EAPOL: Supplicant port status: Unauthorized Added interface atheros5000.device:0 State: DISCONNECTED -> SCANNING Started AP scan for wildcard SSID MLME: starting scan MLME: scan channel 1 (2412 MHz) sana2: sending MLME frame Then it stops. Does this mean the router is not authorizing this NIC? IRQ 4 (A) </pre> apparently locking up when the first frame is sent (a scan request). <pre> Devs/Networks/atheros5000.device:0 Initializing interface 'Devs/Networks/atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Reading configuration file 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=12): 41 69 72 4c 69 6e 6b 35 39 33 30 30 AirLink59300 PSK (ASCII passphrase) - hexdump_ascii(len=8): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='AirLink59300' *** [wpa_sm_init] sm->pmksa=0224e444 *** Own MAC address: 00:1f:e1:42:e3:7a RSN: flushing PMKID list in the driver Setting scan request: 0 sec 100000 usec [eloop_reg_timeout] Timeout is at 1317686594.160000 EAPOL: SUPP_PAE entering state DISCONNECTED EAPOL: Supplicant port status: Unauthorized EAPOL: KEY_RX entering state NO_KEY_RECEIVE EAPOL: SUPP_BE entering state INITIALIZE EAP: EAP entering state DISABLED EAPOL: Supplicant port status: Unauthorized EAPOL: Supplicant port status: Unauthorized [eloop_reg_timeout] Timeout is at 1317686595.060000 [eloop_reg_timeout] Timeout is at 1317686604.060000 Added interface Devs/Networks/atheros5000.device:0 [eloop_run] Starting State: DISCONNECTED -> SCANNING Starting AP scan for wildcard SSID MLME: starting scan [eloop_reg_timeout] Timeout is at 1317686594.160001 MLME: scan channel 1 (2412 MHz) [eloop_reg_timeout] Timeout is at 1317686594.193000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.233000 MLME: scan channel 2 (2417 MHz) [eloop_reg_timeout] Timeout is at 1317686594.253000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.293000 MLME: scan channel 3 (2422 MHz) [eloop_reg_timeout] Timeout is at 1317686594.333000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.373000 MLME: scan channel 4 (2427 MHz) [eloop_reg_timeout] Timeout is at 1317686594.393000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.433000 MLME: scan channel 5 (2432 MHz) [eloop_reg_timeout] Timeout is at 1317686594.473000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.513000 MLME: scan channel 6 (2437 MHz) [eloop_reg_timeout] Timeout is at 1317686594.553000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.573000 MLME: scan channel 7 (2442 MHz) [eloop_reg_timeout] Timeout is at 1317686594.613000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.653000 MLME: scan channel 8 (2447 MHz) [eloop_reg_timeout] Timeout is at 1317686594.693000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.713000 MLME: scan channel 9 (2452 MHz) [eloop_reg_timeout] Timeout is at 1317686594.753000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.793000 MLME: scan channel 10 (2457 MHz) [eloop_reg_timeout] Timeout is at 1317686594.833000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.853000 MLME: scan channel 11 (2462 MHz) [eloop_reg_timeout] Timeout is at 1317686594.893000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.933000 MLME: scan channel 12 (2467 MHz) [eloop_reg_timeout] Timeout is at 1317686594.973000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.013000 MLME: scan channel 13 (2472 MHz) [eloop_reg_timeout] Timeout is at 1317686595.033000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.073000 EAPOL: disable timer tick EAPOL: Supplicant port status: Unauthorized MLME: scan channel 14 (2484 MHz) [eloop_reg_timeout] Timeout is at 1317686595.113000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.153000 MLME: scan channel 1 (2412 MHz) [eloop_reg_timeout] Timeout is at 1317686595.193000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.213000 MLME: scan channel 2 (2417 MHz) [eloop_reg_timeout] Timeout is at 1317686595.253000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.293000 MLME: scan channel 3 (2422 MHz) [eloop_reg_timeout] Timeout is at 1317686595.333000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.353000 MLME: scan channel 4 (2427 MHz) [eloop_reg_timeout] Timeout is at 1317686595.393000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.433000 MLME: scan channel 5 (2432 MHz) [eloop_reg_timeout] Timeout is at 1317686595.473000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.493000 MLME: scan channel 6 (2437 MHz) [eloop_reg_timeout] Timeout is at 1317686595.533000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.573000 MLME: scan channel 7 (2442 MHz) [eloop_reg_timeout] Timeout is at 1317686595.613000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.653000 MLME: scan channel 8 (2447 MHz) [eloop_reg_timeout] Timeout is at 1317686595.673000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.713000 MLME: scan channel 9 (2452 MHz) [eloop_reg_timeout] Timeout is at 1317686595.753000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.793000 MLME: scan channel 10 (2457 MHz) [eloop_reg_timeout] Timeout is at 1317686595.833000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.853000 MLME: scan channel 11 (2462 MHz) [eloop_reg_timeout] Timeout is at 1317686595.893000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.933000 MLME: scan channel 12 (2467 MHz) [eloop_reg_timeout] Timeout is at 1317686595.973000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.993000 MLME: scan channel 13 (2472 MHz) [eloop_reg_timeout] Timeout is at 1317686596.033000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686596.073000 MLME: scan completed </pre> Is your network hidden? If so, did you enable the 'Hidden' checkbox in the network prefs? What distro version are you using? <pre> "ENV:sys/wireless.prefs" looks like this: network={ ssid="testadhoc" key_mgmt=NONE wep_key0="12345" wep_tx_keyidx=0 } </pre> If your router doesn't broadcast its SSID (hidden), you need to add this option to the network block of the wpa_supplicant.conf on your aros machine and make changes after # Example blocks: scan_ssid=1 Here's a full description of all the [http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/wpa_supplicant.conf config file options]. <pre> ap_scan=1 network={ ssid="YOURESSID" scan_ssid=1 proto=RSN key_mgmt=WPA-PSK pairwise=CCMP group=CCMP psk=YOURPASSWORD } </pre> <pre> filter_ssids=1 ap_scan=2 network={ ssid="REMOVED" scan_ssid=1 bssid=REMOVED priority=100 mode=0 proto=RSN key_mgmt=WPA-PSK auth_alg=OPEN pairwise=CCMP group=CCMP psk=REMOVED } </pre> Error 6: Couldn't resolve host name. Check Scout -> Devices and look at the device that you are using, in the OCnt column it should state 2 which means AROSTCP and Wirelessmanager are both accessing this driver. If 0 or 1, then uncheck the checkbox in Network prefs for starting networking at boot, save and reboot. Then run this is the shell: C:WirelessManager realtek8180.device unit 0 some quirks setting up the wireless network as well 1) it's far better setting up either the wired OR the wireless network adapter as net0:, or weird things happen 2) it's better using fixed IP on the local network instead of DHCP 3) network setting must be placed in network setting panel in /prefs, using the wirelessmanager helped me finding available SSIDs, but not actually connecting to them once done, reboot. If previous setup is proving problematic <pre > SYS:Prefs/Env-Archive/Wireless.prefs SYS:Prefs/Env-Archive/Zune/OWB.config SYS:Prefs/Env-Archive/Zune/global.config SYS:Prefs/Env-Archive/AROSTCP/WirelessDevice SYS:Prefs/Env-Archive/AROSTCP/db/Interfaces </pre > Make a copy of these files and restore in case of problems. Please try this test to check if you can connect to your router, ie established that the WiFi layer is working ̊̊̊̊Boot with networking disabled, by make sure that "Start networking at boot" in Network Prefs is unchecked (no tick). ̊ Run this in a shell: C:WirelessManager atheros5000.device VERBOSE ̊If the output of that command is too long to summarise here, you can redirect it to a file by adding >RAM:wifi.log to the end, then attach or paste that file here. try running "status" in the shell and check that AROSTCP is listed/running If AROStcp is not showing, then AROSTCP is not running. attempted to start it by clicking Use or Save in network prefs, or checking the "start networking at boot" box or typing into a shell. Execute SYS:System/Network/AROSTCP/s/startnet (run Status again afterwards). The "cannot resolve hostname" will appear if you are blocked on the wifi network by the router as well as aros not being able to assign correct network address. One way of testing this might be to disable the firewall in the router. you might also check the router how it sees the attempts aros do to speak to it. The easiest way to do that would be to manually give aros an IP number in the routers accepted range. and see if it shows up at all within the router. Tests that can be undertaken to determine correct settings and functions pciinfo sanautil -d broadcom4400.device status <pre > ping <router-address> e.g. 192.168.0.1 (aka inet) or 80.237.146.33 (www.amiganews.de) ifconfig net0 ifconfig net0 up extras:networking/utils/sanautil/sanautil -d atheros5000.device status WirelessManager atheros5000.device verbose >RAM:wifi.log ;to send the log to RAM disk to be read easier or if detected, Run WirelessManager atheros5000.device >NIL: Run WirelessManager atheros5000.device ssid="mynet1" >NIL: C:WirelessManager realtek8180.device unit 0 </pre > Please look at the task list in Scout, and check if WirelessManager and AROSTCP are running. Also look at the device list in Scout to check if realtek8180.device is open. start tools/debug/sashimi, maybe it shows some debug messages when disconnection happens. Firstly, let's take a look at what your setup most likely looks like, assuming you use a router. See diagram below: <pre> Internet <---------> home router <---------> computer -----------external IP------------------internal IP------------- </pre> Okay, so what am I trying to show you with that diagram. A few things. Firstly, the IP address that connects you to the Internet is not the same one that connects you to your router. What happens is that your computer doesn't have a direct connection to the Internet, instead your router connects to the Internet, and your computer connects to the router. You can see the external and internal IP addresses in these example settings... * Default Gateway : 76.91.64.1 (external IP for ISP/Internet host) * IP Address : 76.91.71.184 (external IP for home router) * IP Address : 192.168.0.1 (internal IP for home router) * Address = 192.168.0.161 (internal IP for computer) As you can see, there are two internal IP addresses and two external IP addresses. This is because there is a client/server relationship, effectively one address is for the service (server) and one address is for the device trying to access that service (client). The server addresses in your case are 76.91.64.1 (your ISP's address, serving the Internet), and 192.168.0.1 (your home router's address, serving your home network). The term gateway applies here, they are your gateway to those services. Subnet masks are used along with IP addresses to determine which IP addresses are allowed access to a network. I did learn the more in-depth rules about subnet masks once (watched a CCNA vid), but I've forgotten about it. The basic level of understanding you'll need is easy to remember though. A subnet mask value of 255 means that portion of the IP address must stay constant, whereas a subnet value of 0 means any unassigned value up to 255 is allowed in the IP address. By far the most common subnet value is 255.255.255.0. What this means is that the first three parts of the IP address you use to connect to a service must stay the same as the server/gateway address, and only the last section can change. So if your router's internal IP address is 192.168.0.1, and the subnet mask is 255.255.255.0, the only addresses that will be allowed to be used on that network are between 192.168.0.2 and 192.168.0.255 (I think 192.168.0.0 is reserved for other uses). Final point to make is about DHCP (a.k.a. dynamic IP) vs static IP. A server/router using DHCP gives a device that connects to it an address within the acceptable range. It usually starts with the lowest numbered free address, so with your router it'll give the first device that connects to it 192.168.0.2, the next device 192.168.0.3, and so on. Static IP addresses are where you set the IP address you want to connect with in advance. When using static IP addresses on a router where DHCP is active, it's good to use a high number to avoid conflicts with other devices that are connected to your network, to reduce the risk that both devices will try using the same IP. That's why your current choice of 192.168.0.161 is good, unless you have over 159 devices connected on your current network! Okay, so what's the next step. Well, if you can use ping, I'd suggest pinging 192.168.0.1. If you get a positive response it means you're connected to your router, if you don't get a response it means the connection between your router and your computer is at fault. Documentation on configuring the AROSTCP environment further can be found [http://en.wikibooks.org/wiki/Aros/User/Networking here] ===File Sharing=== As AROS knows only a few filesystems (FFS, OFS, SFS, PFS (amiga only), FAT12, 16, 32, Microsoft NTFS (windows), UDF (Blu-ray)). The others in regular use like MacOSX hfs+, Linux ext2/ext3 and ext4, Haiku BeFS provide a problem in transferring files. Linux can access SFS partitions but it needs to be compiled. The latest full source are [http://home.elka.pw.edu.pl/~mszyprow/programy/asfs/ here]. It compiled fine with a 2.6.30 kernel in Puppy Linux 4.31. An alternative, is to use a FAT32 partition to share. Setup first with a 2G FAT32 partition for sharing, and the rest of the space as SFS for an Aros install. It works very well. Files could be transferred via TCP internet network. ====SMB2/3==== With Windows you can share one folder or all folders of the "Public" user. On Windows what is important is to enable sharing (Network and Sharing Center). AROS Mountlist should look lke this <pre> Handler = L:smb2-handler StackSize = 65536 Priority = 5 GlobVec = -1 ACTIVATE=1 Startup = "smb://UserAcc:password@PCShare/Sharefolder" </pre> which could also be "smb://UserPC:password@192.168.x.x/Public" or "smb://UserPC:password@Name-PC/Public" so "smb://UserPC:password@192.168.1.158/Folder" or "smb://UserPC:password@Name-PC/Folder" After you have configured a share generates a DOSDrivers it is named "SMB0" which includes the setting, and at each reboot it is Mounted. You can still delete the DOSDriver by hand, is located in Storage/DOSDrivers, the file "ServerAutoMounts", in ENV:AROSTCP which indicates the DOSDriver to be mounted, should also be deleted. The per-mount files are written to ENV:SMB or SYS:Storage/DOSDrivers. There is also additional file ENV:AROSTCP/ServerAutoMounts which states what will be presented to the end user. ====Old SMBFS==== e.g. to connect to a NAS share such as \\NASBOX\Shared use -: SMBFS WORKGROUP=<YOUR WORKGROUP NAME> VOLUME=<AROS volume name to use>: SERVICE=<UNC Path to connect to> SMBFS WORKGROUP=MYNET VOLUME=Shared: SERVICE=//NASBOX/Shared And you will then have an icon appear on your desktop for the volume name you have chosen. You can put the above script into wbstartup or give it an icon, change it to a 'project' and give it the default tool c:iconx Open a shell and type copy sys:script.info "sys:wbstartup/YOURSCRIPTNAME.info" This should create an icon for your script file. Now right-click on your script and select 'information'. Change 'tool' to 'project', put 'c:iconx' into the 'default tool' box, click save The reason being that scripts need to be opened with 'execute SCRIPTNAME' (or 'iconx') whereas the programs started from wbstartup are opened using 'run PROGRAMNAME'. It's the same as trying to start a command-line tool from the workbench by double-clicking it. ====Setup ISO images within AROS==== Use [http://archives.aros-exec.org/index.php?function=browse&cat=driver/storage DiskImage] which supports many cd image formats ISO, CCD, MDF/MDS, CUE/BIN, NRG and UIF. To mount CD or DVD images use below.... <pre > # Rename your iso 'Unit0' (note no extension). # Do 'View/All files' on you Aros partition. You should now see a folder called 'Diskimages'. Copy your renamed iso to there. (Alternatively, you could type at the shell 'assign FDSK: xxx', where xxx is the location of your iso.) # From the shell, type 'mount CD0:' and the iso should appear on the Wanderer desktop. You can now access it like a real disk. </pre > assign devname: dismount Assign DOSVOLUME: remove [http://aminet.net/package/disk/misc/unmount-0.1 unmount] most filesystems work but SFS lacks support for ACTION_DIE packet If you are using an IcAros install, the startup scripts are set up to wipe the Diskimages directory on boot, so its worth keeping a second copy of the iso somewhere else. Alternatively, you could set up extra mountlists for additional iso images. I've made a file called iso1 in the Aros:devs directory that contains the following text: <pre> /* Entry for ISO image */ ISO1: FileSystem = cdrom.handler Device = fdsk.device Unit = 1 LowCyl = 0 HighCyl = 0 Surfaces = 1 BlocksPerTrack = 1 DOSType = 0x41434400 Activate = 1 # </pre> Then I just need an iso called 'Unit1' (corresponding to the 'Unit = 1' entry in the mountlist) in Diskimages (or wherever I assign FDSK: to) and to mount I type in at the shell: Mount iso1: from devs:iso1 Of course, if you create mountlists for ISO2, ISO3:, etc. (with the corresponding change to the 'Unit = ' line) you can have as many isos mounted as you wish. I just call mine ISO1: etc. to distinguish them from the real CD drives ==Video Guides== Video demonstrations and tutorials covering: :00. '''Introduction''' ::[https://www.youtube.com/@jamesmattson6813/videos Various Aros Installs], ::[https://www.youtube.com/embed/j8EmSEby0Rg AROS repo in gource, view of AROS dev commits from 1997 to 2025], [http://www.youtube.com/watch?v=Vx_zqlBow40&feature=related Gource view of AROS 1997 up to 2009], ::[http://www.youtube.com/watch?v=s1RsvEm7UrU Why an Amiga OS in 2011], ::[https://www.youtube.com/watch?v=1W886mheV74&pp=ygUPYW1pZ2EgYXJvcyAyMDI2 Johan Grip on early days of AROS x86], [https://www.youtube.com/watch?v=mXaKDhtTTqQ&t=14s&pp=ygUPYW1pZ2EgYXJvcyAyMDI2 Michel Schulz on Aros and PiStorm], :01. '''Installation''' ::[https://www.youtube.com/watch?v=M7YjufrJqDs Aros One install], [https://www.youtube.com/watch?v=iIMguHTdC5E Aros One USB install], [https://www.youtube.com/watch?v=ZNXauy5m5Wc Aros One install], [http://vimeo.com/11013489 Modify Grub boot], ::[http://www.youtube.com/watch?v=wyQVeyXIywc&feature=channel iMica Silent Pt3], [http://www.youtube.com/watch?v=o2AnkoflY14 Wipe whole drive and Install - warning loss of data on drive], ::[http://www.youtube.com/watch?v=OVXm6_-witQ VirtualBox install], [ VMware install], ::[http://www.youtube.com/watch?v=0k2PEmT8I14 Broadway AROS Install], ::[https://www.youtube.com/watch?v=PtDiXhjSIfs Is Aros Icaros a choice?], ::[ driver install], ::[http://www.vimeo.com/10491104 HDAudio install but needs account], [], :02. '''Amiga Basics''' ::[http://www.youtube.com/watch?v=TY8mWxwzH5o Screens tutorial], ::[https://m.youtube.com/user/AMIGASYSTEM/videos General], [ Dos Scripts tutorial], [http://www.youtube.com/watch?v=hPT7SmVEpjc OS 1.2], [http://www.youtube.com/watch?v=n6kX3FqH8Ww&feature=related OS 1.3], :03. '''Customisation demos''' ::[https://www.youtube.com/@AMIGASYSTEM/videos Prefs tutorial], [ Decoration tutorial], [http://www.youtube.com/watch?v=Dn5C8G3aDXU Scalos], :04. '''Setting up''' internet access and surfing the web, FTP, IRC and Mail apps ::[ Network Prefs], [ AirCOS tutorial], [ jabberwocky tutorial], :05. '''Native bundled Games and Applications''' ::[http://www.youtube.com/watch?v=aYlFv2B-VXc 3D Games], [http://www.youtube.com/watch?v=MXK7wwhd-R0 Latest Games], [http://www.youtube.com/watch?v=RUgiVThv23Q&feature=mfu_in_order&list=UL PrBoom GL], [http://www.youtube.com/watch?v=0s7u8TPy7V4 Assault Cubes], [http://www.youtube.com/watch?v=fih6aCXKeqs Cube 2], [http://www.youtube.com/watch?v=-X0ay0MGOms DosBox on Aros], [http://www.youtube.com/watch?v=7nKduDjf14k Oct 2010], ::[http://www.youtube.com/watch?v=FziV2z_uxnQ Apps Pt 1], [http://www.youtube.com/watch?v=xs37_nfa5CI Apps Pt 2], [http://www.youtube.com/watch?v=Bn59_VvbQR0&feature=related Apps Pt 3], ::DOpus4 [http://www.youtube.com/watch?v=aSRybWjrrME DOpus 4], ::Milkytracker [http://www.youtube.com/watch?v=VxBOEPzpdKg&feature=related Laying Down Base Tracks], ::[http://www.youtube.com/watch?v=k2uKQ0-ieOE Audio Evolution 4 in action], [http://www.youtube.com/watch?v=Zq4r9k0_jZI Quick Videos], ::[http://www.youtube.com/watch?v=gGKCFZcIc0I&feature=related ScreenRecorder], [http://www.youtube.com/watch?v=974c2e-Fqak&feature=related TV out Tests], ::[http://www.youtube.com/watch?v=fjq8ct5d5IY AmiFIG], [http://www.youtube.com/watch?v=h0rHvPhYJo4&feature=youtu.be ZuneFIG], ::[http://wiki.povray.org/content/Documentation:Tutorial_Section_1 POVray Tutorial 1], ::[http://www.youtube.com/watch?v=Jk-ZNLfJsvQ pt 1, jan. 2008], [http://www.youtube.com/watch?v=nWRy33g1R7Y pt 2, feb. 2009], [http://www.youtube.com/watch?v=r5PbhCtm4vE pt 3, feb. 2010], ::[https://www.youtube.com/watch?v=G7_FJUoQ89o Hollywood programming], [], [], [], ::[], [], [], ::[], [], [], ::[], [], [], :06. '''Commercial software available''' ::[http://www.youtube.com/watch?v=fKXY9B4R43s AntiryadGX 3D Game Editor], ::[http://www.youtube.com/watch?v=TMS9NDzwm5U BOH indie Game], :07. '''Running classic amiga apps and games''' :: Amiberry [], [], ::[http://vmwaros.blogspot.com/2008/11/introducing-amibridge.html Intro Amibridge], [http://www.youtube.com/watch?v=ee2PWvCZeLo Old Amiga Apps], [http://www.youtube.com/watch?v=ee2PWvCZeLo Why Janus UAE is good], ::[https://www.youtube.com/watch?v=VhlsNSYSuDg DPaint tutorial] ::[http://vmwaros.blogspot.com/2009/11/can-icaros-play-my-amiga-games-and-why.html Play Amiga Games], [https://www.youtube.com/watch?v=XTaZCNOvCnE], ::[http://www.youtube.com/watch?v=tMehS77LXQ4 Pagestream Introduction], [http://www.youtube.com/watch?v=284-w3hTzII Pagestream Tutorial 1], [http://www.youtube.com/watch?v=mlwEGwhZzl4 Pagestream Tutorial 2], ::[http://www.youtube.com/watch?v=iIcrIjPOctc Catweasel Mk4 PCI Part 1] and [http://www.youtube.com/watch?v=BaitHeL6bEA Part 2], :08. '''Misc and History''' ::[http://www.youtube.com/watch?v=d6mDXKU29w0 Mum uses old AmigaOS Workbench 1.1 (1986)], [http://www.youtube.com/watch?v=DaRkacQ-YMg Why an Amiga 500 (1987)], [http://www.youtube.com/watch?v=k5CYsgVCzYY an Amiga 2000 (1987)], :09. '''Misc Shows and Events''' ::[http://www.youtube.com/watch?v=klgVSWKs4kE VCF 2010], [https://www.youtube.com/watch?v=eQ3d5qR-Hv8 24:06 Jason McMullan at amiwest 2012 about AROS], [https://www.youtube.com/watch?v=jpQO7XSfAv4 Aros SMP multi core amiwest 2013], [], [https://www.youtube.com/watch?v=gFRtAAmiFbE], [https://www.youtube.com/watch?v=DjdUEyjx8GM], [https://www.youtube.com/watch?v=ydYDqZQpim8], [], [https://www.youtube.com/@uminekoshouten/featured], [https://www.youtube.com/shorts/NfoY023w-vE], :10. ::[https://www.youtube.com/shorts/6qJTNW4-6GY] ===History=== The project was originally started by a small group of Amiga [http://www.amigahistory.co.uk/aros.html enthusiasts] in 1995. These individuals were mainly computer-based college university students at the start, though that student trend has diminished since. An interview with Aaron Digulla [http://arosshow.blogspot.com/2006/12/interview-with-aaron-digulla-who.html here] * 1992 Commodore folds * 1996-1998 much of the early years was concerned with exec, dos and intuition libraries. * Early 1999, Haage & Partner used parts of the AROS code in AmigaOS 3.9. * March 2001, floppy disk images of AROS became available. * Early 2002, AROS changed its name from Amiga Replacement Operating System to Amiga Research Operating System * June 2002, AROS devs decided to use Zune (MUI 3.8 rewrite) as the GUI system. * November 2002, Eric Schwartz drew Kitty for AROS usage. * Early 2003, AROS.org underwent a graphics facelift. * Late 2003, GCC C compiler arrived. * Early 2004, Aros-Exec opened. * Early 2005, Aros Max bootable CD arrived. * Late 2005, SFS filesystem ported and allowed fast access to apps and network support arrived * Early 2007, AROS.org underwent another graphics facelift. * Mid-2007, AROS changed to AROS Research Operating System after A.Inc. sued Hyperion with a trademark violation. * Late 2007, the hard disk installer added and VmwAROS (later called Icaros Desktop) distro launched. * Early 2009, Our first usable web browser (OWB) * September 2010, first wireless support appears and AspireOS started as a distro * Early 2012, the first paper-cut bugfix and Fab's Odyssey Web Browser ported * Early 2014, backport of most features of ABIv1 into mainstream everyday use (Icaros 2.0 and above) * 2015 work started on using the extra cores of the PI 2 * Early 2017, work started on utilising the addition cores on modern CPUs starting with the 64bit x86 version * Mid-2017, m68k port optimized for the Vampire 2 / Apollo accelerators (68080 AMMX FPGA) * 2018 The old AROS Exec website closed and a new one opened * 2019 AROS One distribution started and now with USB install version * Early 2021, backport of more features of ABIv1 into mainstream everyday ABIv0 (Aros One 1.5 and above) * 2025 year of 64bit pc builds and porting 32bit applications to 64bit ABIv11 * 2026 update to 2015 and earlier [https://www.youtube.com/watch?v=6FKTL068ULM&pp=ygUPYXJvcyBhbWlnYSAyMDI2 nvidia nouveau driver] ===Bounties=== To help inspire developers with both ideas and monetary incentives, rewards are offered for the successful completion of "bounties" (requests for missing/new functionality) chosen by the community and handled by [http://power2people.org power2people] (formerly done by TeamAROS). A monthly option is [http://www.power2people.org/funds/aros/ here]. Future goals for AROS include expanding its underlying retargetability to support even more diverse architectures, provide memory protection features and user level file security, SMP and many other wonderful features missing from AmigaOS &mdash; while still providing as much source level compatibility as is possible (however it is accepted that to achieve some goals code certain things may require a little recoding). [http://www.ohloh.net/p/aros/contributors Developers] come and go as with any open source effort and we would like to thank them for their efforts... ;1996-2000:In DigullaA (coordinator), GripJ, TempletonI (BSD), SchulzM, RittauS, voordenDagL, HolmM, JohanssonT, VanIngelgomH, SteigerwaldM, BortasP, deJongK, AlfredssonJ, InnocentiB, ;2001-2005:In [http://chodorowski.com/adam/aros.html ChodorowskiA], StegerG, BergerS, HeutlingS, AlemagnaF (gcc), VerhaegenS (rexx), KielH, MatheussenKS (CAMD), SzczygielskiP, ErikssonP, LeCorfecD (Zune), BauerS (Zune), FurlongW, GustafssonJ, AndrewsN, CafferkeyN, GierichM (jpeg), PattonJ, ParsonsM, DietrichJ, SeilerT, BischoffL, LorentzenNH, AdamO, BerglundH, SmithP, HolmenD, BlomM, ;2006-2010:In FedinP, RusslerM, SzymczykS (owb), SmiechowiczK (openGL), WeissM, NorrisR, BrunnerO, WiszkowskiT, GreppinA, [http://www.fukt.bsnet.se/~bearsoft/ Bearsoft Björn Screwelius], ErbY, CharletF, HodgesC, [http://aros-exec.org/modules/newbb/viewtopic.php?topic_id=4819&forum=18&post_id=43103#forumpost43103 HokstadV], McMullanJ (m68k), WilenT (m68k), ;2011- :In MuijzenbergPHvanden, ALB42, JonesEM, weiju, DizzyofCRN, wawa, miker, * 1996 - The linux hosted version for i386 was the first to arrive * 1998 - i386, The native version for i386-based PC AT computers and compatibles. * 2004 - x86/64, The native version for 64-bit (x86_64, amd64) PC computers. * 2008 - sam440/ppc, The native version for Sam440EP, Sam440EP Flex and Sam460ex computers. * 2009 - efika, The native version for PowerPC Efika computers. * 2010 - m68k, The native version for m68k Amigas or WinUAE * 2013 - raspi/armfh, early native version for ARMv6 based Raspberry Pi computers. * 2017 - x86/64bit smp Debugging capture serial debug at all (especially with sysdebug=all or --sysdebug=all) to see it displayed on screen * yes, usb -> rs232 adapters can work most of the time, some of the cheapest ones are not fully compatible with all rs232 devices to capture to another device * you will need a null modem cable (or a null modem adapter usually female to female) in addition to the usb -> rs232 adapter (usb adapter is a normal modem ie. the pins are not crossed over) Normal modem cable - straight connection DCE <pre> Pin 2 -> Pin 2 RXD Pin 3 -> Pin 3 TXD Pin 5 -> Pin 5 GND </pre> Null modem cable connections DTE <pre> Pin 2 -> Pin 3 Pin 3 -> Pin 2 Pin 5 -> Pin 5 </pre> (9pole SUB-D) <pre> serial ser: (amiga/aros) tty2 tty1USB0 (linux) COM1 (windows) (depends on the os being used) speed baud transfer rate 9600 38400 lower baud might be more successful data bits 8 stop bits 1 parity none handshaking flow control - none xon/xoff (most likely) rts/cts dsr/dtr (pins not connected so should not work) </pre> *You cannot use compiled aros X86-64 bit software (when ready) on aros X86 32bit. PPC compiled software on X86 and so on. *68k is tested with the UAE emulator (WinUAE) but some tests are done on native 68000 based Amigas and others. *PPC support is very limited to certain devices. If you use the WBStartup, you have to delete the other icons in the folder (readme etc..) and you have to add in the Icon Tooltype the parameter DONOTWAIT If you use user-startup instead, you need to add the attached command "after assignment to LUA" C:WBRun DH1:Extras/Utility/WeatherBar/WeatherBar >NIL: Change the command to match your WeatherBar path. <pre> PATH sys:Utilities/WeatherBar ADD run >nil: lua:amilua weatherforecast.lua </pre> To enter data your Country or City, ist with city_id numbers can be found [http://bulk.openweathermap.org/sample/city.list.json.gz here] or you need to go to [https://www.bbc.com/weather BBC Weather], once you type the name of your city or town in the appropriate tab, and press enter, the 7 numbers to be added in the "WeatherBar" will appear on the Browser url address bar above Unicode v16.0 emojis are not supported but [https://github.com/jens-maus/libcodesets codesets.library] provides <pre> internally supported (hardcoded) charsets/codesets are: (conversions are possible from and to each codeset): AmigaPL – Polish (Amiga) Amiga-1251 – Cyrillic (Amiga) ISO-8859-1 – Western European ISO-8859-1+Euro – West European (with EURO) ISO-8859-2 – Central/East European ISO-8859-3 – South European ISO-8859-4 – North European ISO-8859-5 – Slavic languages ISO-8859-9 – Turkish ISO-8859-15 – West European II ISO-8859-16 – South-Eastern European KOI8-R – Russian UTF-8 – Unicode In addition, external charset table files can be stored in LIBS:Charsets or loaded by an application from PROGDIR:Charsets. The charset files included with this distributions are: IBM866 – Cyrillic (cp866) ISO-8859-7 – Greek (LatinGreek) ISO-8859-10 – Nordic (Latin 6) windows-1250 – Central/East Europe (Windows) windows-1251 – Cyrillic (Windows) windows-1252 – West European (Windows) </pre> Icaros 2.3 USB image needs a header stripped so it can work correctly dd bs=512 skip=1 status=progress if=icaros_light_2-3-0_pendrive.bin of=/dev/sdxy && sync Scalos <pre> ------------------------------- { "STRING", "ID/K,TEXT/K,SRC/K,TEXTPEN/K,HALIGN/K,STYLE/K,FONT/K,VALIGN/K", HALIGN LEFT | CENTER | RIGHT VALIGN TOP | CENTER | BOTTOM STYLE NORMAL | BOLD | ITALIC | BOLDITALIC FONT // font specification - format: "fontname.font/size" ------------------------------- arguments for STRING SRC "diskstate", "diskusage", "diskusagefree", "diskusageinuse", "diskusagepercent", "fibfilename", "filecomment", "filedate", "fileprotection", "filesize", "filetime", "filetypestring", "iconname", "linktarget", "plugin" pluginname <optional plugin arguments> "versionstring", "volumecreateddate", "volumecreatedtime", "volumeordevicename", ------------------------------- arguments for HIDE "novolumenode", "isempty" (some STRING) ------------------------------- all internal commands: "about", "backdrop", "cleanup", "cleanupbyname", "cleanupbydate", "cleanupbysize", "cleanupbytype", "clearselection", "clone", "close", "copy", "cut", "delete", "emptytrashcan", "executecommand", "formatdisk", "iconify", "iconinfo", "lastmsg", "leaveout", "makedir", "open", "parent", "paste", "putaway", "quit", "redraw", "redrawall", "rename", "reset", "selectall", "showallfiles", "showonlyicons", "shutdown", "sizetofit", "snapshot", "snapshotall", "snapshotwindow", "unsnapshot", "update", "updateall", "viewbydate", "viewbyicon", "viewbysize", "viewbytype", "viewbytext", </pre> {{status|50%}} {{BookCat}} meev52kplax13piz8cyiu83j1uc58wv 4656740 4656739 2026-08-08T09:01:02Z Jeff1138 301139 4656740 wikitext text/x-wiki {{ArosNav}} ==What is AROS== Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=nl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Dutch], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=da&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Danish], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Chinese], [http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Russian], [http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Polish], [http://translate.google.com/translate?hl=en&sl=auto&tl=ja&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Japanese], [http://translate.google.com/translate?hl=en&sl=auto&tl=ko&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Korean], [http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Portuguese], *Computer Hardware *AROS (operating system) *Applications and Games *User [http://www.osnews.com/story/15819 AROS] is one of the intermediate levels between the computer hardware and the user. It is an open-source, clean-room implementation of AmigaOS 3.x that can be run on many different computer architectures. It runs primarily on PC x86 64bit and also PC 32bit hardware but also on motorola 68k and compatibles, some ARM and PowerPC. This page will cover enough to be able to write the downloaded image to your preferred media, to run a LiveUSB, LiveCD or LiveDVD on your office/home PC (Live meaning you can test without changing your existing setup) and, ultimately, to use it. Intel / AMD PC hardware support mostly covers the years 2000 to 2010 but work is under way to cover recent PC hardware. At the moment, AROS is '''not''' recommended to be '''installed''' on a working vital data holding machine. Instead, writing to and booting from a '''USB stick''' could be a much better option. AROS is an hobby OS and can co-exist with Windows(TM), MacOSX(TM), Android(TM) or Linux(TM) and act as an alternative. Unfortunately, Aros has few developers so upgrades and improvements can take [https://sourceforge.net/p/aros/mailman/aros-cvs/ time to appear]. AROS core is now [http://en.wikibooks.org/wiki/Aros/Developer/IncompleteAPIs ~80%] finished and is usable, so keep in mind that the software is still considered ALPHA/BETA and in development. Currently AROS is fun to play with on a curiosity level, but it is also interesting to program. AROS has some multimedia features and has internet access. Most importantly, use AROS to its maximum potential as it stands now, find ways to have fun with it and share your experiences. Good Sites to visit : [https://www.arosworld.org/home.php Aros World User forum] : [https://ae.arosworld.org/ Aros Exec site relocated] : [https://arosnews.github.io/ AROS News] : [https://www.facebook.com/ArosWorkshop/ Aros Workshop], : [https://www.osnews.com/topic/amiga-aros/ OSNews] : [https://www.reddit.com/r/aros/ Reddit] : [https://archives.arosworld.org Aros Archives] : [https://aminet.net/ Aminet] : [http://www.amiga-news.de/en/ English translation of German site] : [https://aros.sourceforge.io AROS] : [https://github.com/aros-development-team/AROS Codebase] : [https://github.com/aros-development-team/AROS/issues Issues] and [https://sourceforge.net/p/aros/bugs/ old defunct bugs site] : [https://github.com/deadwood2 Deadwood's builds], [https://www.axrt.org/download/aros/v11/ v11 builds], [https://axrt.org/downloads-aros Updated i386 32bit PC builds], : [https://github.com/ezrec Ezrec x86 m68k mirror of old svn version] : [https://sites.google.com/view/arosone Aros One x86, x64] : [https://tinyarosdistro.flazio.com/ Tiny Aros x86 and x64] : [https://arosnews.github.io/aros-portable/ AROS portable USB3 stick images of hosted Aros One x86 and x64 on debian] : [http://vmwaros.blogspot.com Icaros Desktop x86 now on sabbatical, very old edition] : [https://sites.google.com/site/arosaspireone AspireOS, of the netbook Aspire One, very old edition] : [http://arosalive.blogspot.co.uk/p/10-basic-aros-how-tos-tutorials.html Basic How To guides] : [http://arosgamer.blogspot.co.uk/ AROS Playground], [http://thewetmachine.net/tag/aros/ Jess Wet Machine], [https://aroshacking.wordpress.com/ Jon Robertson's AROS Experiences and FPC Free Pascal], [], :[http://www.apollo-accelerators.com/ Apollo Accelerators m68k], [http://www.amigablogs.net/ Amiga Blogs], [http://blog.a-eon.biz/blog/ Trevor Dickinson blog], : [https://forum.amiga.org/ Amiga OS AOS 3.x forum] : [http://eab.abime.net/ EAB Amiga] : [http://www.amigaworld.net/ AmigaWorld] : [http://www.ppa.pl/ Polish Amiga Like News] : [http://www.apollo-core.com/ Apollo Forum] : [https://amigaalive.blogspot.com/ AmigaAlive] : [https://www.amigalove.com/software Disk Mags] : [https://amigachristmastree.ultimateamiga.com/ Xmas Amiga Game Jam] : [https://www.reddit.com/r/amiga/ Amiga] == Distributions aka Distros == For end users there are distributions (ready made with selected apps aiming to be easy to use), mostly created and maintained by one person in their own workflow/style. They reuse the nightly boot compiles to suit their needs and possibly other end users. You are free to create your own if required. * For native 64bit Intel/AMD: [https://sites.google.com/view/arosone Aros One x64], [https://tinyarosdistro.flazio.com/ Tiny Aros], * For native 32bit Intel/AMD which will run on 64bit machines: [https://sites.google.com/view/arosone Aros One x86], [https://www.tinyaros.it/ Tiny Aros], * For native 68k [https://sites.google.com/view/arosone Aros One m68k], [http://www.aros-platform.de/ AROS Vision], '''Please, keep in mind that the distros listed above use a different ABI (abi v11) , which is NOT binary compatible with the official ABI V1.''' * For hosted Linux usb drive image [https://arosnews.github.io/aros-portable/ x64 Debian hosted version of Aros One], * For hosted ARM there is Aeros and [https://aros.sourceforge.io/nightly1.html RaspberryPi 3 raspi-aarch64-system native 64bit] AROS was originally developed on Linux but can run on an Intel-based Linux distro as an app. As time has gone on, it can be run as an app on many more operating systems (Windows, FreeBSD, Linux and limited on MacOS). This may sound strange: an OS running on top of another OS. Basically, this is to take advantage of drivers (audio, internet, graphics, etc.) and compiler environments, in the existing OS, with which people may be already familiar. The term we use for what AROS does is "Hosted". AROS Native is the term coined to describe AROS being run without any OS underneath it. It runs alone just like AmigaOS(TM) did. As this version does not benefit from "Hosted" drivers, dedicated ones have to be ported/written. Hence the smaller range of supported hardware / peripherals. We have other pages highlighting this support AROS is open source so basically everyone can take part. The source is public on github and there are new commits most days. AROS is automatically compiled daily, result are the nightly builds hosted on Sourceforge. The nightly builds are only used for testing changes, testing software and the starting point for distribution maintainers or even your own distribution. They are very basic, miss some functionality and apps like web browsers and are not suited for end users. * The [https://sourceforge.net/projects/aros/files/nightly2/ Nightly2], [http://aros.sourceforge.net/download.php nightly builds File Release Service] or [http://aros.sourceforge.net/downloads/ Sourceforge Project Web builds] are made automatically every night directly from the Github and in the past, SVN (Subversion) tree and contain the latest code for the AROS operating system. It should be noted that the builds have not been tested in any way and can be horrible broken. *ABIv11 offspring / adaptation of ABIv1 for PC 64bit *ABIv1 standard for most nightly builds, it is where the most work is done by developers *ABIv0 standard for PC 32bit intel / amd distributions ==Media== AROS media tends to boot in this tier list of media types, first internal HDD SSD, CD DVD drive, and finally usb drive (last two can depend on bios boot order) * USB .VHD [https://sites.google.com/view/arosone Aros One x86 and x64], with md5 below <pre> 0a656d53a9c902e9934000d8392e30ec *ArosOne-USB-1.3-64Bit.zip 7dd7119ab3e56d75ee852c137226b4d7 *ArosOne-USB-v1.2-x86_64-v11.zip cf906eeaad4a83b3520b1896bdc6b0d3 *ArosOne-USB-v1.1-x86_64-v11.zip e2eb8fe8cfd61c567b0152a61cf85251 *ArosOne-x86-v2.8-USB-IMG.zip 559909c75c2f56472c74267a7d075355 *ArosOne-x86-v2.7-USB-IMG.zip 93da5898508c1a8c05bb8991ab7bd117 *AROS One Image-USB-2.4.zip 59fcabd7090e47f12d54f7eb78cf0f45 *ArosOne-x86-v2.2-USB-Image.zip 24fb8de726ae8fc5fe5bac6d30f03dc5 ArosOne-x86-v2.0-USB-Image.zip f3d725e990072edce633b59747911b6b ArosOne-x86-v1.8-USB-IMG.zip e089a24ae310e92fcc407a0125602ce8 Aros-One x86-IMG-USB-v1.6.zip </pre> [https://tinyaros.flazio.com/ Tiny AROS] 22bc993625b7c75b17263c0cc7e7baaa *Tiny Aros_copy.vhd (March 2024) There is usually a vhd image inside the zip that can be written to USB sticks which is so much faster than the old ISO written to physical CD DVD method. This .vhd can be written to an USB stick / ssd with these pieces of software below but it will erase the previous contents from the usb Windows - [https://www.raspberrypi.com/software/ RPi Raspberry Imager, use custom and see all files], [https://hddguru.com/software/HDD-Raw-Copy-Tool/ HDD-Raw-Copy-Tool], [https://rufus.ie/ Rufus up to version 3.20 may work with VirtualBox HD vhd images with Win7 but not some Rufus 4.x versions], [https://etcher.balena.io/ Balena Etcher but may spy on you], Linux - [https://www.raspberrypi.com/software/ Raspberry Imager Ubuntu], Suse Image / Multi writer, dd, Mac - Most of the time when we get reports of "crashes right after grub" from usb boots it's due to wrongly recorded pendrive. Not aware if using 'dd' is a valid approach. AROS One author suggests using either rufus or etcher software for his VHD image. * Virtual Machine .ISO or CDs DVDs The native iso images are currently not compatible with Ventoy, Yumi, MultiBootUSB, Easy2Boot E2B, or similar <pre> 617a905b1665128c5e05f94dcc48e7f1 *AROS-One-v1.3-64Bit-v11.zip 11c8a147fcad7ecf52ae3a43e1934b69 *ArosOne-DVD-v1.2-x86_64-v11.zip f93053d3b9ccf304d7e6ac3389e1987b *ArosOne-DVD-v1.1-x86_64-v11.zip 86d808a40dc7be389a758799a9b4f595 *ArosOne-x86-v2.0-ISO-DVD.zip f1fc8599ef6a39e5df394e0f41d55526 *AROS-One-x86-ISO-DVD-v1.6.zip </pre> You can use a virtual emulator like VirtualBox, VMWare to mount the iso image which can then be used to boot and/or install to USB. no software can write an AROS ISO to a Pendrive. The author of ‘Rufus’ (who used an Amiga 500 as a child) once tried, but when he saw the system composition, he said he was unable to do it. The solution is to boot the ISO from a VM (WMware, VBox), then install the AROS build on the Pendrive, which will eventually become a Live Pendrive that can be booted on a PC. The only precaution is that in some cases it is necessary to thoroughly clean the Pendrive of any partitions and remove any bootloader that is not AROS. The Pendrive must remain raw without any partitions. You can clean the USB stick on a PC with a program that manages hard disks. You need to do a partition wipe. On some USB sticks, you can clean it with InstallAROS. Previously the only installation option was CD-RW or DVD-RW, since the whole system can be burnt onto a single disk and can be reused when the next version is released. Good branded discs like Taiyo Yuden (later JVC) or Verbatim should be used to reduce frustration later. The days for this media is gone but kept here for information Since nobody currently sells AROS on any other media, you will need access to a CD/DVD burner to create the installation disk yourself. After it is on a CD or DVD, then access and writing to USB pendrives becomes available (this should be viewed as an outdated or last resort alternative method now), as well as using good USB manufacturers like Sandisk, Kingston, etc. rather than some other no-names. Try burning it to a CD-RW or DVD-RW using your CD/DVD burning program (most burning software have a burn iso option). The ideal writing speed is 2x or 4x, higher speeds can give errors and problems. Check the writing integrity of your CD or DVD if your software has an option to do so before going any further. Standalone portable usb cd dvd drives do not boot physical burnt discs, please use an internal ide sata drive instead. * SD-card For ARM Pi Aros, copy the files onto a FAT32 formatted SD card. ==Booting== The LiveUSB, and in the past LiveCD LiveDVD, is designed to trial (test drive) various operating systems without having to install them to your working system. Since 2011, UEFI was introduced to replace the original PC BIOS which made booting media more confusing. Some changes in the UEFI/bios may be needed *go into the bios using esc, f2 or f? and disable the Security -> Secure Boot and maybe apply option for Legacy IDE mode *you may have to press F9, F10 or F12 or p on boot up to present a device boot options like USB or CD/DVD *disable the Fast Boot config so it would recognize portable DVD-drive and changed the Boot-sequence Secure boot was introduced by Microsoft and later consortium control what operating systems work with Secure Boot via shims. For Aros, it is best to disable or be able to change Secure Boot (if you dual boot with Windows this may cause issues with Window boots after) The grub part of the boot should be fully automatic, and you should see a multiple choice graphic card screen after 10 seconds for USB or over 30s CDs and DVDs. After the grub graphics choice, AROS takes over the booting and any issues can arise here =====Advice for various machines===== Some of the stages involved and shown on the display in a typical AROS boot start up <pre> [MultiLoader] [ELF Loader] [Boot] [HPET] [Kernel:ACPI] [Kernel:APIC-IA32] [Kernel:SMP APIC] [HiddStorage] ACPI: ???? ACPI Error [ACPI]AcpiOs???? [BattClock] Got RTC century offset 0x32 from ACPI [PCI] Scanning bus ? [AHCI] Sata [Vesa] only if vesa is chosen as graphics option [ATA] detect hd & cd drives [ATA0?] ata-identity [packet] fat.handler be.handler, etc. [DOS] [Storage:Bus] [Storage:Controller] [MSS] USB setup [ehciInit] Port ? maps to controller ? [I2C] [ATI] [drm] nouveau [AROSTCP] if you have network driver prefs set up to start when booting </pre> ; If boot fails, please give us some indication (pictures or videos) where the boot stops and the message(s) on screen. AROS's native SATA/AHCI driver doesn't always work. If you get errors related to ahci.device, try disabling it. At your chosen boot entry in the GRUB menu, Press E, scroll down to the ahci.device entry, and add a # or ; at the start of that line or delete it with Ctrl-K. Then press Ctrl-X or F10 to boot. If your disk isn't accessible at all with this change, you might need to change the SATA controller to IDE legacy mode in the BIOS: however, making this change will likely cause problems booting Windows on the same machine (if it's already installed). To disable ahci.device permanently, edit the text file "SYS:Arch/pc/grub/grub.cfg", and remove the ahci.device line from all boot entries you intend to use. SATA AHCI Timeout while waiting for device to complete operations with BIOS SATA entry set to AHCI mode stops at "waiting for bootable media" screen, changing BIOS SATA setting back to IDE mode may allow it to continue booting The ATA driver doesn't always work. If you get errors related to ata.device, try using the alternative in sys:devs/alt which is an older version. Press E when your chosen boot entry is highlighted in the GRUB menu, scroll down to the ata.device entry, and change it to read "module /Devs/Alt/ata.device". Then press Ctrl-X to boot. To make this change permanent, edit the text file "SYS:Arch/pc/grub/grub.cfg", and change the path to ata.device in all boot entries you intend to use. Further options (removing the " ") to add to the GRUB menus to disable certain other components for debugging: <pre> Disable AHCI "AHCI=disable" Disable NVME "NVME=disable" Disable ATA: "ATA=disable" Disable ATA: "ATA=nopci,nolegacy" ATA safe mode: "ATA=nodma,32bit" Disable IDE from SATA: "ATA=32bit,nosata2pata" VIA / SIS with cdrom read io errors "ATA=nodma,nopoll" noacpi all [PCI] devices to be invisible to AROS. disk drives work but network, sound won't acpi=strict if there are issues with sound after boot noioapic alternative to no acpi Set AHCI "AHCI=force150/force300/force600" Disable AHCI/SATA: comment out with a # ; or remove ahci.device line with Ctrl-K Disable USB: comment out # ; or remove pciusb.device and poseidon.library lines with Ctrl-K Disable native graphics: "nomonitors" USB3 "USB=xhci" </pre> Other useful grub command line options - nomonitors, noacpi, vesahack, nopoll Press Ctrl and X together (or F10) to exit and boot with the new options. Just experiment with different variations until successful. Those working options will need to be reused with every reboot of AROS until you can edit the grub.cfg and make it permanent i.e. install to hard disk or USB. * If you use VESA mode, you can see the debug log if you add 'vesahack' to the command line. This will set up split-screen mode. In the upper half you'll see AROS screen, in the bottom - debug log. * ACPI ie. PCI hardware - If you get crashes at early boot, try adding 'NOACPI' to the command line If you're having boot issues and have a null modem cable and a spare pc, a boot log is always useful. Edit your grub line to include debug=serial but would try with an with sysdebug=all in the line later as it can cause issues booting on machines with sysdebug=all enabled (corrupts the cpu initialization). However, if you feel you have found a genuine bug/fault in AROS that needs attention, please use the [http://sourceforge.net/tracker/?atid=439463&group_id=43586&func=browse bug submission form] to record as much information about what happened, why, and what hardware etc. you have so that people may try to assist you For Virtual machines VMWare VirtualBox, etc., attach and press play to start the ISO image If booting hasn't worked then it could be down to Bios/UEFI settings or USB3 (2014 onwards) =====nvme.device===== Since 2018, nvme drives are standard on most machines Now as far as hardware goes on a newer machine with an NVME drive you may need to add NVME=disable as the NVME driver could potentially cause lockups. =====AHCI===== Starting taking over since 2011 on a lot of machines * Check that UEFI (replacement for PC BIOS) has options set to remove UEFI SecureBoot option and apply CSM * SATA drive is set for Legacy or a mixture AHCI/IDE and not AHCI AHCI sata can be very difficult to get working Most Windows installs are already set to AHCI sata, changing this to a legacy IDE mode setting can help but please check if Windows will still boot. Some hardware like Lenovo laptops do not always like being set in legacy mode so only use as a last resort and aware of issues that can be caused. Now as far as hardware goes on a newer machine with an NVME drive you may need to add NVME=disable as the NVME driver could potentially cause lockups. With a 16C/32T chip machine, disable SMT and it should boot. =====ata.device for old BIOS's ===== Pre 2010 this was the de facto standard method of providing settings to the computer at a lower level Some adjustments to the BIOS setup options are necessary (usually by pressing a key like DEL, F1, F2, F12 or ESC, p on the very early boot up of the computer). *Adjust booting options like moving USB hdd, CDROM higher as it is quite often disabled or placed lower by default, i.e. USB hdd, CD/DVD are placed at the top above the hard drive. Try looking here [http://www.windowsreinstall.com/articles/bios/ Windows] or [http://www.hiren.info/pages/bios-boot-cdrom Bios] or [http://www.wikihow.com/Set-Bios-to-Boot-from-a-CD-ROM Boot] or web search "BIOS BOOT CDROM" * At the '''SAME''' time, check if the SATA/AHCI option is set to Emulate or IDE Legacy, though this can have '''issues''' with any OS already on the hard disk. If in doubt, do nothing and seek advice. * check that under BIOS settings you '''DO NOT''' have plug&play OS selected as Aros at this point is unable to route interrupts on its own and needs the BIOS to do that. '''Save''' options changed at the end. PCITool can show if the motherboard chipset is in IDE mode. Class = 0x01 means STORAGE, Subclass = 0x01 means IDE. Also ProductID 0x3a20 resolves to non-AHCI mode in Intel ICH10 documentation. ==Installing== We have a separate section [https://en.wikibooks.org/wiki/Aros/Platforms/x86_installing here] We have a specific section for each CPU platform under the Specific platforms in the NavBar navigation bar on the right hand side menu error code (-6) when using the ahci.device (has writing to disk problem but not reading) is enabled. change this line in your grub and reboot <pre> #module /Devs/ahci.device << disable module /Devs/Alt/ata.device << add this line instead </pre> ==File structure overview== AROS' directory structure is mostly identical to AmigaOS directory structure, with some additions. AROS: or SYS: also known as DH0: (i.e. the drive partition with AROS system) has the following simplified list of the main drawers (Amigas term for directories/folders). {| class="wikitable" |boot: | grub bootloader |---- |C: | small apps, where AROS looks first for applications/games but will look at Tools, System afterwards |---- |Devs: | .audio, .hidd, network, graphics and other hardware device drivers are stored |---- |L: | where .handler files go |---- |Libs: | where .library files go |---- |Prefs: | applications that adjust or setup AROS functions and capabilities |---- |S: | startup scripts (for the aros boot process '''not''' grub) are stored here |---- |Storage: | place to keep old or alternative device drivers |---- |System: | applications associated with AROS operating system |---- |Tools: | extra applications |---- |Utilities: | extra applications |---- |WBStartup: | copy applications here to autostart with needed icons, drawers, data etc |---- |} See [[Aros/User/DOS#Drives.2C_Files.2C_Assigns.2C_Directories|DOS manual: Drives, Files, Assigns, Directories]] === Filesystem === Whilst the kernel is the heart, the filesystem is the blood of the system they are split into two categories (only a few are supported) <pre> Journalling - ZFS XFS ext4 NTFS SFS PFS3 Non-journaling - BtrFS ext2 exFAT FAT32(VFAT) FFS </pre> Filesystem options for AROS to install * SFS default * Professional File System PFS3 [http://eab.abime.net/showthread.php?t=52234&highlight=pfs3+free&page=13 only on motorola 68k at the moment] * FFS very old now but left in for legacy usage Other [https://archives.arosworld.org/index.php?function=browse&cat=driver/filesystem filesystems] for storage purposes * FAT32 favorite as most OSs support * NTFS (can lock AROS) * exFAT The only filesystems that really NEED defragging (i.e. disk tidy up) are from Microsoft(TM) - exFAT/VFAT/NTFS *SFS tries to do exactly the same thing, but in certain cases it doesn't do as well as PFS. But you can defrag SFS *PFS *minimises* the amount of fragmentation, but does not automatically defrags as it saves files to the drive The setup of the below filesystems is usually done by the distro maintainer but if not.... <pre> Copy L/exfat-handler L: DOSDriver or Mountlist entry for an exFAT partition make sure that the FileSystem and Handler are set as follows: FileSystem = exfat-handler DosType = 0x46415458 </pre> <pre> Copy L/ntfs3g-handler L: DOSDriver or Mountlist entry for an NTFS partition make sure that the FileSystem and Handler are set as follows: FileSystem = ntfs3g-handler DosType = 0x4e544653 Also to make a read-only mount you can set: Control = ro </pre> The Smart File System (SFS) is a journaling filesystem used on Amiga computers and AmigaOS-derived operating systems. It is designed for performance, scalability and integrity, offering improvements over standard Amiga filesystems as well as some special or unique features. SFS is written in C and was originally created and released as freeware in 1998 by John Hendrikx. After the original author left the Amiga scene in 2000, the source code to SFS was released and its development continued by Ralph Schmidt in MorphOS. Its development has now forked; as well as the original Amiga version, there are now versions for MorphOS, AROS, AmigaOS 3, and a version for AmigaOS 4, which have different feature sets but remain compatible to each other. Versions for AROS, AmigaOS and MorphOS are based on different branches. In addition, there is a driver for Linux to read Amiga SFS volumes, GRUB natively supports it and there are free drivers to use it from UEFI. The Linux version is [http://home.elka.pw.edu.pl/~mszyprow/programy/asfs/ independent code]. SFS (Smart File System) partially defragments itself while the filesystem is in use. The defragmentation process is almost completely stateless AROS SFS version has a 120GB partition size limit on hard disks and DVDs current 4gig size limit. The sources for the MorphOS 64-bit version of SFS were available but no porting to AROS has happened so far due to endian issues, etc. SFS Tools * GUI - arSFSDoctor, * CLI - sfscheck , [http://www.portacall.org/ sfsundelete], sfsformat, setcache hits a usability ceiling around the 10GB / 100,000 file mark, sfscheck dh0: seek purge fraglist defragment If there are two simultaneous file writes in progress and you reboot machine (or it locks up or crashes) you may end up with a corrupted filesystem. Although arSFSDoctor may help, you might have to copy the files to another partition, format the partition with the errors on and copy the files back. A bit error on the harddisk would give this error. PFS / SFS are way more advanced and much much faster than the FFS. FFS is supported for legacy reasons only. The Professional File System (PFS) is a filesystem originally developed commercially for the Amiga and now distributed on Aminet with a 4-clause BSD license. It is a compatible successor of AmiFileSafe (AFS), with an emphasis on added reliability and speed compared to standard Amiga filesystems. It also features multi-user abilities like the older MuFS. PFS has so many advantages including the important things, speed, the ability to recover all deleted files even simply same name by typing the command ". Deldir" convenient if done in Directory Opus, virtually deleted files are copied normally as if they had never been deleted, other convenience is to not ever invalidate the filesystem, just put it on top of the startup-sequence command "diskvalid", which automatically corrects any irregularities in the system startup; PFS also provides a device for floppy which makes them very fast and takes advantage of the full capacity of the floppy including the area dedicated to the bootloader. The device is split into two main areas. At the beginning of the device is the metadata section, which consists of a root block, and a generic array of blocks that can be allocated to store metadata. The rest of the device is another contiguous generic array of blocks that can be allocated to store data. The metadata section usually uses a few percent of the device, depending on the size of the device. The metadata is stored as a tree of single blocks in the metadata section. The entire directory structure is recorded in the metadata, so the data section purely contains data from files. The metadata describes the location of data in files with extents of blocks, which makes the metadata quite compact. When a metadata update occurs, the system looks at the block containing the metadata to be changed, and copies it to a newly allocated block from the metadata section, with the change made, then it recursively changes the metadata in the block that points to that block in the same way. This way, eventually the root block needs to be changed, which causes the atomic metadata update. The filesystem is reasonably good at keeping files unfragmented, although there is a defragmentation tool available which will work on an online filesystem ie whilst being used. It was the first filesystem to introduce the concept of the Recycle Bin natively at filesystem-level to the Amiga, holding the last few deleted files in a hidden directory on the disk root. PFS version 5.3 was developed in C and a small portion of assembly code by Michiel Pelt. There are endian issues to be overcome and adapting the small amount of m68k to C before use on intel based machines, etc. Autoupdate of files in a directory is already implemented in Wanderer, but not all file systems handle dos.library/StartNotify() in its full extent. It seems to work correctly in Ram Disk (thanks to AmberRAM handler), and it also works on SFS formatted devices. Other file systems might not yet have it implemented correctly though. The PC equivalent of the Amiga's RDB is the master boot record (MBR). ===Installing Applications=== The typical means to install applications under AROS/AmigaOS involves simply copying/extracting the archive (.zip .lha .rar .tar.gz) file containing the applications files to your own desired location i.e. drawer/folder. Once extracted, launching it by double clicking on an icon (recommended) or using the shell (alternative). Generally, this is on a separate partition from your AROS system files, however in reality it can be any location - including RAM: if you don't want it staying around too long especially when you switch off. At some time in the future it may be desirable for AROS to have a package-manager like subsystem able to retrieve information online about packages available for AROS and whether they update anything you currently have installed, however at the moment no such ability exists. ===User Data files=== AmigaOS has no notion of a default location to store user data files, and presently neither does AROS - though it may be desirable at some time to provide a common start location. For most people, extra small FAT32 NTFS partition(s) as well as the usual Sys: (DH0:) and Work: (DH1:) / Briefcase (DU1:) partitions to store data seems preferable. Especially if a reinstall is ever needed. ===User Environment configuration files=== AmigaOS/AROS stores persistent system configuration data in directory assigned to ENVARC:. This, by default, points to SYS:Prefs/EnvArc. During boot a copy is made to another assign, ENV:, which is for runtime usage. Changes to the files here will not survive a reboot. Setting the env variables is generally done by applications themselves, or when necessary by the user using the SetEnv command. SetEnv has a SAVE switch to force the persistent copy in ENVARC: to be written also for when you are sure the change should be permanent. Under the standard installation of AmigaOS style OSs, ENVARC: is copied to ENV: upon startup, which, if you have a hard drive installation, is in RAM:, hence, ENV: ends up being RAM:Env. ENVARC: is the Environment Archive, which is the permanent copy of ENV:, which is the Environment. It's roughly like the Registry in Windoze. Most programs do (and all should) store their settings in ENVARC: somewhere, and load them from ENV:. The effect of this can be seen in the Preference editors. If you Save your preferences, they go in ENVARC: and ENV:. If you click Use, they only go in ENV:. If you reboot, normally, anything saved to ENV: is lost, and is replaced with a copy of what is in ENVARC:. you can set the default public screen for any tool started from a cli with the PUBSCREEN variable. So open the pubscreen, set PUBSCREEN to the name and start newcli for example, then the new cli window (and all following windows opened from that window) will appear on that public screen. ===Drivers=== All hardware support is placed in the Devs drawer (folder/directory). The network drivers <something.device> go in the Networks sub-drawer. Audio drivers <something.audio> are put in the AHI sub-drawer. Graphics drivers <something.hidd> are put in the Drivers sub-drawer. ==Configuring== AROS has mainly decided on a MUI-like requester/menu/ clone so changing the background, icons, font, menus can be done with SYS:Prefs/Zune AROS has several desktop GUI front ends like * DOpus5 Magellan II, Wanderer and Scalos (medium) * AROS Workbench, Workbook (smaller) File / Directory managers like Dopus4, MCAmiga, App Launch Shortcuts like FKey, Amistart, BoingIconBar, right mouse click on magellan, wanderer desktop, etc. General usability decisions - Prefs/IControl, CLI in icon's tooltypes means 'run it as if it was run from shell' If, on the other hand, the WB parameter (or no parameter) is present in Tooltypes, Wanderer will execute the binary and, if provided, the options included in Tooltypes. WBxCLI is very useful for adding options to DOS Commands. Important: AROS has a different way of managing icons. If you have an executable file, you will never be able to add a project icon. AROS will automatically recognise that it is an executable file and will transform the icon into a tool icon. Most apps can be autostarted by copying into SYS:WBStartup directory folder e.g. WeatherBar.zip can be downloaded, unzip and the contents of the zip copied to wbstartup folder ClicktoFront and .info to SYS:WBStartup so always be activated when turning on the computer or add a text line to user-startup is SYS:S (scripts version of wbstartup) e.g. standard Amiga / AROS does not allow clicking of background windows to come to the front to make it easy to get to the window you need but it has the ability if these apps are copied again to WBStartUp or are added to SYS:S/user-startup script run QUIET sys:Tools/Commodities/ClickToFront >Nil: run QUIET sys:Tools/Commodities/DepthMenu >Nil: run QUIET sys:Tools/Commodities/Blanker seconds=300 >Nil: Exchange controls Commodities and can be opened with alt, ctrl, h Although there are heaps of docks, menus and other launcher programs on the Amiga like OSs, FKey has got to be one of the quickest and less complicated ways to launch programs, and it comes with the OS. In SYS:Tools/Commodities, the FKey commodity (Ctrl Alt F) allows you to make actions assigned to some combinations of keys <pre> ALT TAB Cycle Windows Cycle Screens Enlarge Window Shrink Window Toggle Window Size Insert Text Run Program Run Arexx Script </pre> e.g. <pre> LAmiga F1 = Avail Flush LAmiga F2 = Open Prefs LAmiga F3 = Finder Alt Tab = Cycle Windows LAmiga Tab or M = Cycle Screens Alt Up arrow = Enlarge Window Alt Down arrow = Shrink Window Alt Home = Toggle Window Size = Insert Text LAmiga e = Run Program = Run Arexx Script </pre> If your FKey GUI pops up when you start your Workbench up and you don't want it to, click once on the icon, go to the Icons-Information in the menu and make sure it has the tooltype set "CX_POPUP=NO". Now let's launch it and assign the locale switching. After you double-click on FKey icon, launch the Exchange, choose the FKey from list and click the Show button. This will invoke the FKey window. You can see the ALT TAB in list assigned to window switching. Now enter the first key combination, say, ALT Z and go to the right panel. Choose Launch the program from pulldown menu and enter SYS:Prefs/Input as an argument. Append the USE switch and english preset name to the string as shown: SYS:Prefs/Input USE SYS:Prefs/Presets/english Click on the New Button to add the another combination. Now set the combination for your locale as shown above, replacing English name with your preset name. Click New button again and then Save Settings. Now you can use defined combinations to switch the layouts. Although not needed by most users, the system wide ARexx script capability can manage many file manipulation task(s) but this would work only with those program that support [https://en.wikibooks.org/wiki/Aros/Developer/Docs/Rexx ARexx] like *Desktop - DOpus5, Scalos *Dock - FKey, *Files - Multiview, DOpus4, *Internet Apps - Odyssey, WookieChat, *General Apps - the shell can be modified with escape strings but not needed in most cases Common Keyboard Shortcuts <pre> RAlt Right Alt Key LAlt Left Alt Key RWinKey Right Windows Key LWinKey Left Windows Key RAmiga Right Amiga Key (if one) LAmiga Left Amiga Key (if one) </pre> ;Bootup Options :Spacebar during boot, enters the bootmenu which allows a boot without startup sequence, etc ;Left Click :LAmiga = LWinKey = F11 ;Right Click :RAmiga = Help = F12 ;Mark :RAmiga and B ;Cut :RAmiga and X ;Copy :RAmiga and C ;Paste :RAmiga and V ;Search :RAmiga and S ;Mouse Movement LAmiga and together with arrow keys - shift as well at the same time as well to move faster ;Mouse Selection LAmiga and LAlt to select ;Screen Switching LAmiga and M or N ;HELP key Can sometimes be mapped to F11 but can be changed via FKey ComKeyRemapper or AmigaKeyremapper could swap RAmiga to another key press ===DOpus 5 Directory Opus Magellan II=== Dopus 5.x is a whole desktop replacement on the Amiga Workbench (Desktop) DirectoryOpus app will assign DOpus5: to it's PROGDIR: automatically but if not add the below (edit SYS:System to suit where Dopus5 was installed) to your startup-sequence <pre> Assign DOpus5: SYS:System/DOpus5 DOpus5:DirectoryOpus ;DOpus5:C/LoadDB </pre> Left mouse button clicked twice on the desktop background brings up the Device List window. Green strip notifies SRCE (source) and if another is open it will be red for DEST (destination). clicking on the red strip changes to green Word list of actions with a left mouse click on the DOWN Arrow and directory stuff with < button which mirrors the icons at the top of each lister single-key hotkeys? exactly the same as in dopus4, edit your functions (button bank, toolbar, menus etc.) and under the flags gadget is a key gadget, just click in it and press the key you want to use. As for the extra text field... try turning off Extended lister key selection in environment / miscellaneous. Shift and click on the icon - runs the icon DOpus5 Magellan 2 Directory folder drawer structure <pre> ARexx - Arexx scripts .rexx and .dopus5 to perform tasks Buttons - Commands - Desktop - Environment - two environment files bundled: default gets loaded if you run DOpus as a normal app workbench gets loaded if you run DOpus as a WB Replacement (with LoadDB on startup) Filetypes - Groups - Icons - Images - Modules - compiled tasks Settings - Sounds - Themes - WBStartup - Use this if standard SYS:WBStartup gives cannot wait error messages </pre> Settings -> Environment -> Display -> Workbench (Use) *Settings -> Clock (add to title bar as well as the date) *Toolbar -> Editor (Right Win Key together with 1) for Copy, Move, Delete, etc above the Device List *Menu -> (Right Win Key together with 2) *Buttons -> Editor (Right Win Key together with 3) *Settings -> Environment (Right Win key together with 4) for Backgrounds, etc *File Types -> (Right Win key together with 5) *User Menus -> (Right Win key together with 6) *Hotkeys -> Setup for quick shortcut keypresses (Right Win Key together with 7) *Scripts -> (Right Win key together with 8) *Icon Positioning -> (Right Win key together with 9) Each Dopus5 theme are stored in a separate directory, named appropriately, which contains further sub directories * Font (amiga bitmap fonts) * Screens (jpg or any picture supported by datatypes but not animations) * Sounds (wav but not iff 8svx ) * Icons (png newicons glowicons ) * Patterns (iff jpg png ) Just use wildcards in background filenames and you get a different picture every reboot For example, configure in Environment -> Backgrounds -> Desktop something like this: <pre> Work:Pictures/Backgrounds/#? ...or Work:Pictures/back#?.iff ...etc... </pre> [https://aminet.net/util/dopus arcdir and themes] If you want to change the backdrop pic after a period of time, paste below into a text file called dopusrandbg.rexx and place in DOPus5:ARexx <pre> /* Changes DOpus background image forever Start with: Run >NIL: RX dopusrandbg.rexx */ if ~show("L", "rexxsupport.library") then do if ~addlib("rexxsupport.library", 0, -30,0) then exit 10 end /* Configure these two lines for your needs: */ minutes=1 picpath="Work:Pics/#?.iff" address DOPUS.1 do forever call delay 3000*minutes dopus set background '"'picpath'"' desktop center custom dopus refresh background custom end </pre> If you don't want to use/open rexxsupport.library just for DELAY() then use the DOS Wait command <pre> /* random diropus backdrop changer */ /* by paul trauth, 1999 */ /* to do: non-repeatable randomness? */ options results parse arg path address DOPUS.1 /* get current backdrop pattern so it actually changes */ dopus query background desktop custom currentpatt=result lastslash=lastpos('/',currentpatt) currentpatt=substr(currentpatt,lastslash+1,(pos('"',currentpatt,2)-lastslash-1)) dir=showdir(path,'FILE','/') num=0 do while dir~='' where=pos('/',dir) if where>0 then do file=left(dir,where-1) dir=right(dir,length(dir)-where) end else do file=dir dir='' end if left(file,1) ~='.' & file~=currentpatt then do pics.num=file num=num+1 end end which=random(0,num-1,time(s)) newbg='"'||path||'/'||pics.which||'"' dopus set background newbg desktop tile precision exact dopus set background on dopus refresh background </pre> Clock format commands available are defined by locale. They are: <pre> %a - abbreviated weekday name %A - weekday name %b - abbreviated month name %B - month name %c - same as "%a %b %d %H:%M:%S %Y" %d - day number with leading 0s %D - same as "%m/%d/%y" %e - day number with leading spaces %h - abbreviated month name %H - hour using 24-hour style with leading 0s %I - hour using 12-hour style with leading 0s %j - julian date %m - month number with leading 0s %M - the number of minutes with leading 0s %p - AM or PM strings %q - hour using 24-hour style %Q - hour using 12-hour style %r - same as "%I:%M:%S %p" %R - same as "%H:%M" %S - number of seconds with leadings 0s %T - same as "%H:%M:%S" %U - week number, taking Sunday as first day of week %w - weekday number %W - week number, taking Monday as first day of week %x - same as "%m/%d/%y" %X - same as "%H:%M:%S" %y - year using two digits with leading 0s %Y - year using four digits with leading 0s </pre> like %a %d-%b-%y %H:%M or A WB ARexx interface, you could enter a cli command as a menu item to open a WB drawer like this... RX "address WORKBENCH;WINDOW 'device:drawer' OPEN" Where device:drawer is replaced by the path of the drawer to open. The ARexx script would be capable to manage such a task but this would work only with those program that support ARexx <pre> dopus addappicon dopus addtrap dopus back dopus checkdesktop dopus clear dopus command dopus desktoppopup dopus error dopus front dopus getdesktop dopus getfiletype dopus getstring dopus matchdesktop dopus progress dopus query background, font, palette, pens dopus read dopus refresh all, background, icons, lister dopus remappicon dopus remtrap dopus request dopus script dopus screen dopus send dopus set background, font, palette, pens dopus setappicon dopus version </pre> <pre> lister add lister addstem lister copy lister clear value lister clearcaches lister close lister empty lister findcache lister getstring lister iconify lister new lister query active all, dest source lister query abort, busy, case, dirs, display, entries, entry, files, flags, handler, header, hide lister query label, lock, mode, namelength, numdirs, numentries, numfiles, numseldirs, numselfiles lister query path, proc, position, seldirs, selentries, selfiles, separate, show, sort, lister query title, toolbar, value, visible, window lister read lister refresh lister reload lister remove lister request lister set busy, case, dest, display, field, flags, handler, header, hide, label, lock, mode lister set namelength, newprogress, off, path, position, progress, separate, show, sort, source lister set title, toolbar, value, variable lister select lister wait </pre> The '''command''' allows you to call internal DOpus commands from an ARexx script <pre> command all command wait copy command read s:startup-sequence command source 12345 makedir name noicon </pre> *SFTP secure encrypted comms over internet using libssh2 and zlib (different protocol to the two below) on port 22 *FTPS secured with https like security on port 21 *FTP not secure and unencrypted protocol over internet on port 21 (should not be used today on the internet but for your own server) ===Wanderer === Wanderer prefs in the prefs drawer - Appearance tab and Workbench icon allows backgrounds (wallpapers) icon text sizes, colors, etc but cannot use #? or *.* in the backgrounds file entry to randomly choose pictures - [https://developers.google.com/speed/webp/docs/riff_container webp riff container] issues with this format but Multiview has none. Enable the bar, you need to edit the text file ‘statusbar.prefs’. The change is simple: just change “False” to ‘True’. Prefs/Env-Archive/SYS/Wanderer/statusbar.prefs Provides a way to hide the old Workbench 3.1 style of windows and screens. Themes - SYS:Prefs -> Appearance The default content of Prefs/Env-Archive/SYS/themes.var should be "themes:ice" but can be changed via the theme prefs, please do NOT click the Use button. Its useless. As you know, it will ask for the theme volume. Just pick the theme you want, click on Save, then reboot. * Decoration is on. Any time trying to change theme, you get: "Please insert volume Theme: in any drive"? You could check if you find SYS:System/Themes or if it is missing. Then you could open startup-sequence which you can find in drawer "S". There should be a line: Assign THEMES: SYS:SYSTEM/THEMES >Nil: This does the trick. Open a shell and run: Assign THEMES: SYS:SYSTEM/THEMES Than start the Theme prefs again... this should work * The theme is the only thing that could slow the system a bit, but it's not that performance impacting on most uses, and you can switch it of completely. Remove C:Decoration from the bottom of the file sys:s/startup-sequence. [http://archives.aros-exec.org/index.php?function=browse&cat=graphics/theme ALua/Zulu script] built for faster Wanderer skin management. You can modify config files, install new (wdz format/zipped skin files) and delete skins via the Theme Manager. [http://sites.google.com/site/arosaspireone/download-1 Global.Prefs] ===Scalos=== [https://web.archive.org/web/20180922220139/http://scalos.noname.fr/ Scalos] is not an OS replacement, it's a Workbench replacement. It replaces the desktop and graphical file management components. Scalos is 100% Workbench replacement with most functions working like the original Workbench ones. Undo and Redo available for most window and icon operations. Fully multitasking so every window has its own task. While loading icons, any window function (e.g. Drag&Drop) is available. 24bit color support with window patterns - Unlimited and easily configurable via tooltypes. Optimised backgroundpatterns routine so patterns can be tiled, centred or even scaled to fit into the windows. Live updating window scrolling - Supports middle mouse button panning and drawer (folder) windows can be iconified on the desktop. Icon imagetypes with all types are supported such as backfill or complement. Configurable surrounding iconborder. Icon support also visually highlights files which are soft-links in the file system. Icon dragging is more stable and far less flickery on graphics cards. Whilst dragging, icons are displayed with text and they can become transparent over anything where they can be dropped. Single-window lasso mode, with scrolling window contents invoked by dragging mouse with configurable qualifier key. Text icon lasso selection used to ignore "Name column selects text icons" flag. Support for backfilled thumbnail icons, with selectable color and transparency. Added option to always generate square thumbnail icons with preview icons for images - Thumbnails can be permanently saved in icons. Supports PNG icons with alpha channel and real transparency and displays OS3.5 GlowIcons and are all scalable. Iconborders with variations (normal, shadowed, outlined). Completely configurable, filetype-specific user-definable popup menus and tooltips. Plugin system to exchange or add features and can enhance the Workbench and make it more configurable. Filetype plugins to display filetype-specific information. - Currently, EXIF information viewer for JPEG images is included. Plugin included for 100% support of OS3.9 Workbench features. Plugin included for AREXX API compatible to OS3.9 Workbench. Online update with updater.module Scalos works also as a Workbench replacement. In this case the 'emulation mode' has to be set by using Scalos' own version of LoadWB and offers * Scalos uses the Workbench Screen for its windows instead opening a new one * AppIcon, AppMenuItem, AppWindow functions are redirected to Scalos * all Programs placed in "WBStartup" should start * The Screen will be reopened in case of changes in ScreenMode and Palette settings <pre> v1.0 (V39.201) - November 1999 v1.1 (V39.212) - December 1999 v1.2b (39.220) - June 6, 2000 v1.2d (39.222) - 2000 (latest public beta executable) v1.3 (40.7) (beta) - August 2, 2001 v1.3 (40.22) - September 25, 2002 v1.4 (40.32) (beta) March 31, 2005 v1.6 (41.4) - March 27, 2007 v1.7 (41.5) - August 12, 2007 v1.8 (41.6) - March 12, 2009 v1.9 (41.7) (beta) - March 15, 2010 v1.9 (41.8) (RC1) - August 25, 2012 open source v1.9.2 (41.10) Deadwoods' AROS late 2022 32bit and 64bit build unifying the code base of ` for AROS x86 ABIv0, AROS x86_64 ABIv11 and AROS m68k </pre> Distros may have Scalos files under SYS:System/Scalos or Extras:Scalos. Known [https://github.com/deadwood2/AROS/issues/75 bug list], Certain files like Menu13.prefs, Palette13.prefs, Pattern.prefs and scalos.prefs need to be in SYS:Prefs/Env-Archive/Scalos they can be found in Scalos:Storage/envarc and country drawer or run the "Scalos Menu" preferences program. Note if already setup with sub-menu entries and then re-save your menu prefs as it will now generate a new/overwrite prefs file called "Menu13.prefs" in "envarc:scalos/". The same is also required for the new Palette prefs update, click 'Save' and a "Palette13.prefs" file will be saved in to "envarc:scalos/" directory. <pre> ASSIGN Scalos: SYS:xxx/xxx DEFER ASSIGN Libs: Scalos:Libs add ;ASSIGN SYS:Devs/Datatypes Scalos:Devs/Datatypes add Assign Theme: Scalos:Themes/Default_Theme add Assign Locale: Scalos:Locale add Protect Scalos:Tools/browse.script s add quiet Protect Scalos:Tools/OpenShell s add quiet Protect Scalos:Tools/run.script s add quiet run Scalos:Tools/LoadWB ;Scalos:Scalos </pre> Add the above to SYS:S/startup-sequence or SYS:S/user-startup '''before any Wanderer entries''' In the prefs drawer (folder) is the big prefs app Scalos_Prefs which covers these user setup areas <pre> About Scalos Paths - should be preset Startup - WBStartup drawer contents should auto run on each startup Desktop - edit titlebar, icon layout and in misc, auto leave-out (drag icon to desktop) Icons - Drag and Drop - Windows - Text Windows - in misc, drawer sorting at start of listing if needed TrueType Fonts - use Truetype fonts rather than system ones Miscellaneous - Plugins - after adding oop/title_clock.plugin %ti %da does not work, maybe needs ASCII .prefs added Modules - ?? Menu - setup for MainMenu and PopupsMenu with New Menu, RE Name, Key: shortcut, Command Properties FileTypes - already added def_Project icons and def_Disk (hdd sdd cd dvd etc) support PopupMenu - tweak how popups appear Pattern - Wallpaper backgrounds with Type DE, each pattern in the list can be edited, Save as Pattern.pre Palette - change the color of things , Save as Palette.pre </pre> Scalos_Prefs - Pattern - Minimum options to be changed are *DE Desktop/Background *SC Screen *TW Window/TextBackground ie Text listing showing if icon type not recognised *IW Window/Background ie Icons showing Workflow - In "Pattern List" tab, select New - choose a picture, highlight in list, click in number box under New button and slide to another number, click on "Defaults" tab and adjust Pattern numbers slider to choose right picture for each of the above options - Click "Pattern List" tab to check eveything is OK and click Save Pattern List tab on Patterns Page - Allows you to compile a list of pictures (one at a time rather than a whole folder e.g. with #? or *.*), assigning a number Nr to one or more of them for easy reference. Using this number you will be able to assign the pictures to specific windows on the Defaults tab Page. If multiple pictures have the same number, one of the pictures will be chosen randomly. This will allow you to have random desktop pictures, random window backdrops etc. Defaults tab on Patterns Page - Here you can set the defaults for the background pictures for the Desktop, Screen, Window and/or Text Mode throughout Scalos. Randomize every time [check box] - Usually Pictures with the same number will be randomly selected as soon as the configuration loads. If this option is set, the picture will be selected as soon as a window with the same number assignment is opened. *Fit size: The picture will be resized to the dimension of the new window.You *MUST* have set GUIGfx on. asyncron layout: Pictures will be loaded and rendered while the windows opens (Like original Workbench). If this function is 'off', pictures will always be loaded before opening the windows. *Use friendbitmap : The picture is present twice in memory for best speed. This option has no effect if V43 picture.datatype or GUIGfx are used. Always relayout: If "Fit size" is set, the picture will be scaled everytime the window's dimensions change. *Randomize everytime: Usually Pictures with the same number will be randomly selected as soon as the If more pictures have the same number, one of them will be chosen randomly. Patternlist New/Delete : Add a new picture. After that you should assign a number to it. The picture will be rendered as tiles. configuration loads. If this option is set, the picture Asyncron-Task priority: You can set the CPU priority for the Task if "asyncron layout" is set. <pre> Desktop: Number of the Picture for the main window. Screen: Number of the picture for the Scalos-Screen. Window: Number of the picture for the Scalos-windows. TextMode: Number of the picture for the Scalos-windows in Text Mode. </pre> Popup Menu preferences fully configurable menus (includes ToolsDaemon and ParM launch apps import), including support for context-sensitive Popup menus configs for top pull down menus for apps, etc. Workflow - Scalos_Prefs then Menu, New Item, New Command add name at top then in Command Properties e.g. add Workbench and location e.g. DOpus:DOpus4 for apps Command for c apps or Rexx for scripts or Plugin for or AmigaDos for modules <pre> DESCRIPTION NAME/A This is the title that is displayed in the top line of any popup menu INCLUDE NAME/A Name of file to be included. Path can be relative to "Scalos:FileTypes" POPUPMENU Starts the popup menu description section for this filetype. </pre> The following Subcommands are allowed inside popup menus: <pre> SUBMENU "NAME/A" ENDSUBMENU MENUENTRY "NAME/A,KEY/K,DEFAULTACTION/S" ENDMENUENTRY INTERNALCMD "NAME/A" WBCMD "NAME/A,STACK/K/N,WBARGS/S,PRI=PRIORITY/K/N" AREXXCMD "NAME/A,STACK/K/N,WBARGS/S,P=PRIORITY/K/N" CLICMD "NAME/A,STACK/K/N,WBARGS/S,P=PRIORITY/K/N" ICONWINDOWCMD "NAME/A" PLUGINCMD MENUSEPARATOR ENDPOPUPMENU TOOLTIP ENDTOOLTIP </pre> <pre> Starts the tooltip description section for this filetype. The following Subcommands are allowed inside popup menus: GROUP "ORIENTATION/K" ENDGROUP MEMBER "HIDE/K" ENDMEMBER HBAR STRING "ID/K,TEXT/K,SRC/K,TEXTPEN/K,HALIGN/K,STYLE/K,FONT/K,VALIGN/K" SPACE "SIZE/N/A" DTIMAGE "FILENAME/A" </pre> Each theme drawer (folder) has these further folders <pre> About - Desktop - FileTrans - FileType - Icons - Menu - Modules - PointerIcons - Prefs - Sound - Window - </pre> *Plugins <pre> devicefilter.plugin persist.plugin should a crash or reboot occur - next time Scalos started, all windows re-opened title_clock.plugin add digital clock to title see more below title_envvar.plugin %ev, which can be used to display the value (a string) of the variable in the titlebar title_freepens.plugin volumegauge.plugin wb39.plugin wbrexx.plugin plugin adds a Workbench 3.5+ compatible AREXX interface to Scalos internals xtwindows.plugin left or right ALT or left or right SHIFT keys when open/close windows filetype.plugin then run FileTypes-prefs and customize the filetypes (eg import from a DefIcons-brainfile) menu.plugin </pre> *Modules - delete, empty_trashcan, execute, find, format_disk, information, iconproperties, newdrawer, reboot, rename, systeminfo, windowproperties *Tools - scripts like LoadWB, quit.rexx, open_volume.rexx, In Scalos_Prefs->Filetype->Recognition you can define the filetypes and on "Action" you define specific context menu for all filetypes defined in recognition (similar to magellan) there is the same you must show all first (list is only limited) so you created a file type AAABBB, you need to have def_AAABBB icon Associating files with "Scalos_FileTypes" is very simple, practically it is very similar to Dopus4, first you create the Def_icons to assign to the file type (will be seen automatically ), then run "Scalos_FileTypes" you add the extension, fill in the descriptor (MATCH or PATTERN etc..) and save then you create a appropriate entry in the list and rename it, if def icon exists it is shown. Below you can define how files are identified. I use "pattern", similar to magellan to identify file by ending. Then you click on the shown icon and define in it what program is used when you double-klick on it and save it. On the tab action you can define popup menu for it. defined all archive types from XAD in "filetypes". If you change to "action" and click on "archive" you can define the context menu that is shown if you do not define a specific context menu for a filetype Reset to Default in Scalos_Prefs resets all settings so BEWARE <pre> The Scalos desktop screen titlebar may be configured using the main Scalos Preference program. This oop/time_clock plugin adds some additional placeholders: %ti, displays the current time in the default Locale format. e.g. "10:43:37" %da, displays the date in the default Locale format. e.g. "Saturday 14 July 2001" Using the supplied prefs program for the plugin, or editing the ASCII file ENVARC:Scalos/title_clock.prefs you can use the following standard Amiga Locale values to change the formatting %a - abbreviated weekday name %A - weekday name %b - abbreviated month name %B - month name %c - same as "%a %b %d %H:%M:%S %Y" %C - same as "%a %b %e %T %Z %Y" %d - day number with leading 0s %D - same as "%m/%d/%y" %e - day number with leading spaces %h - abbreviated month name %H - hour using 24-hour style with leading 0s %I - hour using 12-hour style with leading 0s %j - julian date %m - month number with leading 0s %M - the number of minutes with leading 0s %n - insert a linefeed %p - AM or PM strings %q - hour using 24-hour style %Q - hour using 12-hour style %r - same as "%I:%M:%S %p" %R - same as "%H:%M" %S - number of seconds with leadings 0s %t - insert a tab character %T - same as "%H:%M:%S" %U - week number, taking Sunday as first day of week %w - weekday number %W - week number, taking Monday as first day of week %x - same as "%m/%d/%y" %X - same as "%H:%M:%S" %y - year using two digits with leading 0s %Y - year using four digits with leading 0s like %d %m %y or %a %d %B %Y %p </pre> Shutdown -> right mouse button Scalos, About, Reboot, Shutdown ToolTypes can be added to the Scalos.info icon like *SCALOS_PATTERNNO=<number> : background image matching the number *SCALOS_NOTEXT : The Icon will be drawn without Text. *SCALOS_NODRAG : The Icon will not be draggable. Its position will be fixed. *Module iconproperties - Added SCALOS_BROWSERMODE tooltype support runcommand parameters... in which case: <pre> %p = parameters %w = directory path %d = device-name %% = literal percentage token </pre> With the help of the wbrexx.plugin Scalos gains support for more of the compatible arexx API If an arexx command produces an error you will find the error code placed in the WORKBENCH.LASTERROR variable. ACTIVATEWINDOW <pre> /* Activate the root window */ ADDRESS workbench ACTIVATEWINDOW root /* Activate the "Work:" partition's window if already open*/ ACTIVATEWINDOW "Work:" </pre> CHANGEWINDOW <pre> /* Change the root window; move it to position 10,30. * and change its size to 200100 pixels */ ADDRESS workbench CHANGEWINDOW root LEFTEDGE 10 TOPEDGE 30 WIDTH 200 HEIGHT 100 /* Change the currently active window */ CHANGEWINDOW active 20 40 200 100 </pre> Most of Scalos' issue are due to the flexibility of its' user configuring nature but if The sort menu plugin needs to be ported from ASM to C. IIRC Scalos has a command line option to fully replace Workbench/Wanderer. The Theme: assign is used by both Wanderer and Scalos but I didn't have any problems using both at the same time. The Program will be started from the Shell. If "WB Args" is set, with the Argument "%p" will be replaced by the path of the activated Icons. The Program will started with the specified Stack value. IconWindow: Scalos opens the window of the specified path. PlugIn: Starts a Scalos Menu-PlugIn. If a Menu Item with empty name is specified, Scalos displays a separator line. It's possible to Drag&Drop an Icon in the Configuration Window. All values will be set accordingly. Entries may be dragged across the list. Mac-like selection : This function activates a multiselection method used on MacOS or Win95. Don't have to hold down shift to drag them. Clicking on an already activated icon will not deselect all other icons. MMB move: The window contents may be moved using the middle mouse button. WindowPopup title only: PopupMenu for windows can be opened only on window's title bars. FullBench: Screen-Titles removed and Main Window set Full Size. Scalos Prefs. Go to Settings->Scalos->Prefs and then the Misc section. Remove the tick against Full Bench. If you've enabled it, the titlebar will disappear when you select backdrop. Default Icons saveable : The icons which Scalos generates if "show all files" is enabled, can now be saved using "snapshot" menu option. load DefDisk first : Try to read the icons first from the DefIcons Path before using disk info. Hide hidden files : If this function is activated all files or directories where the "hide" flag is set will not be shown. Many of my Icons display more than once on the screen, while on the workbench all seems ok. The Workbench filters double displayed icons, Scalos does not. Solution: please edit the ".backdrop" file and clear double lines. Background images not scaled. GUIGfx option not set or guigfx.library and/or render.library not installed. If working with CD's causes crashs or Scalos doesn't work correctly. Most Filesystems doesn't support the ExAll function correctly. Disable "Use ExAll" in Scalos prefs. Scalos doesn't start any program in the WBStartup. WBStartup Path may be set wrongly or Scalos was not started in Emulation Mode (LoadWB etc) Some programs will not startup with error message "has not returned, wait some more"? and "unable to open your tool" need a def_icon with the same name predefined, then create an appropriate entry in the list and rename it, if def icon exists it is shown. Below this can define how files are identified. * either "pattern", similar to magellan to identify file by ending * or Then click on the shown icon and define in it what program is used when you double-click on it and save it. On the tab action you can define popup menu for it. All in all handling is of course different to magellan but can do similar For the RAM Icon, to obtain this you have only to copy the icon in the Icon Path as "RAM.info" or "Ram Disk.info". All functions will automatically be performed sometimes cut into half or quarters when scrolled off screen or drawers moved - settings issue probably Sometimes leaves initial drawer window imprint on desktop when moved - settings issue Scalos AROS released a [https://github.com/deadwood2/contrib/tree/master/scalos new build V2022-07-21] with the following changes noted: <pre> Fixed: Numerous crashes when working on 64-bit with 64-bit heap Wrong background color of Scalos logo on Scalos splash window Backgroung image of Scalos splash window and Scalos About window is not visible Icon labels on desktop and in drawer windows are displayed using Topaz instead of Arial font Font.prefs are not being loaded on 64-bit Font.prefs are being wrongly saved on 64-bit scalos.prefs are not being loaded on x86 and x86_64, scalos is using always default preference scalos.prefs are being saved on x86 and x86_64 in format not compatible with m68k NewPopupmenu.prefs is wrongly written Plugins are not loading at Scalos startup wbrexx.plugin is crashing at startup on 64-bit Multiple controls missing on Scalos Prefs/Icons page System crash when clicking on def icon image on FileTypes Prefs/Recognition page Status bar, control bar, buttons sometimes don't have images displayed Buttons in Scalos About window have white corners rendered where they should be transparent Crash when leaving out an icon Crash when adding a User-defined Button to Control bar without setting it's properties in Scalos Prefs Crash when removing any button from Control bar in Scalos Prefs Scalos Prefs allows editing TTEngine font properties when TTEngine is not present causing crash in Icons/Labels and Text Windows/Fonts pages deficons.prefs are not being loaded on x86 and x86_64 Reset to default in FileType Prefs and Save does not save preferences Won't fix: Scrollbars visible on titles of TrueType Fonts, PopupMenu, Menu, FileTypes, Pallette and Pattern pages of Scalos Preferences Not fixed: Wrong rendering on DualPNG icons Refreshing drawer windows is slow Starting Prefs/Locale or Prefs/Input from Scalos causes other preferences to fail Desktop wallpaper is damaged where Splay window was displayed When started from Wanderer, after saving Scalos Prefs, reload does not re-open main Scalos window Difference in behavior between Cleanup from popup menu and Cleanup from top menu - possibly due to missing plugin, check Cleanup association in Menu Prefs </pre> ===DOpus 4 Directory Opus=== Copy DOpus4 app to WBStartup directory folder so it starts on boot up each time Another method is add the below to the bottom of the user-startup script in S: drawer/directory <pre> run DOPUS:DirectoryOpus -i >NIL </pre> makes DOpus starts up in Iconified state at the top of Wanderer's screen. Left click on this to highlight and right mouse click to open. Just click on the sides of either outer edges of DOpus windows and it will display the parent device/volume list. DOpus saves it features in a CFG file which can be edited to suit anyones' needs by reading the [http://archives.aros-exec.org/index.php?function=browse&cat=utility/filetool Dopus Manual] which is in Guide format. ===AmiStart=== Auto generates the apps menu but scans the drive each time - AmiStart can choose apps you are not interested * how to disable annoying zune/mui 'bubbles'? try a right-click on AmiStart and release on Global settings. Then click on the bubbles gadget. Move the Show Bubbles slider all the way to the left. ===BoingIconBar=== User chooses the apps to add to the dock at the centre bottom of the screen but has to be done manually, please use Save afterwards Or easier edit the text file of SYS:Prefs/Env-Archive/iconbar.prefs and save <pre> SYS:System/Shell SYS:Tools/DOpus4/DOpus4 SYS:Utilities/Editor SYS:System/SysMon SYS:System/Scout Work:Extras/Internet/OWB/OWB Work:Extras/Graphics/Lunapaint Work:Extras/Graphics/ZunePaint AROS:Tools/MPlayer/MPlayer Extras:Internet/AmiFox/AmiFox </pre> right mouse click on bottom edge of screen where boingiconbar shows - select settings which opens BoingIconBar Preferences to add apps If no dock showing Add, to add apps click Add Program and search for the executable another method is to drag icons to ends of the bar and move them on the Bar using the Prefs/BoingIconBar ===Icons=== Icons are typically now .png pictures renamed as .info e.g. so Office application name would have a Office.png renamed as Office.info or MyApp.png as MyApp.info, etc. Leave Out menu option to leave app icon on desktop To select multiple icons and save their positions, click on the first icon and after while you hold the Shift key down select further icons and don't release it before SnapShot is finished. You can also select a whole group of icons by pressing the LMB at the top left of the icons and while keeping the LMB down moving the power towards the bottom right. A expanding bounding box will appear and all the icons within it will be selected. Clean Up menu option (right mouse button -> Icons) rearranges icons in a drawer or disk window into a neater condition. To use, open the window to rearrange and select Clean Up. To keep the icons in the new positions, select all the icons (shift key or mouse selection) and select 'Snapshot' and then Window and then again with All. In DOpus5, Scalos, wanderer, most files have an icon file associated with it. To change the default tool, select Icon menu, Information, and change the default tool string. For example, you could use Multiview, Editor and so on for most text, graphics and some sound files as long as the appropriate Datatype classes are installed. For scripts, set the tool to C:IconX C:Join Image1.png Image2.png TO MyFile.info is enough to make a dual state icon from two png images. You can then use Wanderer's menu Icon/Information on it to edit its fields and tooltypes. [http://www.amiga.org/forums/archive/index.php/t-46881.html Amiga OS 3.x AfA icons thread], [http://eab.abime.net/showthread.php?t=66213 Later DualPNG and OS4 icons thread] and [http://archives.aros-exec.org/share/graphics/icon/ Alternative Icons sets] like [http://www.amiga-look.org/artwork/classic-wb-png-iconset-l ClassicWB] [http://www.masonicons.info/6.html AISS toolbar images] unpack unarc them into RAM: and copy Images directory to SYS:Prefs/Presets/ AISS icons are looked for in PROGDIR:, PROGDIR:Images, SYS:Prefs/Presets/Images and then in TBImages: according to Open Amiga guidelines. there is Demos/iconscale which could be launched from S:User-Startup with two arguments, telling it the horizontal and vertical size. IE something like Demos/iconscale 40 40 It will shrink icons... not sure if it will be very nice though. it doesn't work for the icons on the main desktop. there is an option to scale an icon to a bounding box afair, try iconsize followed by two numbers, like: iconsize 32 32 Is there any way in AROS to change an icon type from Project to Tool or vice versa? Either the SIT option of [http://archives.aros-exec.org/index.php?function=showfile&file=utility/workbench/ ProcessIcon], or the TYPE option of HandleInfo (not sure if this one works at all, please test with care). processicon sys:pathoftheicon SIT=Project SIT Set type of ICON. Allowed types are: "Disk", "Drawer", "Tool", "Project", "Garbage", "Device", "Kick" and "AppIcon". Btw, are your icons, the #?.info files, writable, is the W flag set ? ===Fonts=== Install the #?.ttf files to SYS:Fonts/TrueType. Use SYS:System/FTManager to "Install Font" each #?.ttf file which will generate associated #?.otag and #?.font in SYS:Fonts. Use SYS:Prefs/Fonts to change system fonts and SYS:Prefs/Zune to change others. To achieve our goal we will use the Setup Locale, Input, Zune and Fonts, as well as The FTManager. Begin The first step you should do is to get the system to know that we speak and write in another language. What you need to do is to open the setup program and choose Locale country, and list "preferred languages" to put it first and then English. If you want the tab "Time Zone" and select city of residence to set the clock correctly. Of course we save our changes and continue opening the setup program Input. This sets the keyboard language as our beginning. When the language layout was created there was no option to switch to Aros keyboard (layout switching), so to write in the language you had to hold down Alt, something you encounter in other functions. This time working with the team of Aros to create a new keyboard layout to replace the old so we can get rid of the button Alt. For now though let only selected this layout and do not turn the switch on the keyboard. Custom Keyboard Layout [http://repo.or.cz/w/AROS.git/tree/HEAD:/workbench/devs/keymaps keymaps are in place but unfortunately when they are not, then indeed things become a bit 'low-level' as it involves redefining some tables with values that match your keyboards] only need to add your compiled table as new keymap. So taking a little peek here shows that it should be possible to compile using gcc -opc105_tr pc_105.c -nostdlib where the pc105_gr/pc_105.c needs to be replaced with your own adjusted keymapname/c-file [https://en.wikiversity.org/wiki/Enabling_Greek_Characters_on_Your_Keyboard General overview of Greek letters on keyboards] Installing fonts *[http://aminet.net/package/util/wb/EPAGrWb System jaggy] *Outline resizable .font .otag In this step you need to download some fonts that can support the encoding in our system. The easiest way is to run the script "Download Fonts" you'll find in the folder OWB. This script downloads from the Internet, and unpacks some fonts for OWB web browser, which is placed under the folder Fonts:TrueType. But as these can only be used by OWB and not the system, which unfortunately does not see. To make them available to the rest of the system, open the program FTManager, you will find the folder AROS: System /. From there select the field "Codepage" option "ISO-8859-7" and list the font "Arial" and "Regular" form in which you must double-click with the mouse. In the window that appears, select the bottom right the checkbox "Anti-aliasing" button and then "Install". Immediately folder Fonts: created files "arialregular.font" and "arialregular.otag", which are necessary in order to see the system font. Do the same steps if you wish for other fonts. Final stages After completing the above, open the folder AROS: Prefs / and run the program settings Fonts. In the new window, select the fields "Icons" and "Screen" as the font "ArialRegular" to the size you want. In the field "System" to give "s_courier", which, however, because it is not True Type Font support Antialising, and may seem a little broken. You can also use the CourierNew, if you have installed the above procedure. After you save the changes and open the Zune program settings. In this set the "ArialRegular" font fields in tabs "Windows" and "Groups", and save the changes. Reboot the system. To make sure that the above worked properly run NoWinED, which you will find under the folder AROS: Tools /. If that everything is working correctly you will see the menu and the settings window with Greek letters. You can also write in the language using the button Alt. Second program that you can try, which is fully localized, is WookieChat, which you will find in the folder AROS: Extras / Networking. And in this place all the menu and settings window works. ===Windows=== *Intuition The window you position and resize, you right click on that windows title bar and in the dropdown menu you snapshot from there. Right click to show menu -> Window -> Snapshot Windows or All but it will NOT work if that folder has no icon (e.g. Disk.nfo) attached to it. You need a folder icon. The window information gets saved in it. As for maximising the window using a shortcut key - Alt and up arrow key The AROS-Shell windows can be moved, resized by editing sys:s/icaros-sequence <pre> ; run shell if ${Icaros/autoshell} EQ true run QUIET c:newshell >NIL: EndIF </pre> ; slimmer right aros the screen run QUIET c:newshell con:0/150//300/ >NIL: ; top right corner scr-x scr-y win-x win-y run QUIET c:newshell con:600/150//300/ >NIL: *Zune - AROS version of MUI Magic Menu type functionality is implemented in IControl preferences editor: in the frame called Menus, switch type from Pull-Down to Pop-Up and/or iControl just tick the sticky menu option. Windows outside screens causing a problem either uncheck "Offscreen move" for windows in IControl prefs editor. Or use FKey commodity and define two key shortcuts: * the first using the command "cycle windows" (for example ALT TAB); * the second using the command "rescue window" (for example ALT F5). Now you can cycle windows until the one you want to rescue, and then "rescue" it: it will move back inside your screen. How to save the window size on wanderer (snapshot all, snapshot windows) Same for icon position on wanderer, can't save the position. Icon position cannot be saved yet, but you should be able to save the window position and size. sys:prefs - wanderer icon has option to save window size on exit but just for dh0. To get saving working on (DH1: Extras:) partitions try deleting the dh1 disk.info file, then reboot. The system should create a new dh1 icon. * how to set up permanently 'view all files'? As for viewing all files, removing disk.info for that disk did the job * how to list and kill processes (xkill would be useful) ? sys:Extras/System/Scout can kill apps sys:Tools/Commodities/Exchange can remove available commodities * how to restore 'go up' button in wanderer window? (it doesn't show up anymore). If you're using Icaros, go to the theme prefs and make sure that decoration is checked. Also, some themes do not use a parent button, so try another theme. You may have to restart Aros before the theme will change. * Is it really safe to turn off (hardware button) computer at any time (worried about USB hard disk) yes you can turn off the computer IF none of the drives are in progress (i.e. writing). Best to use Wanderer menu option Quit otherwise ===Printing=== This is still work in progress print from my AROS box! <pre> 1. installed printfile ( http://www.lerup.com/printfile/ ) on my Windows XP computer 2. set up the print spooler option, and used ghostscript filter for ps files 3. made the spool folder accessible from ftp (setting up ftp server on Windows) 4. send the ps file from my AROS box to the ftp server using curl (curl -T filename ftp://windows.box.adress --user username:password) </pre> It's a bit complicated but it works! *Postscript Best to set Printer Prefs in the Prefs drawer to print-to-file or parallel/USB port Save document in postscript or convert picture/text to postscript Print using compatible [http://en.wikibooks.org/wiki/Aros/Platforms/AROS_USB_support#printer.class_-_PostScript_3_and_internal_ghostscript_drivers Ghostscript printer] or Postscript printer *GutenPrint Some work has been done ;There are no individual drivers yet for HP's Photosmart, EPSON's EPL, CANON's, Lexmark, CUPS PPD, etc. ===Files=== ====File endings and datatypes==== * Check if the file has his own .info icon file with a tool set to open it. IIRC this has higher priority over the def_XYZ.info file association. * In ENVARC:SYS/def_Text.info or whatever def_ file needs changing, use Wanderer's menu Icon -> Information and change the def_XYZ.info there. If you're on ABIv0 and want it to be applied immediately, you might have to copy it to ENV:SYS/ (or to reboot). * Identifying file types by file ending is only a fallback. Far better it is to search for magic words, for flac files this would be "flaC" according to this [http://flac.sourceforge.net/documentation_format_overview.html documentation]. For instance, to open PDFs with arospdf not localised in the default drawer of Icaros (Work:Extras/Applications/arospdf) but localised in a custom drawer in AROS. The default tools are defined in the icons in sys:prefs/env-archive/sys e.g. def_PDF. File type identification is done by datatype descriptors which you can find in Devs/Datatypes. The AROS build system has a tool which creates such datatype descriptors. '''Changing of default tools of existing icons is easy as shown above. Adding of new file types is not hard, but needs knowledge of the AROS build system.''' The enduser way would be to download the attached file, which contained two executables: 1) createdtdesc, to make a new datatype description 2) examinedtdesc, to read/show existing datatype descriptions use 2 to get an idea on how it things are currently done in aros by providing this executable a file from the drawer sys:devs/datatypes/ (alternatively you can find the original .dtd files here). use 1 to make your new datatype. Use the accompanied FORMAT file (also here) to read how to make your own datatype descriptor. use 2 to get hints from other datatype descriptors. Note: When creating a new descriptor would advise against using the pattern property, but instead use the default pattern of #? and create a Mask that matches your filetype. This requires some research in order to discover how your filetype can be recognized properly. Of course with making something like a descriptor for an ascii textfile, you would fallback to using the pattern (e.g. #?.text as the filetype cannot be determined easily otherwise). <pre > # name - choose wisely and informative. also used for icon's name. # version - choose as you like as long as it complies with version rules # basename - the 'root' datatype class. be aware that e.g. it can influence behaviour. for example when choosing binary and using tool multiview in project icon, the file will be viewed as binary file (choosing sound would tell mulitview to view the file as a soundfile). So this can influence the underlying tool being used. Could become messy if users started to modify the tool manually. # pattern - This is the file pattern match e.g. #?.text # Mask - A mask to identify the file. Requires knowledge of the actual file structure. For example 'M' 'Z' for an msdos executable. # GroupdID - not supported (AROS native) files - use syst as that would be the least intrusive in case an AROS tool/program tries to load such datatyped file. # ID - In your case, the first four characters of the name at subchapter 1 (in lower case) (or less if name is shorter). # flags - How the mask needs to be interpreted. In your case would be mostly DTF_BINARY in combination with (wanted or not) DTF_CASE (to tell if mask used letters are case sensitive or not) # priority - the priority of how the type is handled so that on datatype could have precedence over another? In any case, document tells it to be mostly 0. </pre > Now that you know each field and what it does (more or less), you write this fields in a text file for your own invented datatype, save it and create the actual dt with the tool in 1. in the end the created dt must reside in sys:devs/datatypes/ drawer. Then you would create a default icon in sys:prefs/Env-archive/SYS drawer. Don't forget to reboot or copy .info file to ram:env/sys in order to test. also don't forget to set which tool to start f.e. c:lx or dh4:emulators/mycoolemulator To test, open Wanderer then show all files and doubleclick on a file of type you just created. Alternatively you could use the 'open' command from shell (with file of datatype you just created as parameter). And as a last note. it would perhaps be welcome to have a program like xicon and/or runprglist for AROS (unfortunately both without source, but something similar could be created for AROS). Sounds complicated ? Perhaps... but OS like windows needs a complete registry to be able to do things like this. And yes, i am aware windows has gui tools that does it (more or less) for you (by manipulating the registry). Same could be done for AROS (without integrating a registry in AROS that is ). Would that suffice ? red1+2: typos, reformatting. disclaimer: please note that using these tools can screw up your currently installed support for datatypes when used incorrectly. Do not use if you do not understand what you are doing. Use at own risk. ==Network Connection== AROS currently only has one real choice for TCP/IP networking - AROSTCP. This is a port of the AmiTCP package from AmigaOS (TM), with a number of enhancements/fixes from AROS developers. Please use Prefs/Network to set up wired, wireless or USB networking Non USB wifi is easier, USB wifi can be an annoyance - remember to save whilst in prefs ===Wired=== =====IPv6===== Some support 128bit IPv6 address packet <pre> Local FD::/8 Global 2000::/3 64:ff9b::/96 </pre> NAT64 translates IPv6 to IPv4 DNS64 OS routing works with <pre> MacOS Ventura Windows 11 with cloud account Ubuntu Jammy Jellyfish Android 10 (block google dns) </pre> ====IPv4==== The top half of the IPv4 Configuration tab on the Network Prefs deals with the network card/USB and the lower half the router part. [[File:AROS Wanderer Network Prefs DHCP.png|thumb|DHCP Settings]] '''Upper part of IPv4 tab''' * Click Add on the top right of the Prefs which opens a window called '''Interface''' * Enter Name as net0 (but can be anything as long as it is consistently used in other sections) * check mark on Active * select device to be used using the '''right hand-side gadget''' of the box where the device name will go * set Unit to 0 * IP Mode is default set to '''Get address from DHCP''' * IP Mode set to Manual if DHCP does not work automatically From the shell CLI, ifconfig -a Under net0: section, inet starting 192.168.x.xxx * inet or '''Address''' of network card * netmask convert to decimal so 0x'''ffffff7f''' becomes 255.255.255.247 which is used to adjust the above '''Address''' into * broadcast 192.168.xxx.xxx click OK [[File:AROS Wanderer Network Prefs Manual.png|thumb|Manual Settings]] '''Lower part of IPv4 tab''' * IP Mode Get address from DHCP (default) * or changing to Manual if automatic DHCP set up does not work * '''Gateway''' (Router Internal LAN-IP) (Default Route) = 192.168.0.1 (D-Link Netgear), 192.168.1.1 (Linksys 3com), 192.168.2.1 (SMC Microsoft), 192.168.1.254 (Belkin), 192.168.123.254 (USRobotics) else check with your router manual * first DNS = use 208.67.222.222 (opendns) or Gateway number above (to test web browser access to router) or 212.50.160.100 (google) i.e. or whatever your ISP needs you to set * second DNS = use 208.67.220.220 (opendns) or Gateway number above (to test web browser access to router) or 213.249.130.100 (google) i.e. or whatever your ISP needs you to set * At the bottom of IPv4 tab, check mark the '''Start networking during system boot''' option * Save and reboot (sometimes Network restart fails, so reboot every time to be sure) '''an alternative way''' to AROS ifconfig -a, other OSs have similar for the same internet connection. Another connection will have different settings. e.g. From [http://www.ncsu.edu/resnet/windows/ipconfig/ Windows], '''ipconfig /all''' and note down the IP, subnet mask, default gateway, and DNS servers values and put these values in "manually" into AROS Network prefs. e.g. From Linux via dhcp router have a look at etc./dhcpc/dhcpcd-eth0.info * for manual input look at /etc/networks (IP or Gateway) and /etc/resolv.conf (DNS) Please note that all in one routers (wired+wireless) or separate routers may need different settings IPv4 involves routing (192,168.x.x), firewall, NAT ===Wireless=== [[File:MyArosWirelessSetup.png|thumb|Setting up]] [[File:MyArosWirelessTCP.png|thumb|Shell commands to work out what is happening]] We must first make certain you have a Atheros 5k chip inside acting as the wireless wifi option. Open PCITool in Tools directory. Down left hand side are a series of numbers 0.00.0 etc. Click on some at the bottom and hopefully one of them will say Atheros AR5??? or AR242?. or a Realtek RTL8187B, we can check using Prefs/Trident as this one is USB based There are many similarities with the above Wired set up so please read the above section as well * open Network/Prefs * In '''IPv4 Configuration''' tab - click Add - enter net0 / active tick / #?.device / Unit 0 / IP Mode = manual (important if default DHCP does not work automatically) Make sure that any extra network names (e.g. eth1 or net1) should be deleted. If net0 already st previously, change net0 so that it shows associated with the appropriate device name like atheros5000.device or realtek8180.device. Having two entries here will cause sub-net problems. * Go to '''Wireless''' tab and click on "Add" button. * Insert network name (SSID your wireless network name use wirelessmanager to get it), select right "encyption" that is most likely "WPA". * Key Type set as "Passphrase". i.e. type in your password for your router (aka access key). * Unselect (no tick) "hidden" if it is selected, then apply. You may have to tick it if wireless does not work. * Finally, Save and '''reboot'''. For the best chance of success, set networking to start at boot, and then reboot with the USB adapter plugged in. ===USB Ethernet=== Open SYS:Prefs/Network and in the IPv4 Configuration tag (top table covers your usb stick) * click Add button * set Name as net0 * Tick Active box * enter the usb-ethernet.device e.g. dm9601eth.device, usbpegasus.device or usbasixeth.device use SYS:c/devlist, '''Scout''' or trident prefs to get the correct spelling * set Unit to 0 (which is usual but check the messages from the bottom of the Trident prefs whilst plugging the device in to determine the unit number otherwise) * IP Mode is set to Get address from DHCP (make sure your router is set right for that) '''or manual''' * IP Address of network card, i.e. 192.168.0.xx or 192.168.1.xx (xx being greater than 1) * Subnet netmask = 255.255.255.0 * click OK There can be sometimes be boot failures when using USB ethernet - plug the USB device in after boot and save the network prefs to make it work again. Lower part of IPv4 tab covers the router information * IP Mode Get address from DHCP '''or if manual settings''' * Gateway (IP Address of router) = usually 192.168.0.1 or 192.168.1.1 but see router manual to make sure. * first DNS = use 8.8.8.8, 208.67.222.222 (opendns) or 212.50.160.100 * second DNS = use 8.8.4.4, 208.67.220.220 (opendns) or 213.249.130.100 ===USB Tethering via Android smartphone=== Go to AROS Network Prefs (IPv4 configuration tab) and write type in "usbrndis.device" in the "device" textfield of "Interface" sub-window, which appears when you add a new device (or modify an existing one). Select "Start Network during system boot" and saved the configuration, the Connection is immediate no reboot is needed.<br> usbrndis.device is a resident device (virtually always there) in fact, a driver is not present in DEVS:Networks <br><br> Plug in USB cable, go to Android settings and enable "USB Tethering" <br> A reboot should not be necessary. When restarting AROS, the Smartphone deactivates the connection and to access the network again have to reactivate it before starting the browser. ===Solving Issues=== [[File:MyArosTCP.png|thumb|Aros network setup diagnostics - why does it not work?]] * In Network Preferences, have '''only one''' item in the IPv4 Configuration tab * If using manual settings, make sure all numbers are correct, especially for IP address of the card/usb (changing the last number in chain of four) * For any USB based networking, it is often necessary to save in Prefs/Network, reboot AROS and network support can begin * For wired, make sure that the LAN-cable is plugged in before starting the computer * If wireless, try getting closer to the router. * Switch off the encryption option from your router then try wifi, if successful then your ip/dns is ok. If not then your ip/dns settings are most probably wrong or need to use one or more opendns numbers * Replace detachable wireless antenna (best wireless option to buy if you can) with a stronger antenna ie. 5&nbsp;dBi or 7&nbsp;dBi * Try with another computer/laptop/machine Program Error C:WirelessManager * Test with another OS * Check that Wifi works before changeover (if possible) * Check that socket and card are working * Check if card is too new for laptop (date code on card MMYY blue askey date 2005-2007 etc) Are you connecting with the Router ? Check with protection off e.g. wps and wep to see if it makes a difference. For USB wireless - stopping and starting may be needed... <pre> ; $VER: AROSTCP-startnet 1.0 (01/08/06) ; AROSTCP-startnet (c) The AROS Dev Team. ; Run <NIL: >NIL: AROSTCP WaitForPort AROSTCP If NOT Warn ; echo "Stack online" Else echo "Wait for Stack Failed" EndIf ; stop and restart execute "sys:system/network/AROSTCP/s/stopnet" Run <NIL: >NIL: AROSTCP WaitForPort AROSTCP If NOT Warn ; echo "Stack online" Else echo "Wait for Stack Failed" EndIf run <NIL: >NIL: wirelessmanager realtek8180.device </pre> What IRQ number is assigned to the device? You can check with Tools/PCITool? It's possible the BIOS hasn't set the right IRQ number. If you have a Linux CD/DVD handy, could you check if it boots with the options "acpi=off noapic nolapic"? If the following does nothing, this will help us figure out why networking doesn't start automatically at boot open a shell and run the following commands: <pre> echo ${AROSTCP/AutoRun} echo ${AROSTCP/WirelessAutoRun} echo ${AROSTCP/WirelessDevice} </pre> Please report the output, typically it will look like this # True (explanation this variable is related to the "Start networking during system boot" checkbox in network prefs) # True () # Devs:networks/atheros5000.device unit 0 If there's a problem with the AROSTCP package. What's the output of this? ENV:sys/packages/AROSTCP should return a string = Sys:System/Network/AROSTCP By the way, a quicker way to check networking is working would be to run some shell commands such as: <pre> ping www.google.com ifconfig net0 </pre> The best way to list the available networks and diagnose / troubleshoot problems with connecting to a wireless network is to run WirelessManager manually. First uncheck the "Start networking during system boot" box in the Network prefs app, then save and reboot. Then run this in a shell: C:wirelessmanager atheros5000.device verbose or C:wirelessmanager realtek8180.device verbose and capture the output If the above does not help, could you edit the file SYS:System/Network/AROSTCP/S/Package-Startup, and change ">NIL:" to ">T:wifi.log" on the WirelessManager line and add this as well Wait 5? <pre> if ${AROSTCP/WirelessAutoRun} eq "True" Run QUIET "C:WirelessManager ${AROSTCP/WirelessDevice} >T:wifi.log" wait 5 EndIf </pre> Then save, reboot and post the log file (T:wifi.log) here. <pre> c:wirelessmanager atheros5000.device verbose Initializing interface 'atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Reading configuration file 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=7) 65 63 68 65 6c 6f 6e echelon PSK (ASCII passphrase) - hexdump_ascii(len=14): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='echelon' Then it just sits there. Not sure what a normal dump looks like, I don't see anything that looks wrong in the configuration. </pre> looks like the driver isn't working with that card. Has anyone else successfully used that exact model number (AR2413)? <pre> Initializing interface 'atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=7): 65 63 68 65 6c 6f 6e echelon PSK (ASCII passphrase) - hexdump_ascii(len=14): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='echelon' *** [wpa_sm_init] sm->pmksa=02c66fd4 *** Own MAC address: 00:01:36:15:ae:0c RSN: flushing PMKID list in the driver Setting scan request: 0 sec 100000 usec EAPOL: SUPP_PAE entering state DISCONNECTED EAPOL: Supplicant port status: Unauthorized EAPOL: KEY_RX entering state NO_KEY_RECEIVE EAPOL: SUPP_BE entering state INITIALIZE EAP: EAP entering state DISABLED EAPOL: Supplicant port status: Unauthorized EAPOL: Supplicant port status: Unauthorized Added interface atheros5000.device:0 State: DISCONNECTED -> SCANNING Started AP scan for wildcard SSID MLME: starting scan MLME: scan channel 1 (2412 MHz) sana2: sending MLME frame Then it stops. Does this mean the router is not authorizing this NIC? IRQ 4 (A) </pre> apparently locking up when the first frame is sent (a scan request). <pre> Devs/Networks/atheros5000.device:0 Initializing interface 'Devs/Networks/atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Reading configuration file 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=12): 41 69 72 4c 69 6e 6b 35 39 33 30 30 AirLink59300 PSK (ASCII passphrase) - hexdump_ascii(len=8): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='AirLink59300' *** [wpa_sm_init] sm->pmksa=0224e444 *** Own MAC address: 00:1f:e1:42:e3:7a RSN: flushing PMKID list in the driver Setting scan request: 0 sec 100000 usec [eloop_reg_timeout] Timeout is at 1317686594.160000 EAPOL: SUPP_PAE entering state DISCONNECTED EAPOL: Supplicant port status: Unauthorized EAPOL: KEY_RX entering state NO_KEY_RECEIVE EAPOL: SUPP_BE entering state INITIALIZE EAP: EAP entering state DISABLED EAPOL: Supplicant port status: Unauthorized EAPOL: Supplicant port status: Unauthorized [eloop_reg_timeout] Timeout is at 1317686595.060000 [eloop_reg_timeout] Timeout is at 1317686604.060000 Added interface Devs/Networks/atheros5000.device:0 [eloop_run] Starting State: DISCONNECTED -> SCANNING Starting AP scan for wildcard SSID MLME: starting scan [eloop_reg_timeout] Timeout is at 1317686594.160001 MLME: scan channel 1 (2412 MHz) [eloop_reg_timeout] Timeout is at 1317686594.193000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.233000 MLME: scan channel 2 (2417 MHz) [eloop_reg_timeout] Timeout is at 1317686594.253000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.293000 MLME: scan channel 3 (2422 MHz) [eloop_reg_timeout] Timeout is at 1317686594.333000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.373000 MLME: scan channel 4 (2427 MHz) [eloop_reg_timeout] Timeout is at 1317686594.393000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.433000 MLME: scan channel 5 (2432 MHz) [eloop_reg_timeout] Timeout is at 1317686594.473000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.513000 MLME: scan channel 6 (2437 MHz) [eloop_reg_timeout] Timeout is at 1317686594.553000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.573000 MLME: scan channel 7 (2442 MHz) [eloop_reg_timeout] Timeout is at 1317686594.613000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.653000 MLME: scan channel 8 (2447 MHz) [eloop_reg_timeout] Timeout is at 1317686594.693000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.713000 MLME: scan channel 9 (2452 MHz) [eloop_reg_timeout] Timeout is at 1317686594.753000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.793000 MLME: scan channel 10 (2457 MHz) [eloop_reg_timeout] Timeout is at 1317686594.833000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.853000 MLME: scan channel 11 (2462 MHz) [eloop_reg_timeout] Timeout is at 1317686594.893000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.933000 MLME: scan channel 12 (2467 MHz) [eloop_reg_timeout] Timeout is at 1317686594.973000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.013000 MLME: scan channel 13 (2472 MHz) [eloop_reg_timeout] Timeout is at 1317686595.033000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.073000 EAPOL: disable timer tick EAPOL: Supplicant port status: Unauthorized MLME: scan channel 14 (2484 MHz) [eloop_reg_timeout] Timeout is at 1317686595.113000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.153000 MLME: scan channel 1 (2412 MHz) [eloop_reg_timeout] Timeout is at 1317686595.193000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.213000 MLME: scan channel 2 (2417 MHz) [eloop_reg_timeout] Timeout is at 1317686595.253000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.293000 MLME: scan channel 3 (2422 MHz) [eloop_reg_timeout] Timeout is at 1317686595.333000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.353000 MLME: scan channel 4 (2427 MHz) [eloop_reg_timeout] Timeout is at 1317686595.393000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.433000 MLME: scan channel 5 (2432 MHz) [eloop_reg_timeout] Timeout is at 1317686595.473000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.493000 MLME: scan channel 6 (2437 MHz) [eloop_reg_timeout] Timeout is at 1317686595.533000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.573000 MLME: scan channel 7 (2442 MHz) [eloop_reg_timeout] Timeout is at 1317686595.613000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.653000 MLME: scan channel 8 (2447 MHz) [eloop_reg_timeout] Timeout is at 1317686595.673000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.713000 MLME: scan channel 9 (2452 MHz) [eloop_reg_timeout] Timeout is at 1317686595.753000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.793000 MLME: scan channel 10 (2457 MHz) [eloop_reg_timeout] Timeout is at 1317686595.833000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.853000 MLME: scan channel 11 (2462 MHz) [eloop_reg_timeout] Timeout is at 1317686595.893000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.933000 MLME: scan channel 12 (2467 MHz) [eloop_reg_timeout] Timeout is at 1317686595.973000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.993000 MLME: scan channel 13 (2472 MHz) [eloop_reg_timeout] Timeout is at 1317686596.033000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686596.073000 MLME: scan completed </pre> Is your network hidden? If so, did you enable the 'Hidden' checkbox in the network prefs? What distro version are you using? <pre> "ENV:sys/wireless.prefs" looks like this: network={ ssid="testadhoc" key_mgmt=NONE wep_key0="12345" wep_tx_keyidx=0 } </pre> If your router doesn't broadcast its SSID (hidden), you need to add this option to the network block of the wpa_supplicant.conf on your aros machine and make changes after # Example blocks: scan_ssid=1 Here's a full description of all the [http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/wpa_supplicant.conf config file options]. <pre> ap_scan=1 network={ ssid="YOURESSID" scan_ssid=1 proto=RSN key_mgmt=WPA-PSK pairwise=CCMP group=CCMP psk=YOURPASSWORD } </pre> <pre> filter_ssids=1 ap_scan=2 network={ ssid="REMOVED" scan_ssid=1 bssid=REMOVED priority=100 mode=0 proto=RSN key_mgmt=WPA-PSK auth_alg=OPEN pairwise=CCMP group=CCMP psk=REMOVED } </pre> Error 6: Couldn't resolve host name. Check Scout -> Devices and look at the device that you are using, in the OCnt column it should state 2 which means AROSTCP and Wirelessmanager are both accessing this driver. If 0 or 1, then uncheck the checkbox in Network prefs for starting networking at boot, save and reboot. Then run this is the shell: C:WirelessManager realtek8180.device unit 0 some quirks setting up the wireless network as well 1) it's far better setting up either the wired OR the wireless network adapter as net0:, or weird things happen 2) it's better using fixed IP on the local network instead of DHCP 3) network setting must be placed in network setting panel in /prefs, using the wirelessmanager helped me finding available SSIDs, but not actually connecting to them once done, reboot. If previous setup is proving problematic <pre > SYS:Prefs/Env-Archive/Wireless.prefs SYS:Prefs/Env-Archive/Zune/OWB.config SYS:Prefs/Env-Archive/Zune/global.config SYS:Prefs/Env-Archive/AROSTCP/WirelessDevice SYS:Prefs/Env-Archive/AROSTCP/db/Interfaces </pre > Make a copy of these files and restore in case of problems. Please try this test to check if you can connect to your router, ie established that the WiFi layer is working ̊̊̊̊Boot with networking disabled, by make sure that "Start networking at boot" in Network Prefs is unchecked (no tick). ̊ Run this in a shell: C:WirelessManager atheros5000.device VERBOSE ̊If the output of that command is too long to summarise here, you can redirect it to a file by adding >RAM:wifi.log to the end, then attach or paste that file here. try running "status" in the shell and check that AROSTCP is listed/running If AROStcp is not showing, then AROSTCP is not running. attempted to start it by clicking Use or Save in network prefs, or checking the "start networking at boot" box or typing into a shell. Execute SYS:System/Network/AROSTCP/s/startnet (run Status again afterwards). The "cannot resolve hostname" will appear if you are blocked on the wifi network by the router as well as aros not being able to assign correct network address. One way of testing this might be to disable the firewall in the router. you might also check the router how it sees the attempts aros do to speak to it. The easiest way to do that would be to manually give aros an IP number in the routers accepted range. and see if it shows up at all within the router. Tests that can be undertaken to determine correct settings and functions pciinfo sanautil -d broadcom4400.device status <pre > ping <router-address> e.g. 192.168.0.1 (aka inet) or 80.237.146.33 (www.amiganews.de) ifconfig net0 ifconfig net0 up extras:networking/utils/sanautil/sanautil -d atheros5000.device status WirelessManager atheros5000.device verbose >RAM:wifi.log ;to send the log to RAM disk to be read easier or if detected, Run WirelessManager atheros5000.device >NIL: Run WirelessManager atheros5000.device ssid="mynet1" >NIL: C:WirelessManager realtek8180.device unit 0 </pre > Please look at the task list in Scout, and check if WirelessManager and AROSTCP are running. Also look at the device list in Scout to check if realtek8180.device is open. start tools/debug/sashimi, maybe it shows some debug messages when disconnection happens. Firstly, let's take a look at what your setup most likely looks like, assuming you use a router. See diagram below: <pre> Internet <---------> home router <---------> computer -----------external IP------------------internal IP------------- </pre> Okay, so what am I trying to show you with that diagram. A few things. Firstly, the IP address that connects you to the Internet is not the same one that connects you to your router. What happens is that your computer doesn't have a direct connection to the Internet, instead your router connects to the Internet, and your computer connects to the router. You can see the external and internal IP addresses in these example settings... * Default Gateway : 76.91.64.1 (external IP for ISP/Internet host) * IP Address : 76.91.71.184 (external IP for home router) * IP Address : 192.168.0.1 (internal IP for home router) * Address = 192.168.0.161 (internal IP for computer) As you can see, there are two internal IP addresses and two external IP addresses. This is because there is a client/server relationship, effectively one address is for the service (server) and one address is for the device trying to access that service (client). The server addresses in your case are 76.91.64.1 (your ISP's address, serving the Internet), and 192.168.0.1 (your home router's address, serving your home network). The term gateway applies here, they are your gateway to those services. Subnet masks are used along with IP addresses to determine which IP addresses are allowed access to a network. I did learn the more in-depth rules about subnet masks once (watched a CCNA vid), but I've forgotten about it. The basic level of understanding you'll need is easy to remember though. A subnet mask value of 255 means that portion of the IP address must stay constant, whereas a subnet value of 0 means any unassigned value up to 255 is allowed in the IP address. By far the most common subnet value is 255.255.255.0. What this means is that the first three parts of the IP address you use to connect to a service must stay the same as the server/gateway address, and only the last section can change. So if your router's internal IP address is 192.168.0.1, and the subnet mask is 255.255.255.0, the only addresses that will be allowed to be used on that network are between 192.168.0.2 and 192.168.0.255 (I think 192.168.0.0 is reserved for other uses). Final point to make is about DHCP (a.k.a. dynamic IP) vs static IP. A server/router using DHCP gives a device that connects to it an address within the acceptable range. It usually starts with the lowest numbered free address, so with your router it'll give the first device that connects to it 192.168.0.2, the next device 192.168.0.3, and so on. Static IP addresses are where you set the IP address you want to connect with in advance. When using static IP addresses on a router where DHCP is active, it's good to use a high number to avoid conflicts with other devices that are connected to your network, to reduce the risk that both devices will try using the same IP. That's why your current choice of 192.168.0.161 is good, unless you have over 159 devices connected on your current network! Okay, so what's the next step. Well, if you can use ping, I'd suggest pinging 192.168.0.1. If you get a positive response it means you're connected to your router, if you don't get a response it means the connection between your router and your computer is at fault. Documentation on configuring the AROSTCP environment further can be found [http://en.wikibooks.org/wiki/Aros/User/Networking here] ===File Sharing=== As AROS knows only a few filesystems (FFS, OFS, SFS, PFS (amiga only), FAT12, 16, 32, Microsoft NTFS (windows), UDF (Blu-ray)). The others in regular use like MacOSX hfs+, Linux ext2/ext3 and ext4, Haiku BeFS provide a problem in transferring files. Linux can access SFS partitions but it needs to be compiled. The latest full source are [http://home.elka.pw.edu.pl/~mszyprow/programy/asfs/ here]. It compiled fine with a 2.6.30 kernel in Puppy Linux 4.31. An alternative, is to use a FAT32 partition to share. Setup first with a 2G FAT32 partition for sharing, and the rest of the space as SFS for an Aros install. It works very well. Files could be transferred via TCP internet network. ====SMB2/3==== With Windows you can share one folder or all folders of the "Public" user. On Windows what is important is to enable sharing (Network and Sharing Center). AROS Mountlist should look lke this <pre> Handler = L:smb2-handler StackSize = 65536 Priority = 5 GlobVec = -1 ACTIVATE=1 Startup = "smb://UserAcc:password@PCShare/Sharefolder" </pre> which could also be "smb://UserPC:password@192.168.x.x/Public" or "smb://UserPC:password@Name-PC/Public" so "smb://UserPC:password@192.168.1.158/Folder" or "smb://UserPC:password@Name-PC/Folder" After you have configured a share generates a DOSDrivers it is named "SMB0" which includes the setting, and at each reboot it is Mounted. You can still delete the DOSDriver by hand, is located in Storage/DOSDrivers, the file "ServerAutoMounts", in ENV:AROSTCP which indicates the DOSDriver to be mounted, should also be deleted. The per-mount files are written to ENV:SMB or SYS:Storage/DOSDrivers. There is also additional file ENV:AROSTCP/ServerAutoMounts which states what will be presented to the end user. ====Old SMBFS==== e.g. to connect to a NAS share such as \\NASBOX\Shared use -: SMBFS WORKGROUP=<YOUR WORKGROUP NAME> VOLUME=<AROS volume name to use>: SERVICE=<UNC Path to connect to> SMBFS WORKGROUP=MYNET VOLUME=Shared: SERVICE=//NASBOX/Shared And you will then have an icon appear on your desktop for the volume name you have chosen. You can put the above script into wbstartup or give it an icon, change it to a 'project' and give it the default tool c:iconx Open a shell and type copy sys:script.info "sys:wbstartup/YOURSCRIPTNAME.info" This should create an icon for your script file. Now right-click on your script and select 'information'. Change 'tool' to 'project', put 'c:iconx' into the 'default tool' box, click save The reason being that scripts need to be opened with 'execute SCRIPTNAME' (or 'iconx') whereas the programs started from wbstartup are opened using 'run PROGRAMNAME'. It's the same as trying to start a command-line tool from the workbench by double-clicking it. ====Setup ISO images within AROS==== Use [http://archives.aros-exec.org/index.php?function=browse&cat=driver/storage DiskImage] which supports many cd image formats ISO, CCD, MDF/MDS, CUE/BIN, NRG and UIF. To mount CD or DVD images use below.... <pre > # Rename your iso 'Unit0' (note no extension). # Do 'View/All files' on you Aros partition. You should now see a folder called 'Diskimages'. Copy your renamed iso to there. (Alternatively, you could type at the shell 'assign FDSK: xxx', where xxx is the location of your iso.) # From the shell, type 'mount CD0:' and the iso should appear on the Wanderer desktop. You can now access it like a real disk. </pre > assign devname: dismount Assign DOSVOLUME: remove [http://aminet.net/package/disk/misc/unmount-0.1 unmount] most filesystems work but SFS lacks support for ACTION_DIE packet If you are using an IcAros install, the startup scripts are set up to wipe the Diskimages directory on boot, so its worth keeping a second copy of the iso somewhere else. Alternatively, you could set up extra mountlists for additional iso images. I've made a file called iso1 in the Aros:devs directory that contains the following text: <pre> /* Entry for ISO image */ ISO1: FileSystem = cdrom.handler Device = fdsk.device Unit = 1 LowCyl = 0 HighCyl = 0 Surfaces = 1 BlocksPerTrack = 1 DOSType = 0x41434400 Activate = 1 # </pre> Then I just need an iso called 'Unit1' (corresponding to the 'Unit = 1' entry in the mountlist) in Diskimages (or wherever I assign FDSK: to) and to mount I type in at the shell: Mount iso1: from devs:iso1 Of course, if you create mountlists for ISO2, ISO3:, etc. (with the corresponding change to the 'Unit = ' line) you can have as many isos mounted as you wish. I just call mine ISO1: etc. to distinguish them from the real CD drives ==Video Guides== Video demonstrations and tutorials covering: :00. '''Introduction''' ::[https://www.youtube.com/@jamesmattson6813/videos Various Aros Installs], ::[https://www.youtube.com/embed/j8EmSEby0Rg AROS repo in gource, view of AROS dev commits from 1997 to 2025], [http://www.youtube.com/watch?v=Vx_zqlBow40&feature=related Gource view of AROS 1997 up to 2009], ::[http://www.youtube.com/watch?v=s1RsvEm7UrU Why an Amiga OS in 2011], ::[https://www.youtube.com/watch?v=1W886mheV74&pp=ygUPYW1pZ2EgYXJvcyAyMDI2 Johan Grip on early days of AROS x86], [https://www.youtube.com/watch?v=mXaKDhtTTqQ&t=14s&pp=ygUPYW1pZ2EgYXJvcyAyMDI2 Michel Schulz on Aros and PiStorm], :01. '''Installation''' ::[https://www.youtube.com/watch?v=M7YjufrJqDs Aros One install], [https://www.youtube.com/watch?v=iIMguHTdC5E Aros One USB install], [https://www.youtube.com/watch?v=ZNXauy5m5Wc Aros One install], [http://vimeo.com/11013489 Modify Grub boot], ::[http://www.youtube.com/watch?v=wyQVeyXIywc&feature=channel iMica Silent Pt3], [http://www.youtube.com/watch?v=o2AnkoflY14 Wipe whole drive and Install - warning loss of data on drive], ::[http://www.youtube.com/watch?v=OVXm6_-witQ VirtualBox install], [ VMware install], ::[http://www.youtube.com/watch?v=0k2PEmT8I14 Broadway AROS Install], ::[https://www.youtube.com/watch?v=PtDiXhjSIfs Is Aros Icaros a choice?], ::[ driver install], ::[http://www.vimeo.com/10491104 HDAudio install but needs account], [], :02. '''Amiga Basics''' ::[http://www.youtube.com/watch?v=TY8mWxwzH5o Screens tutorial], ::[https://m.youtube.com/user/AMIGASYSTEM/videos General], [ Dos Scripts tutorial], [http://www.youtube.com/watch?v=hPT7SmVEpjc OS 1.2], [http://www.youtube.com/watch?v=n6kX3FqH8Ww&feature=related OS 1.3], :03. '''Customisation demos''' ::[https://www.youtube.com/@AMIGASYSTEM/videos Prefs tutorial], [ Decoration tutorial], [http://www.youtube.com/watch?v=Dn5C8G3aDXU Scalos], :04. '''Setting up''' internet access and surfing the web, FTP, IRC and Mail apps ::[ Network Prefs], [ AirCOS tutorial], [ jabberwocky tutorial], :05. '''Native bundled Games and Applications''' ::[http://www.youtube.com/watch?v=aYlFv2B-VXc 3D Games], [http://www.youtube.com/watch?v=MXK7wwhd-R0 Latest Games], [http://www.youtube.com/watch?v=RUgiVThv23Q&feature=mfu_in_order&list=UL PrBoom GL], [http://www.youtube.com/watch?v=0s7u8TPy7V4 Assault Cubes], [http://www.youtube.com/watch?v=fih6aCXKeqs Cube 2], [http://www.youtube.com/watch?v=-X0ay0MGOms DosBox on Aros], [http://www.youtube.com/watch?v=7nKduDjf14k Oct 2010], ::[http://www.youtube.com/watch?v=FziV2z_uxnQ Apps Pt 1], [http://www.youtube.com/watch?v=xs37_nfa5CI Apps Pt 2], [http://www.youtube.com/watch?v=Bn59_VvbQR0&feature=related Apps Pt 3], ::DOpus4 [http://www.youtube.com/watch?v=aSRybWjrrME DOpus 4], ::Milkytracker [http://www.youtube.com/watch?v=VxBOEPzpdKg&feature=related Laying Down Base Tracks], ::[http://www.youtube.com/watch?v=k2uKQ0-ieOE Audio Evolution 4 in action], [http://www.youtube.com/watch?v=Zq4r9k0_jZI Quick Videos], ::[http://www.youtube.com/watch?v=gGKCFZcIc0I&feature=related ScreenRecorder], [http://www.youtube.com/watch?v=974c2e-Fqak&feature=related TV out Tests], ::[http://www.youtube.com/watch?v=fjq8ct5d5IY AmiFIG], [http://www.youtube.com/watch?v=h0rHvPhYJo4&feature=youtu.be ZuneFIG], ::[http://wiki.povray.org/content/Documentation:Tutorial_Section_1 POVray Tutorial 1], ::[http://www.youtube.com/watch?v=Jk-ZNLfJsvQ pt 1, jan. 2008], [http://www.youtube.com/watch?v=nWRy33g1R7Y pt 2, feb. 2009], [http://www.youtube.com/watch?v=r5PbhCtm4vE pt 3, feb. 2010], ::[https://www.youtube.com/watch?v=G7_FJUoQ89o Hollywood programming], [], [], [], ::[], [], [], ::[], [], [], ::[], [], [], :06. '''Commercial software available''' ::[http://www.youtube.com/watch?v=fKXY9B4R43s AntiryadGX 3D Game Editor], ::[http://www.youtube.com/watch?v=TMS9NDzwm5U BOH indie Game], :07. '''Running classic amiga apps and games''' :: Amiberry [], [], ::[http://vmwaros.blogspot.com/2008/11/introducing-amibridge.html Intro Amibridge], [http://www.youtube.com/watch?v=ee2PWvCZeLo Old Amiga Apps], [http://www.youtube.com/watch?v=ee2PWvCZeLo Why Janus UAE is good], ::[https://www.youtube.com/watch?v=VhlsNSYSuDg DPaint tutorial] ::[http://vmwaros.blogspot.com/2009/11/can-icaros-play-my-amiga-games-and-why.html Play Amiga Games], [https://www.youtube.com/watch?v=XTaZCNOvCnE], ::[http://www.youtube.com/watch?v=tMehS77LXQ4 Pagestream Introduction], [http://www.youtube.com/watch?v=284-w3hTzII Pagestream Tutorial 1], [http://www.youtube.com/watch?v=mlwEGwhZzl4 Pagestream Tutorial 2], ::[http://www.youtube.com/watch?v=iIcrIjPOctc Catweasel Mk4 PCI Part 1] and [http://www.youtube.com/watch?v=BaitHeL6bEA Part 2], :08. '''Misc and History''' ::[http://www.youtube.com/watch?v=d6mDXKU29w0 Mum uses old AmigaOS Workbench 1.1 (1986)], [http://www.youtube.com/watch?v=DaRkacQ-YMg Why an Amiga 500 (1987)], [http://www.youtube.com/watch?v=k5CYsgVCzYY an Amiga 2000 (1987)], :09. '''Misc Shows and Events''' ::[http://www.youtube.com/watch?v=klgVSWKs4kE VCF 2010], [https://www.youtube.com/watch?v=eQ3d5qR-Hv8 24:06 Jason McMullan at amiwest 2012 about AROS], [https://www.youtube.com/watch?v=jpQO7XSfAv4 Aros SMP multi core amiwest 2013], [], [https://www.youtube.com/watch?v=gFRtAAmiFbE], [https://www.youtube.com/watch?v=DjdUEyjx8GM], [https://www.youtube.com/watch?v=ydYDqZQpim8], [], [https://www.youtube.com/@uminekoshouten/featured], [https://www.youtube.com/shorts/NfoY023w-vE], :10. ::[https://www.youtube.com/shorts/6qJTNW4-6GY] ===History=== The project was originally started by a small group of Amiga [http://www.amigahistory.co.uk/aros.html enthusiasts] in 1995. These individuals were mainly computer-based college university students at the start, though that student trend has diminished since. An interview with Aaron Digulla [http://arosshow.blogspot.com/2006/12/interview-with-aaron-digulla-who.html here] * 1992 Commodore folds * 1996-1998 much of the early years was concerned with exec, dos and intuition libraries. * Early 1999, Haage & Partner used parts of the AROS code in AmigaOS 3.9. * March 2001, floppy disk images of AROS became available. * Early 2002, AROS changed its name from Amiga Replacement Operating System to Amiga Research Operating System * June 2002, AROS devs decided to use Zune (MUI 3.8 rewrite) as the GUI system. * November 2002, Eric Schwartz drew Kitty for AROS usage. * Early 2003, AROS.org underwent a graphics facelift. * Late 2003, GCC C compiler arrived. * Early 2004, Aros-Exec opened. * Early 2005, Aros Max bootable CD arrived. * Late 2005, SFS filesystem ported and allowed fast access to apps and network support arrived * Early 2007, AROS.org underwent another graphics facelift. * Mid-2007, AROS changed to AROS Research Operating System after A.Inc. sued Hyperion with a trademark violation. * Late 2007, the hard disk installer added and VmwAROS (later called Icaros Desktop) distro launched. * Early 2009, Our first usable web browser (OWB) * September 2010, first wireless support appears and AspireOS started as a distro * Early 2012, the first paper-cut bugfix and Fab's Odyssey Web Browser ported * Early 2014, backport of most features of ABIv1 into mainstream everyday use (Icaros 2.0 and above) * 2015 work started on using the extra cores of the PI 2 * Early 2017, work started on utilising the addition cores on modern CPUs starting with the 64bit x86 version * Mid-2017, m68k port optimized for the Vampire 2 / Apollo accelerators (68080 AMMX FPGA) * 2018 The old AROS Exec website closed and a new one opened * 2019 AROS One distribution started and now with USB install version * Early 2021, backport of more features of ABIv1 into mainstream everyday ABIv0 (Aros One 1.5 and above) * 2025 year of 64bit pc builds and porting 32bit applications to 64bit ABIv11 * 2026 update to 2015 and earlier [https://www.youtube.com/watch?v=6FKTL068ULM&pp=ygUPYXJvcyBhbWlnYSAyMDI2 nvidia nouveau driver] ===Bounties=== To help inspire developers with both ideas and monetary incentives, rewards are offered for the successful completion of "bounties" (requests for missing/new functionality) chosen by the community and handled by [http://power2people.org power2people] (formerly done by TeamAROS). A monthly option is [http://www.power2people.org/funds/aros/ here]. Future goals for AROS include expanding its underlying retargetability to support even more diverse architectures, provide memory protection features and user level file security, SMP and many other wonderful features missing from AmigaOS &mdash; while still providing as much source level compatibility as is possible (however it is accepted that to achieve some goals code certain things may require a little recoding). [http://www.ohloh.net/p/aros/contributors Developers] come and go as with any open source effort and we would like to thank them for their efforts... ;1996-2000:In DigullaA (coordinator), GripJ, TempletonI (BSD), SchulzM, RittauS, voordenDagL, HolmM, JohanssonT, VanIngelgomH, SteigerwaldM, BortasP, deJongK, AlfredssonJ, InnocentiB, ;2001-2005:In [http://chodorowski.com/adam/aros.html ChodorowskiA], StegerG, BergerS, HeutlingS, AlemagnaF (gcc), VerhaegenS (rexx), KielH, MatheussenKS (CAMD), SzczygielskiP, ErikssonP, LeCorfecD (Zune), BauerS (Zune), FurlongW, GustafssonJ, AndrewsN, CafferkeyN, GierichM (jpeg), PattonJ, ParsonsM, DietrichJ, SeilerT, BischoffL, LorentzenNH, AdamO, BerglundH, SmithP, HolmenD, BlomM, ;2006-2010:In FedinP, RusslerM, SzymczykS (owb), SmiechowiczK (openGL), WeissM, NorrisR, BrunnerO, WiszkowskiT, GreppinA, [http://www.fukt.bsnet.se/~bearsoft/ Bearsoft Björn Screwelius], ErbY, CharletF, HodgesC, [http://aros-exec.org/modules/newbb/viewtopic.php?topic_id=4819&forum=18&post_id=43103#forumpost43103 HokstadV], McMullanJ (m68k), WilenT (m68k), ;2011- :In MuijzenbergPHvanden, ALB42, JonesEM, weiju, DizzyofCRN, wawa, miker, * 1996 - The linux hosted version for i386 was the first to arrive * 1998 - i386, The native version for i386-based PC AT computers and compatibles. * 2004 - x86/64, The native version for 64-bit (x86_64, amd64) PC computers. * 2008 - sam440/ppc, The native version for Sam440EP, Sam440EP Flex and Sam460ex computers. * 2009 - efika, The native version for PowerPC Efika computers. * 2010 - m68k, The native version for m68k Amigas or WinUAE * 2013 - raspi/armfh, early native version for ARMv6 based Raspberry Pi computers. * 2017 - x86/64bit smp Debugging capture serial debug at all (especially with sysdebug=all or --sysdebug=all) to see it displayed on screen * yes, usb -> rs232 adapters can work most of the time, some of the cheapest ones are not fully compatible with all rs232 devices to capture to another device * you will need a null modem cable (or a null modem adapter usually female to female) in addition to the usb -> rs232 adapter (usb adapter is a normal modem ie. the pins are not crossed over) Normal modem cable - straight connection DCE <pre> Pin 2 -> Pin 2 RXD Pin 3 -> Pin 3 TXD Pin 5 -> Pin 5 GND </pre> Null modem cable connections DTE <pre> Pin 2 -> Pin 3 Pin 3 -> Pin 2 Pin 5 -> Pin 5 </pre> (9pole SUB-D) <pre> serial ser: (amiga/aros) tty2 tty1USB0 (linux) COM1 (windows) (depends on the os being used) speed baud transfer rate 9600 38400 lower baud might be more successful data bits 8 stop bits 1 parity none handshaking flow control - none xon/xoff (most likely) rts/cts dsr/dtr (pins not connected so should not work) </pre> *You cannot use compiled aros X86-64 bit software (when ready) on aros X86 32bit. PPC compiled software on X86 and so on. *68k is tested with the UAE emulator (WinUAE) but some tests are done on native 68000 based Amigas and others. *PPC support is very limited to certain devices. If you use the WBStartup, you have to delete the other icons in the folder (readme etc..) and you have to add in the Icon Tooltype the parameter DONOTWAIT If you use user-startup instead, you need to add the attached command "after assignment to LUA" C:WBRun DH1:Extras/Utility/WeatherBar/WeatherBar >NIL: Change the command to match your WeatherBar path. <pre> PATH sys:Utilities/WeatherBar ADD run >nil: lua:amilua weatherforecast.lua </pre> To enter data your Country or City, ist with city_id numbers can be found [http://bulk.openweathermap.org/sample/city.list.json.gz here] or you need to go to [https://www.bbc.com/weather BBC Weather], once you type the name of your city or town in the appropriate tab, and press enter, the 7 numbers to be added in the "WeatherBar" will appear on the Browser url address bar above Unicode v16.0 emojis are not supported but [https://github.com/jens-maus/libcodesets codesets.library] provides <pre> internally supported (hardcoded) charsets/codesets are: (conversions are possible from and to each codeset): AmigaPL – Polish (Amiga) Amiga-1251 – Cyrillic (Amiga) ISO-8859-1 – Western European ISO-8859-1+Euro – West European (with EURO) ISO-8859-2 – Central/East European ISO-8859-3 – South European ISO-8859-4 – North European ISO-8859-5 – Slavic languages ISO-8859-9 – Turkish ISO-8859-15 – West European II ISO-8859-16 – South-Eastern European KOI8-R – Russian UTF-8 – Unicode In addition, external charset table files can be stored in LIBS:Charsets or loaded by an application from PROGDIR:Charsets. The charset files included with this distributions are: IBM866 – Cyrillic (cp866) ISO-8859-7 – Greek (LatinGreek) ISO-8859-10 – Nordic (Latin 6) windows-1250 – Central/East Europe (Windows) windows-1251 – Cyrillic (Windows) windows-1252 – West European (Windows) </pre> Icaros 2.3 USB image needs a header stripped so it can work correctly dd bs=512 skip=1 status=progress if=icaros_light_2-3-0_pendrive.bin of=/dev/sdxy && sync Scalos <pre> ------------------------------- { "STRING", "ID/K,TEXT/K,SRC/K,TEXTPEN/K,HALIGN/K,STYLE/K,FONT/K,VALIGN/K", HALIGN LEFT | CENTER | RIGHT VALIGN TOP | CENTER | BOTTOM STYLE NORMAL | BOLD | ITALIC | BOLDITALIC FONT // font specification - format: "fontname.font/size" ------------------------------- arguments for STRING SRC "diskstate", "diskusage", "diskusagefree", "diskusageinuse", "diskusagepercent", "fibfilename", "filecomment", "filedate", "fileprotection", "filesize", "filetime", "filetypestring", "iconname", "linktarget", "plugin" pluginname <optional plugin arguments> "versionstring", "volumecreateddate", "volumecreatedtime", "volumeordevicename", ------------------------------- arguments for HIDE "novolumenode", "isempty" (some STRING) ------------------------------- all internal commands: "about", "backdrop", "cleanup", "cleanupbyname", "cleanupbydate", "cleanupbysize", "cleanupbytype", "clearselection", "clone", "close", "copy", "cut", "delete", "emptytrashcan", "executecommand", "formatdisk", "iconify", "iconinfo", "lastmsg", "leaveout", "makedir", "open", "parent", "paste", "putaway", "quit", "redraw", "redrawall", "rename", "reset", "selectall", "showallfiles", "showonlyicons", "shutdown", "sizetofit", "snapshot", "snapshotall", "snapshotwindow", "unsnapshot", "update", "updateall", "viewbydate", "viewbyicon", "viewbysize", "viewbytype", "viewbytext", </pre> {{status|50%}} {{BookCat}} bp9h13b9x9jqac83tuvsd0ffijtfyjj 4656741 4656740 2026-08-08T09:17:04Z Jeff1138 301139 4656741 wikitext text/x-wiki {{ArosNav}} ==What is AROS== Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=nl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Dutch], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=da&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Danish], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Chinese], [http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Russian], [http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Polish], [http://translate.google.com/translate?hl=en&sl=auto&tl=ja&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Japanese], [http://translate.google.com/translate?hl=en&sl=auto&tl=ko&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Korean], [http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FUser%2FDocs Portuguese], *Computer Hardware *AROS (operating system) *Applications and Games *User [http://www.osnews.com/story/15819 AROS] is one of the intermediate levels between the computer hardware and the user. It is an open-source, clean-room implementation of AmigaOS 3.x that can be run on many different computer architectures. It runs primarily on PC x86 64bit and also PC 32bit hardware but also on motorola 68k and compatibles, some ARM and PowerPC. This page will cover enough to be able to write the downloaded image to your preferred media, to run a LiveUSB, LiveCD or LiveDVD on your office/home PC (Live meaning you can test without changing your existing setup) and, ultimately, to use it. Intel / AMD PC hardware support mostly covers the years 2000 to 2010 but work is under way to cover recent PC hardware. At the moment, AROS is '''not''' recommended to be '''installed''' on a working vital data holding machine. Instead, writing to and booting from a '''USB stick''' could be a much better option. AROS is an hobby OS and can co-exist with Windows(TM), MacOSX(TM), Android(TM) or Linux(TM) and act as an alternative. Unfortunately, Aros has few developers so upgrades and improvements can take [https://sourceforge.net/p/aros/mailman/aros-cvs/ time to appear]. AROS core is now [http://en.wikibooks.org/wiki/Aros/Developer/IncompleteAPIs ~80%] finished and is usable, so keep in mind that the software is still considered ALPHA/BETA and in development. Currently AROS is fun to play with on a curiosity level, but it is also interesting to program. AROS has some multimedia features and has internet access. Most importantly, use AROS to its maximum potential as it stands now, find ways to have fun with it and share your experiences. Good Sites to visit : [https://www.arosworld.org/home.php Aros World User forum] : [https://ae.arosworld.org/ Aros Exec site relocated] : [https://arosnews.github.io/ AROS News] : [https://www.facebook.com/ArosWorkshop/ Aros Workshop], : [https://www.osnews.com/topic/amiga-aros/ OSNews] : [https://www.reddit.com/r/aros/ Reddit] : [https://archives.arosworld.org Aros Archives] : [https://aminet.net/ Aminet] : [http://www.amiga-news.de/en/ English translation of German site] : [https://aros.sourceforge.io AROS] : [https://github.com/aros-development-team/AROS Codebase] : [https://github.com/aros-development-team/AROS/issues Issues] and [https://sourceforge.net/p/aros/bugs/ old defunct bugs site] : [https://github.com/deadwood2 Deadwood's builds], [https://www.axrt.org/download/aros/v11/ v11 builds], [https://axrt.org/downloads-aros Updated i386 32bit PC builds], : [https://github.com/ezrec Ezrec x86 m68k mirror of old svn version] : [https://sites.google.com/view/arosone Aros One x86, x64] : [https://tinyarosdistro.flazio.com/ Tiny Aros x86 and x64] : [https://arosnews.github.io/aros-portable/ AROS portable USB3 stick images of hosted Aros One x86 and x64 on debian] : [http://vmwaros.blogspot.com Icaros Desktop x86 now on sabbatical, very old edition] : [https://sites.google.com/site/arosaspireone AspireOS, of the netbook Aspire One, very old edition] : [http://arosalive.blogspot.co.uk/p/10-basic-aros-how-tos-tutorials.html Basic How To guides] : [http://arosgamer.blogspot.co.uk/ AROS Playground], [http://thewetmachine.net/tag/aros/ Jess Wet Machine], [https://aroshacking.wordpress.com/ Jon Robertson's AROS Experiences and FPC Free Pascal], [], :[http://www.apollo-accelerators.com/ Apollo Accelerators m68k], [http://www.amigablogs.net/ Amiga Blogs], [http://blog.a-eon.biz/blog/ Trevor Dickinson blog], : [https://forum.amiga.org/ Amiga OS AOS 3.x forum] : [http://eab.abime.net/ EAB Amiga] : [http://www.amigaworld.net/ AmigaWorld] : [http://www.ppa.pl/ Polish Amiga Like News] : [http://www.apollo-core.com/ Apollo Forum] : [https://amigaalive.blogspot.com/ AmigaAlive] : [https://www.amigalove.com/software Disk Mags] : [https://amigachristmastree.ultimateamiga.com/ Xmas Amiga Game Jam] : [https://www.reddit.com/r/amiga/ Amiga] == Distributions aka Distros == For end users there are distributions (ready made with selected apps aiming to be easy to use), mostly created and maintained by one person in their own workflow/style. They reuse the nightly boot compiles to suit their needs and possibly other end users. You are free to create your own if required. * For native 64bit Intel/AMD: [https://sites.google.com/view/arosone Aros One x64], [https://tinyarosdistro.flazio.com/ Tiny Aros], * For native 32bit Intel/AMD which will run on 64bit machines: [https://sites.google.com/view/arosone Aros One x86], [https://www.tinyaros.it/ Tiny Aros], * For native 68k [https://sites.google.com/view/arosone Aros One m68k], [http://www.aros-platform.de/ AROS Vision], '''Please, keep in mind that the distros listed above use a different ABI (abi v11) , which is NOT binary compatible with the official ABI V1.''' * For hosted Linux usb drive image [https://arosnews.github.io/aros-portable/ x64 Debian hosted version of Aros One], * For hosted ARM there is Aeros and [https://aros.sourceforge.io/nightly1.html RaspberryPi 3 raspi-aarch64-system native 64bit] AROS was originally developed on Linux but can run on an Intel-based Linux distro as an app. As time has gone on, it can be run as an app on many more operating systems (Windows, FreeBSD, Linux and limited on MacOS). This may sound strange: an OS running on top of another OS. Basically, this is to take advantage of drivers (audio, internet, graphics, etc.) and compiler environments, in the existing OS, with which people may be already familiar. The term we use for what AROS does is "Hosted". AROS Native is the term coined to describe AROS being run without any OS underneath it. It runs alone just like AmigaOS(TM) did. As this version does not benefit from "Hosted" drivers, dedicated ones have to be ported/written. Hence the smaller range of supported hardware / peripherals. We have other pages highlighting this support AROS is open source so basically everyone can take part. The source is public on github and there are new commits most days. AROS is automatically compiled daily, result are the nightly builds hosted on Sourceforge. The nightly builds are only used for testing changes, testing software and the starting point for distribution maintainers or even your own distribution. They are very basic, miss some functionality and apps like web browsers and are not suited for end users. * The [https://sourceforge.net/projects/aros/files/nightly2/ Nightly2], [http://aros.sourceforge.net/download.php nightly builds File Release Service] or [http://aros.sourceforge.net/downloads/ Sourceforge Project Web builds] are made automatically every night directly from the Github and in the past, SVN (Subversion) tree and contain the latest code for the AROS operating system. It should be noted that the builds have not been tested in any way and can be horrible broken. *ABIv11 offspring / adaptation of ABIv1 for PC 64bit *ABIv1 standard for most nightly builds, it is where the most work is done by developers *ABIv0 standard for PC 32bit intel / amd distributions ==Media== AROS media tends to boot in this tier list of media types, first internal HDD SSD, CD DVD drive, and finally usb drive (last two can depend on bios boot order) * USB .VHD [https://sites.google.com/view/arosone Aros One x86 and x64], with md5 below <pre> 0a656d53a9c902e9934000d8392e30ec *ArosOne-USB-1.3-64Bit.zip 7dd7119ab3e56d75ee852c137226b4d7 *ArosOne-USB-v1.2-x86_64-v11.zip cf906eeaad4a83b3520b1896bdc6b0d3 *ArosOne-USB-v1.1-x86_64-v11.zip e2eb8fe8cfd61c567b0152a61cf85251 *ArosOne-x86-v2.8-USB-IMG.zip 559909c75c2f56472c74267a7d075355 *ArosOne-x86-v2.7-USB-IMG.zip 93da5898508c1a8c05bb8991ab7bd117 *AROS One Image-USB-2.4.zip 59fcabd7090e47f12d54f7eb78cf0f45 *ArosOne-x86-v2.2-USB-Image.zip 24fb8de726ae8fc5fe5bac6d30f03dc5 ArosOne-x86-v2.0-USB-Image.zip f3d725e990072edce633b59747911b6b ArosOne-x86-v1.8-USB-IMG.zip e089a24ae310e92fcc407a0125602ce8 Aros-One x86-IMG-USB-v1.6.zip </pre> [https://tinyaros.flazio.com/ Tiny AROS] 22bc993625b7c75b17263c0cc7e7baaa *Tiny Aros_copy.vhd (March 2024) There is usually a vhd image inside the zip that can be written to USB sticks which is so much faster than the old ISO written to physical CD DVD method. This .vhd can be written to an USB stick / ssd with these pieces of software below but it will erase the previous contents from the usb Windows - [https://www.raspberrypi.com/software/ RPi Raspberry Imager, use custom and see all files], [https://hddguru.com/software/HDD-Raw-Copy-Tool/ HDD-Raw-Copy-Tool], [https://rufus.ie/ Rufus up to version 3.20 may work with VirtualBox HD vhd images with Win7 but not some Rufus 4.x versions], [https://etcher.balena.io/ Balena Etcher but may spy on you], Linux - [https://www.raspberrypi.com/software/ Raspberry Imager Ubuntu], Suse Image / Multi writer, dd, Mac - Most of the time when we get reports of "crashes right after grub" from usb boots it's due to wrongly recorded pendrive. Not aware if using 'dd' is a valid approach. AROS One author suggests using either rufus or etcher software for his VHD image. * Virtual Machine .ISO or CDs DVDs The native iso images are currently not compatible with Ventoy, Yumi, MultiBootUSB, Easy2Boot E2B, or similar <pre> 617a905b1665128c5e05f94dcc48e7f1 *AROS-One-v1.3-64Bit-v11.zip 11c8a147fcad7ecf52ae3a43e1934b69 *ArosOne-DVD-v1.2-x86_64-v11.zip f93053d3b9ccf304d7e6ac3389e1987b *ArosOne-DVD-v1.1-x86_64-v11.zip 86d808a40dc7be389a758799a9b4f595 *ArosOne-x86-v2.0-ISO-DVD.zip f1fc8599ef6a39e5df394e0f41d55526 *AROS-One-x86-ISO-DVD-v1.6.zip </pre> You can use a virtual emulator like VirtualBox, VMWare to mount the iso image which can then be used to boot and/or install to USB. no software can write an AROS ISO to a Pendrive. The author of ‘Rufus’ (who used an Amiga 500 as a child) once tried, but when he saw the system composition, he said he was unable to do it. The solution is to boot the ISO from a VM (WMware, VBox), then install the AROS build on the Pendrive, which will eventually become a Live Pendrive that can be booted on a PC. The only precaution is that in some cases it is necessary to thoroughly clean the Pendrive of any partitions and remove any bootloader that is not AROS. The Pendrive must remain raw without any partitions. You can clean the USB stick on a PC with a program that manages hard disks. You need to do a partition wipe. On some USB sticks, you can clean it with InstallAROS. Previously the only installation option was CD-RW or DVD-RW, since the whole system can be burnt onto a single disk and can be reused when the next version is released. Good branded discs like Taiyo Yuden (later JVC) or Verbatim should be used to reduce frustration later. The days for this media is gone but kept here for information Since nobody currently sells AROS on any other media, you will need access to a CD/DVD burner to create the installation disk yourself. After it is on a CD or DVD, then access and writing to USB pendrives becomes available (this should be viewed as an outdated or last resort alternative method now), as well as using good USB manufacturers like Sandisk, Kingston, etc. rather than some other no-names. Try burning it to a CD-RW or DVD-RW using your CD/DVD burning program (most burning software have a burn iso option). The ideal writing speed is 2x or 4x, higher speeds can give errors and problems. Check the writing integrity of your CD or DVD if your software has an option to do so before going any further. Standalone portable usb cd dvd drives do not boot physical burnt discs, please use an internal ide sata drive instead. * SD-card For ARM Pi Aros, copy the files onto a FAT32 formatted SD card. ==Booting== The LiveUSB, and in the past LiveCD LiveDVD, is designed to trial (test drive) various operating systems without having to install them to your working system. Since 2011, UEFI was introduced to replace the original PC BIOS which made booting media more confusing. Some changes in the UEFI/bios may be needed *go into the bios using esc, f2 or f? and disable the Security -> Secure Boot and maybe apply option for Legacy IDE mode *you may have to press F9, F10 or F12 or p on boot up to present a device boot options like USB or CD/DVD *disable the Fast Boot config so it would recognize portable DVD-drive and changed the Boot-sequence Secure boot was introduced by Microsoft and later consortium control what operating systems work with Secure Boot via shims. For Aros, it is best to disable or be able to change Secure Boot (if you dual boot with Windows this may cause issues with Window boots after) The grub part of the boot should be fully automatic, and you should see a multiple choice graphic card screen after 10 seconds for USB or over 30s CDs and DVDs. After the grub graphics choice, AROS takes over the booting and any issues can arise here =====Advice for various machines===== Some of the stages involved and shown on the display in a typical AROS boot start up <pre> [MultiLoader] [ELF Loader] [Boot] [HPET] [Kernel:ACPI] [Kernel:APIC-IA32] [Kernel:SMP APIC] [HiddStorage] ACPI: ???? ACPI Error [ACPI]AcpiOs???? [BattClock] Got RTC century offset 0x32 from ACPI [PCI] Scanning bus ? [AHCI] Sata [Vesa] only if vesa is chosen as graphics option [ATA] detect hd & cd drives [ATA0?] ata-identity [packet] fat.handler be.handler, etc. [DOS] [Storage:Bus] [Storage:Controller] [MSS] USB setup [ehciInit] Port ? maps to controller ? [I2C] [ATI] [drm] nouveau [AROSTCP] if you have network driver prefs set up to start when booting </pre> ; If boot fails, please give us some indication (pictures or videos) where the boot stops and the message(s) on screen. AROS's native SATA/AHCI driver doesn't always work. If you get errors related to ahci.device, try disabling it. At your chosen boot entry in the GRUB menu, Press E, scroll down to the ahci.device entry, and add a # or ; at the start of that line or delete it with Ctrl-K. Then press Ctrl-X or F10 to boot. If your disk isn't accessible at all with this change, you might need to change the SATA controller to IDE legacy mode in the BIOS: however, making this change will likely cause problems booting Windows on the same machine (if it's already installed). To disable ahci.device permanently, edit the text file "SYS:Arch/pc/grub/grub.cfg", and remove the ahci.device line from all boot entries you intend to use. SATA AHCI Timeout while waiting for device to complete operations with BIOS SATA entry set to AHCI mode stops at "waiting for bootable media" screen, changing BIOS SATA setting back to IDE mode may allow it to continue booting The ATA driver doesn't always work. If you get errors related to ata.device, try using the alternative in sys:devs/alt which is an older version. Press E when your chosen boot entry is highlighted in the GRUB menu, scroll down to the ata.device entry, and change it to read "module /Devs/Alt/ata.device". Then press Ctrl-X to boot. To make this change permanent, edit the text file "SYS:Arch/pc/grub/grub.cfg", and change the path to ata.device in all boot entries you intend to use. Further options (removing the " ") to add to the GRUB menus to disable certain other components for debugging: <pre> Disable AHCI "AHCI=disable" Disable NVME "NVME=disable" Disable ATA: "ATA=disable" Disable ATA: "ATA=nopci,nolegacy" ATA safe mode: "ATA=nodma,32bit" Disable IDE from SATA: "ATA=32bit,nosata2pata" VIA / SIS with cdrom read io errors "ATA=nodma,nopoll" noacpi all [PCI] devices to be invisible to AROS. disk drives work but network, sound won't acpi=strict if there are issues with sound after boot noioapic alternative to no acpi Set AHCI "AHCI=force150/force300/force600" Disable AHCI/SATA: comment out with a # ; or remove ahci.device line with Ctrl-K Disable USB: comment out # ; or remove pciusb.device and poseidon.library lines with Ctrl-K Disable native graphics: "nomonitors" USB3 "USB=xhci" </pre> Other useful grub command line options - nomonitors, noacpi, vesahack, nopoll Press Ctrl and X together (or F10) to exit and boot with the new options. Just experiment with different variations until successful. Those working options will need to be reused with every reboot of AROS until you can edit the grub.cfg and make it permanent i.e. install to hard disk or USB. * If you use VESA mode, you can see the debug log if you add 'vesahack' to the command line. This will set up split-screen mode. In the upper half you'll see AROS screen, in the bottom - debug log. * ACPI ie. PCI hardware - If you get crashes at early boot, try adding 'NOACPI' to the command line If you're having boot issues and have a null modem cable and a spare pc, a boot log is always useful. Edit your grub line to include debug=serial but would try with an with sysdebug=all in the line later as it can cause issues booting on machines with sysdebug=all enabled (corrupts the cpu initialization). However, if you feel you have found a genuine bug/fault in AROS that needs attention, please use the [http://sourceforge.net/tracker/?atid=439463&group_id=43586&func=browse bug submission form] to record as much information about what happened, why, and what hardware etc. you have so that people may try to assist you For Virtual machines VMWare VirtualBox, etc., attach and press play to start the ISO image If booting hasn't worked then it could be down to Bios/UEFI settings or USB3 (2014 onwards) =====nvme.device===== Since 2018, nvme drives are standard on most machines Now as far as hardware goes on a newer machine with an NVME drive you may need to add NVME=disable as the NVME driver could potentially cause lockups. =====AHCI===== Starting taking over since 2011 on a lot of machines * Check that UEFI (replacement for PC BIOS) has options set to remove UEFI SecureBoot option and apply CSM * SATA drive is set for Legacy or a mixture AHCI/IDE and not AHCI AHCI sata can be very difficult to get working Most Windows installs are already set to AHCI sata, changing this to a legacy IDE mode setting can help but please check if Windows will still boot. Some hardware like Lenovo laptops do not always like being set in legacy mode so only use as a last resort and aware of issues that can be caused. Now as far as hardware goes on a newer machine with an NVME drive you may need to add NVME=disable as the NVME driver could potentially cause lockups. With a 16C/32T chip machine, disable SMT and it should boot. =====ata.device for old BIOS's ===== Pre 2010 this was the de facto standard method of providing settings to the computer at a lower level Some adjustments to the BIOS setup options are necessary (usually by pressing a key like DEL, F1, F2, F12 or ESC, p on the very early boot up of the computer). *Adjust booting options like moving USB hdd, CDROM higher as it is quite often disabled or placed lower by default, i.e. USB hdd, CD/DVD are placed at the top above the hard drive. Try looking here [http://www.windowsreinstall.com/articles/bios/ Windows] or [http://www.hiren.info/pages/bios-boot-cdrom Bios] or [http://www.wikihow.com/Set-Bios-to-Boot-from-a-CD-ROM Boot] or web search "BIOS BOOT CDROM" * At the '''SAME''' time, check if the SATA/AHCI option is set to Emulate or IDE Legacy, though this can have '''issues''' with any OS already on the hard disk. If in doubt, do nothing and seek advice. * check that under BIOS settings you '''DO NOT''' have plug&play OS selected as Aros at this point is unable to route interrupts on its own and needs the BIOS to do that. '''Save''' options changed at the end. PCITool can show if the motherboard chipset is in IDE mode. Class = 0x01 means STORAGE, Subclass = 0x01 means IDE. Also ProductID 0x3a20 resolves to non-AHCI mode in Intel ICH10 documentation. ==Installing== We have a separate section [https://en.wikibooks.org/wiki/Aros/Platforms/x86_installing here] We have a specific section for each CPU platform under the Specific platforms in the NavBar navigation bar on the right hand side menu error code (-6) when using the ahci.device (has writing to disk problem but not reading) is enabled. change this line in your grub and reboot <pre> #module /Devs/ahci.device << disable module /Devs/Alt/ata.device << add this line instead </pre> ==File structure overview== AROS' directory structure is mostly identical to AmigaOS directory structure, with some additions. AROS: or SYS: also known as DH0: (i.e. the drive partition with AROS system) has the following simplified list of the main drawers (Amigas term for directories/folders). {| class="wikitable" |boot: | grub bootloader |---- |C: | small apps, where AROS looks first for applications/games but will look at Tools, System afterwards |---- |Devs: | .audio, .hidd, network, graphics and other hardware device drivers are stored |---- |L: | where .handler files go |---- |Libs: | where .library files go |---- |Prefs: | applications that adjust or setup AROS functions and capabilities |---- |S: | startup scripts (for the aros boot process '''not''' grub) are stored here |---- |Storage: | place to keep old or alternative device drivers |---- |System: | applications associated with AROS operating system |---- |Tools: | extra applications |---- |Utilities: | extra applications |---- |WBStartup: | copy applications here to autostart with needed icons, drawers, data etc |---- |} See [[Aros/User/DOS#Drives.2C_Files.2C_Assigns.2C_Directories|DOS manual: Drives, Files, Assigns, Directories]] === Filesystem === Whilst the kernel is the heart, the filesystem is the blood of the system they are split into two categories (only a few are supported) <pre> Journalling - ZFS XFS ext4 NTFS SFS PFS3 Non-journaling - BtrFS ext2 exFAT FAT32(VFAT) FFS </pre> Filesystem options for AROS to install * SFS default * Professional File System PFS3 [http://eab.abime.net/showthread.php?t=52234&highlight=pfs3+free&page=13 only on motorola 68k at the moment] * FFS very old now but left in for legacy usage Other [https://archives.arosworld.org/index.php?function=browse&cat=driver/filesystem filesystems] for storage purposes * FAT32 favorite as most OSs support * NTFS (can lock AROS) * exFAT The only filesystems that really NEED defragging (i.e. disk tidy up) are from Microsoft(TM) - exFAT/VFAT/NTFS *SFS tries to do exactly the same thing, but in certain cases it doesn't do as well as PFS. But you can defrag SFS *PFS *minimises* the amount of fragmentation, but does not automatically defrags as it saves files to the drive The setup of the below filesystems is usually done by the distro maintainer but if not.... <pre> Copy L/exfat-handler L: DOSDriver or Mountlist entry for an exFAT partition make sure that the FileSystem and Handler are set as follows: FileSystem = exfat-handler DosType = 0x46415458 </pre> <pre> Copy L/ntfs3g-handler L: DOSDriver or Mountlist entry for an NTFS partition make sure that the FileSystem and Handler are set as follows: FileSystem = ntfs3g-handler DosType = 0x4e544653 Also to make a read-only mount you can set: Control = ro </pre> The Smart File System (SFS) is a journaling filesystem used on Amiga computers and AmigaOS-derived operating systems. It is designed for performance, scalability and integrity, offering improvements over standard Amiga filesystems as well as some special or unique features. SFS is written in C and was originally created and released as freeware in 1998 by John Hendrikx. After the original author left the Amiga scene in 2000, the source code to SFS was released and its development continued by Ralph Schmidt in MorphOS. Its development has now forked; as well as the original Amiga version, there are now versions for MorphOS, AROS, AmigaOS 3, and a version for AmigaOS 4, which have different feature sets but remain compatible to each other. Versions for AROS, AmigaOS and MorphOS are based on different branches. In addition, there is a driver for Linux to read Amiga SFS volumes, GRUB natively supports it and there are free drivers to use it from UEFI. The Linux version is [http://home.elka.pw.edu.pl/~mszyprow/programy/asfs/ independent code]. SFS (Smart File System) partially defragments itself while the filesystem is in use. The defragmentation process is almost completely stateless AROS SFS version has a 120GB partition size limit on hard disks and DVDs current 4gig size limit. The sources for the MorphOS 64-bit version of SFS were available but no porting to AROS has happened so far due to endian issues, etc. SFS Tools * GUI - arSFSDoctor, * CLI - sfscheck , [http://www.portacall.org/ sfsundelete], sfsformat, setcache hits a usability ceiling around the 10GB / 100,000 file mark, sfscheck dh0: seek purge fraglist defragment If there are two simultaneous file writes in progress and you reboot machine (or it locks up or crashes) you may end up with a corrupted filesystem. Although arSFSDoctor may help, you might have to copy the files to another partition, format the partition with the errors on and copy the files back. A bit error on the harddisk would give this error. PFS / SFS are way more advanced and much much faster than the FFS. FFS is supported for legacy reasons only. The Professional File System (PFS) is a filesystem originally developed commercially for the Amiga and now distributed on Aminet with a 4-clause BSD license. It is a compatible successor of AmiFileSafe (AFS), with an emphasis on added reliability and speed compared to standard Amiga filesystems. It also features multi-user abilities like the older MuFS. PFS has so many advantages including the important things, speed, the ability to recover all deleted files even simply same name by typing the command ". Deldir" convenient if done in Directory Opus, virtually deleted files are copied normally as if they had never been deleted, other convenience is to not ever invalidate the filesystem, just put it on top of the startup-sequence command "diskvalid", which automatically corrects any irregularities in the system startup; PFS also provides a device for floppy which makes them very fast and takes advantage of the full capacity of the floppy including the area dedicated to the bootloader. The device is split into two main areas. At the beginning of the device is the metadata section, which consists of a root block, and a generic array of blocks that can be allocated to store metadata. The rest of the device is another contiguous generic array of blocks that can be allocated to store data. The metadata section usually uses a few percent of the device, depending on the size of the device. The metadata is stored as a tree of single blocks in the metadata section. The entire directory structure is recorded in the metadata, so the data section purely contains data from files. The metadata describes the location of data in files with extents of blocks, which makes the metadata quite compact. When a metadata update occurs, the system looks at the block containing the metadata to be changed, and copies it to a newly allocated block from the metadata section, with the change made, then it recursively changes the metadata in the block that points to that block in the same way. This way, eventually the root block needs to be changed, which causes the atomic metadata update. The filesystem is reasonably good at keeping files unfragmented, although there is a defragmentation tool available which will work on an online filesystem ie whilst being used. It was the first filesystem to introduce the concept of the Recycle Bin natively at filesystem-level to the Amiga, holding the last few deleted files in a hidden directory on the disk root. PFS version 5.3 was developed in C and a small portion of assembly code by Michiel Pelt. There are endian issues to be overcome and adapting the small amount of m68k to C before use on intel based machines, etc. Autoupdate of files in a directory is already implemented in Wanderer, but not all file systems handle dos.library/StartNotify() in its full extent. It seems to work correctly in Ram Disk (thanks to AmberRAM handler), and it also works on SFS formatted devices. Other file systems might not yet have it implemented correctly though. The PC equivalent of the Amiga's RDB is the master boot record (MBR). ===Installing Applications=== The typical means to install applications under AROS/AmigaOS involves simply copying/extracting the archive (.zip .lha .rar .tar.gz) file containing the applications files to your own desired location i.e. drawer/folder. Once extracted, launching it by double clicking on an icon (recommended) or using the shell (alternative). Generally, this is on a separate partition from your AROS system files, however in reality it can be any location - including RAM: if you don't want it staying around too long especially when you switch off. At some time in the future it may be desirable for AROS to have a package-manager like subsystem able to retrieve information online about packages available for AROS and whether they update anything you currently have installed, however at the moment no such ability exists. ===User Data files=== AmigaOS has no notion of a default location to store user data files, and presently neither does AROS - though it may be desirable at some time to provide a common start location. For most people, extra small FAT32 NTFS partition(s) as well as the usual Sys: (DH0:) and Work: (DH1:) / Briefcase (DU1:) partitions to store data seems preferable. Especially if a reinstall is ever needed. ===User Environment configuration files=== AmigaOS/AROS stores persistent system configuration data in directory assigned to ENVARC:. This, by default, points to SYS:Prefs/EnvArc. During boot a copy is made to another assign, ENV:, which is for runtime usage. Changes to the files here will not survive a reboot. Setting the env variables is generally done by applications themselves, or when necessary by the user using the SetEnv command. SetEnv has a SAVE switch to force the persistent copy in ENVARC: to be written also for when you are sure the change should be permanent. Under the standard installation of AmigaOS style OSs, ENVARC: is copied to ENV: upon startup, which, if you have a hard drive installation, is in RAM:, hence, ENV: ends up being RAM:Env. ENVARC: is the Environment Archive, which is the permanent copy of ENV:, which is the Environment. It's roughly like the Registry in Windoze. Most programs do (and all should) store their settings in ENVARC: somewhere, and load them from ENV:. The effect of this can be seen in the Preference editors. If you Save your preferences, they go in ENVARC: and ENV:. If you click Use, they only go in ENV:. If you reboot, normally, anything saved to ENV: is lost, and is replaced with a copy of what is in ENVARC:. you can set the default public screen for any tool started from a cli with the PUBSCREEN variable. So open the pubscreen, set PUBSCREEN to the name and start newcli for example, then the new cli window (and all following windows opened from that window) will appear on that public screen. ===Drivers=== All hardware support is placed in the Devs drawer (folder/directory). The network drivers <something.device> go in the Networks sub-drawer. Audio drivers <something.audio> are put in the AHI sub-drawer. Graphics drivers <something.hidd> are put in the Drivers sub-drawer. ==Configuring== AROS has mainly decided on a MUI-like requester/menu/ clone so changing the background, icons, font, menus can be done with SYS:Prefs/Zune AROS has several desktop GUI front ends like * DOpus5 Magellan II, Wanderer and Scalos (medium) * AROS Workbench, Workbook (smaller) File / Directory managers like Dopus4, MCAmiga, App Launch Shortcuts like FKey, Amistart, BoingIconBar, right mouse click on magellan, wanderer desktop, etc. General usability decisions - Prefs/IControl, CLI in icon's tooltypes means 'run it as if it was run from shell' If, on the other hand, the WB parameter (or no parameter) is present in Tooltypes, Wanderer will execute the binary and, if provided, the options included in Tooltypes. WBxCLI is very useful for adding options to DOS Commands. Important: AROS has a different way of managing icons. If you have an executable file, you will never be able to add a project icon. AROS will automatically recognise that it is an executable file and will transform the icon into a tool icon. Most apps can be autostarted by copying into SYS:WBStartup directory folder e.g. WeatherBar.zip can be downloaded, unzip and the contents of the zip copied to wbstartup folder ClicktoFront and .info to SYS:WBStartup so always be activated when turning on the computer or add a text line to user-startup is SYS:S (scripts version of wbstartup) e.g. standard Amiga / AROS does not allow clicking of background windows to come to the front to make it easy to get to the window you need but it has the ability if these apps are copied again to WBStartUp or are added to SYS:S/user-startup script run QUIET sys:Tools/Commodities/ClickToFront >Nil: run QUIET sys:Tools/Commodities/DepthMenu >Nil: run QUIET sys:Tools/Commodities/Blanker seconds=300 >Nil: Exchange controls Commodities and can be opened with alt, ctrl, h Although there are heaps of docks, menus and other launcher programs on the Amiga like OSs, FKey has got to be one of the quickest and less complicated ways to launch programs, and it comes with the OS. In SYS:Tools/Commodities, the FKey commodity (Ctrl Alt F) allows you to make actions assigned to some combinations of keys <pre> ALT TAB Cycle Windows Cycle Screens Enlarge Window Shrink Window Toggle Window Size Insert Text Run Program Run Arexx Script </pre> e.g. <pre> LAmiga F1 = Avail Flush LAmiga F2 = Open Prefs LAmiga F3 = Finder Alt Tab = Cycle Windows LAmiga Tab or M = Cycle Screens Alt Up arrow = Enlarge Window Alt Down arrow = Shrink Window Alt Home = Toggle Window Size = Insert Text LAmiga e = Run Program = Run Arexx Script </pre> If your FKey GUI pops up when you start your Workbench up and you don't want it to, click once on the icon, go to the Icons-Information in the menu and make sure it has the tooltype set "CX_POPUP=NO". Now let's launch it and assign the locale switching. After you double-click on FKey icon, launch the Exchange, choose the FKey from list and click the Show button. This will invoke the FKey window. You can see the ALT TAB in list assigned to window switching. Now enter the first key combination, say, ALT Z and go to the right panel. Choose Launch the program from pulldown menu and enter SYS:Prefs/Input as an argument. Append the USE switch and english preset name to the string as shown: SYS:Prefs/Input USE SYS:Prefs/Presets/english Click on the New Button to add the another combination. Now set the combination for your locale as shown above, replacing English name with your preset name. Click New button again and then Save Settings. Now you can use defined combinations to switch the layouts. Although not needed by most users, the system wide ARexx script capability can manage many file manipulation task(s) but this would work only with those program that support [https://en.wikibooks.org/wiki/Aros/Developer/Docs/Rexx ARexx] like *Desktop - DOpus5, Scalos *Dock - FKey, *Files - Multiview, DOpus4, *Internet Apps - Odyssey, WookieChat, *General Apps - the shell can be modified with escape strings but not needed in most cases Common Keyboard Shortcuts <pre> RAlt Right Alt Key LAlt Left Alt Key RWinKey Right Windows Key LWinKey Left Windows Key RAmiga Right Amiga Key (if one) LAmiga Left Amiga Key (if one) </pre> ;Bootup Options :Spacebar during boot, enters the bootmenu which allows a boot without startup sequence, etc ;Left Click :LAmiga = LWinKey = F11 ;Right Click :RAmiga = Help = F12 ;Mark :RAmiga and B ;Cut :RAmiga and X ;Copy :RAmiga and C ;Paste :RAmiga and V ;Search :RAmiga and S ;Mouse Movement LAmiga and together with arrow keys - shift as well at the same time as well to move faster ;Mouse Selection LAmiga and LAlt to select ;Screen Switching LAmiga and M or N ;HELP key Can sometimes be mapped to F11 but can be changed via FKey ComKeyRemapper or AmigaKeyremapper could swap RAmiga to another key press ===DOpus 5 Directory Opus Magellan II=== Dopus 5.x is a whole desktop replacement on the Amiga Workbench (Desktop) DirectoryOpus app will assign DOpus5: to it's PROGDIR: automatically but if not add the below (edit SYS:System to suit where Dopus5 was installed) to your startup-sequence <pre> Assign DOpus5: SYS:System/DOpus5 DOpus5:DirectoryOpus ;DOpus5:C/LoadDB </pre> Left mouse button clicked twice on the desktop background brings up the Device List window. Green strip notifies SRCE (source) and if another is open it will be red for DEST (destination). clicking on the red strip changes to green Word list of actions with a left mouse click on the DOWN Arrow and directory stuff with < button which mirrors the icons at the top of each lister single-key hotkeys? exactly the same as in dopus4, edit your functions (button bank, toolbar, menus etc.) and under the flags gadget is a key gadget, just click in it and press the key you want to use. As for the extra text field... try turning off Extended lister key selection in environment / miscellaneous. Shift and click on the icon - runs the icon DOpus5 Magellan 2 Directory folder drawer structure <pre> ARexx - Arexx scripts .rexx and .dopus5 to perform tasks Buttons - Commands - Desktop - Environment - two environment files bundled: default gets loaded if you run DOpus as a normal app workbench gets loaded if you run DOpus as a WB Replacement (with LoadDB on startup) Filetypes - Groups - Icons - Images - Modules - compiled tasks Settings - Sounds - Themes - WBStartup - Use this if standard SYS:WBStartup gives cannot wait error messages </pre> Settings -> Environment -> Display -> Workbench (Use) *Settings -> Clock (add to title bar as well as the date) *Toolbar -> Editor (Right Win Key together with 1) for Copy, Move, Delete, etc above the Device List *Menu -> (Right Win Key together with 2) *Buttons -> Editor (Right Win Key together with 3) *Settings -> Environment (Right Win key together with 4) for Backgrounds, etc *File Types -> (Right Win key together with 5) *User Menus -> (Right Win key together with 6) *Hotkeys -> Setup for quick shortcut keypresses (Right Win Key together with 7) *Scripts -> (Right Win key together with 8) *Icon Positioning -> (Right Win key together with 9) Each Dopus5 theme are stored in a separate directory, named appropriately, which contains further sub directories * Font (amiga bitmap fonts) * Screens (jpg or any picture supported by datatypes but not animations) * Sounds (wav but not iff 8svx ) * Icons (png newicons glowicons ) * Patterns (iff jpg png ) Just use wildcards in background filenames and you get a different picture every reboot For example, configure in Environment -> Backgrounds -> Desktop something like this: <pre> Work:Pictures/Backgrounds/#? ...or Work:Pictures/back#?.iff ...etc... </pre> [https://aminet.net/util/dopus arcdir and themes] If you want to change the backdrop pic after a period of time, paste below into a text file called dopusrandbg.rexx and place in DOPus5:ARexx <pre> /* Changes DOpus background image forever Start with: Run >NIL: RX dopusrandbg.rexx */ if ~show("L", "rexxsupport.library") then do if ~addlib("rexxsupport.library", 0, -30,0) then exit 10 end /* Configure these two lines for your needs: */ minutes=1 picpath="Work:Pics/#?.iff" address DOPUS.1 do forever call delay 3000*minutes dopus set background '"'picpath'"' desktop center custom dopus refresh background custom end </pre> If you don't want to use/open rexxsupport.library just for DELAY() then use the DOS Wait command <pre> /* random diropus backdrop changer */ /* by paul trauth, 1999 */ /* to do: non-repeatable randomness? */ options results parse arg path address DOPUS.1 /* get current backdrop pattern so it actually changes */ dopus query background desktop custom currentpatt=result lastslash=lastpos('/',currentpatt) currentpatt=substr(currentpatt,lastslash+1,(pos('"',currentpatt,2)-lastslash-1)) dir=showdir(path,'FILE','/') num=0 do while dir~='' where=pos('/',dir) if where>0 then do file=left(dir,where-1) dir=right(dir,length(dir)-where) end else do file=dir dir='' end if left(file,1) ~='.' & file~=currentpatt then do pics.num=file num=num+1 end end which=random(0,num-1,time(s)) newbg='"'||path||'/'||pics.which||'"' dopus set background newbg desktop tile precision exact dopus set background on dopus refresh background </pre> Clock format commands available are defined by locale. They are: <pre> %a - abbreviated weekday name %A - weekday name %b - abbreviated month name %B - month name %c - same as "%a %b %d %H:%M:%S %Y" %d - day number with leading 0s %D - same as "%m/%d/%y" %e - day number with leading spaces %h - abbreviated month name %H - hour using 24-hour style with leading 0s %I - hour using 12-hour style with leading 0s %j - julian date %m - month number with leading 0s %M - the number of minutes with leading 0s %p - AM or PM strings %q - hour using 24-hour style %Q - hour using 12-hour style %r - same as "%I:%M:%S %p" %R - same as "%H:%M" %S - number of seconds with leadings 0s %T - same as "%H:%M:%S" %U - week number, taking Sunday as first day of week %w - weekday number %W - week number, taking Monday as first day of week %x - same as "%m/%d/%y" %X - same as "%H:%M:%S" %y - year using two digits with leading 0s %Y - year using four digits with leading 0s </pre> like %a %d-%b-%y %H:%M or A WB ARexx interface, you could enter a cli command as a menu item to open a WB drawer like this... RX "address WORKBENCH;WINDOW 'device:drawer' OPEN" Where device:drawer is replaced by the path of the drawer to open. The ARexx script would be capable to manage such a task but this would work only with those program that support ARexx <pre> dopus addappicon dopus addtrap dopus back dopus checkdesktop dopus clear dopus command dopus desktoppopup dopus error dopus front dopus getdesktop dopus getfiletype dopus getstring dopus matchdesktop dopus progress dopus query background, font, palette, pens dopus read dopus refresh all, background, icons, lister dopus remappicon dopus remtrap dopus request dopus script dopus screen dopus send dopus set background, font, palette, pens dopus setappicon dopus version </pre> <pre> lister add lister addstem lister copy lister clear value lister clearcaches lister close lister empty lister findcache lister getstring lister iconify lister new lister query active all, dest source lister query abort, busy, case, dirs, display, entries, entry, files, flags, handler, header, hide lister query label, lock, mode, namelength, numdirs, numentries, numfiles, numseldirs, numselfiles lister query path, proc, position, seldirs, selentries, selfiles, separate, show, sort, lister query title, toolbar, value, visible, window lister read lister refresh lister reload lister remove lister request lister set busy, case, dest, display, field, flags, handler, header, hide, label, lock, mode lister set namelength, newprogress, off, path, position, progress, separate, show, sort, source lister set title, toolbar, value, variable lister select lister wait </pre> The '''command''' allows you to call internal DOpus commands from an ARexx script <pre> command all command wait copy command read s:startup-sequence command source 12345 makedir name noicon </pre> *SFTP secure encrypted comms over internet using libssh2 and zlib (different protocol to the two below) on port 22 *FTPS secured with https like security on port 21 *FTP not secure and unencrypted protocol over internet on port 21 (should not be used today on the internet but for your own server) ===Wanderer === Wanderer prefs in the prefs drawer - Appearance tab and Workbench icon allows backgrounds (wallpapers) icon text sizes, colors, etc but cannot use #? or *.* in the backgrounds file entry to randomly choose pictures - [https://developers.google.com/speed/webp/docs/riff_container webp riff container] issues with this format but Multiview has none. Enable the bar, you need to edit the text file ‘statusbar.prefs’. The change is simple: just change “False” to ‘True’. Prefs/Env-Archive/SYS/Wanderer/statusbar.prefs Provides a way to hide the old Workbench 3.1 style of windows and screens. Themes - SYS:Prefs -> Appearance The default content of Prefs/Env-Archive/SYS/themes.var should be "themes:ice" but can be changed via the theme prefs, please do NOT click the Use button. Its useless. As you know, it will ask for the theme volume. Just pick the theme you want, click on Save, then reboot. * Decoration is on. Any time trying to change theme, you get: "Please insert volume Theme: in any drive"? You could check if you find SYS:System/Themes or if it is missing. Then you could open startup-sequence which you can find in drawer "S". There should be a line: Assign THEMES: SYS:SYSTEM/THEMES >Nil: This does the trick. Open a shell and run: Assign THEMES: SYS:SYSTEM/THEMES Than start the Theme prefs again... this should work * The theme is the only thing that could slow the system a bit, but it's not that performance impacting on most uses, and you can switch it of completely. Remove C:Decoration from the bottom of the file sys:s/startup-sequence. In each theme directory is *Env-Archive -> Zune -> global.prefs *images -> Gadgets -> 20x20 pngs for Down etc *menu -AmigaKey - Background - Checkmark - SubMenu and config *system - Arrowdown, Arrowleft, Arrowright, Arrowup, etc [http://archives.aros-exec.org/index.php?function=browse&cat=graphics/theme ALua/Zulu script] built for faster Wanderer skin management. You can modify config files, install new (wdz format/zipped skin files) and delete skins via the Theme Manager. [http://sites.google.com/site/arosaspireone/download-1 Global.Prefs] ===Scalos=== [https://web.archive.org/web/20180922220139/http://scalos.noname.fr/ Scalos] is not an OS replacement, it's a Workbench replacement. It replaces the desktop and graphical file management components. Scalos is 100% Workbench replacement with most functions working like the original Workbench ones. Undo and Redo available for most window and icon operations. Fully multitasking so every window has its own task. While loading icons, any window function (e.g. Drag&Drop) is available. 24bit color support with window patterns - Unlimited and easily configurable via tooltypes. Optimised backgroundpatterns routine so patterns can be tiled, centred or even scaled to fit into the windows. Live updating window scrolling - Supports middle mouse button panning and drawer (folder) windows can be iconified on the desktop. Icon imagetypes with all types are supported such as backfill or complement. Configurable surrounding iconborder. Icon support also visually highlights files which are soft-links in the file system. Icon dragging is more stable and far less flickery on graphics cards. Whilst dragging, icons are displayed with text and they can become transparent over anything where they can be dropped. Single-window lasso mode, with scrolling window contents invoked by dragging mouse with configurable qualifier key. Text icon lasso selection used to ignore "Name column selects text icons" flag. Support for backfilled thumbnail icons, with selectable color and transparency. Added option to always generate square thumbnail icons with preview icons for images - Thumbnails can be permanently saved in icons. Supports PNG icons with alpha channel and real transparency and displays OS3.5 GlowIcons and are all scalable. Iconborders with variations (normal, shadowed, outlined). Completely configurable, filetype-specific user-definable popup menus and tooltips. Plugin system to exchange or add features and can enhance the Workbench and make it more configurable. Filetype plugins to display filetype-specific information. - Currently, EXIF information viewer for JPEG images is included. Plugin included for 100% support of OS3.9 Workbench features. Plugin included for AREXX API compatible to OS3.9 Workbench. Online update with updater.module Scalos works also as a Workbench replacement. In this case the 'emulation mode' has to be set by using Scalos' own version of LoadWB and offers * Scalos uses the Workbench Screen for its windows instead opening a new one * AppIcon, AppMenuItem, AppWindow functions are redirected to Scalos * all Programs placed in "WBStartup" should start * The Screen will be reopened in case of changes in ScreenMode and Palette settings <pre> v1.0 (V39.201) - November 1999 v1.1 (V39.212) - December 1999 v1.2b (39.220) - June 6, 2000 v1.2d (39.222) - 2000 (latest public beta executable) v1.3 (40.7) (beta) - August 2, 2001 v1.3 (40.22) - September 25, 2002 v1.4 (40.32) (beta) March 31, 2005 v1.6 (41.4) - March 27, 2007 v1.7 (41.5) - August 12, 2007 v1.8 (41.6) - March 12, 2009 v1.9 (41.7) (beta) - March 15, 2010 v1.9 (41.8) (RC1) - August 25, 2012 open source v1.9.2 (41.10) Deadwoods' AROS late 2022 32bit and 64bit build unifying the code base of ` for AROS x86 ABIv0, AROS x86_64 ABIv11 and AROS m68k </pre> Distros may have Scalos files under SYS:System/Scalos or Extras:Scalos. Known [https://github.com/deadwood2/AROS/issues/75 bug list], Certain files like Menu13.prefs, Palette13.prefs, Pattern.prefs and scalos.prefs need to be in SYS:Prefs/Env-Archive/Scalos they can be found in Scalos:Storage/envarc and country drawer or run the "Scalos Menu" preferences program. Note if already setup with sub-menu entries and then re-save your menu prefs as it will now generate a new/overwrite prefs file called "Menu13.prefs" in "envarc:scalos/". The same is also required for the new Palette prefs update, click 'Save' and a "Palette13.prefs" file will be saved in to "envarc:scalos/" directory. <pre> ASSIGN Scalos: SYS:xxx/xxx DEFER ASSIGN Libs: Scalos:Libs add ;ASSIGN SYS:Devs/Datatypes Scalos:Devs/Datatypes add Assign Theme: Scalos:Themes/Default_Theme add Assign Locale: Scalos:Locale add Protect Scalos:Tools/browse.script s add quiet Protect Scalos:Tools/OpenShell s add quiet Protect Scalos:Tools/run.script s add quiet run Scalos:Tools/LoadWB ;Scalos:Scalos </pre> Add the above to SYS:S/startup-sequence or SYS:S/user-startup '''before any Wanderer entries''' In the prefs drawer (folder) is the big prefs app Scalos_Prefs which covers these user setup areas <pre> About Scalos Paths - should be preset Startup - WBStartup drawer contents should auto run on each startup Desktop - edit titlebar, icon layout and in misc, auto leave-out (drag icon to desktop) Icons - Drag and Drop - Windows - Text Windows - in misc, drawer sorting at start of listing if needed TrueType Fonts - use Truetype fonts rather than system ones Miscellaneous - Plugins - after adding oop/title_clock.plugin %ti %da does not work, maybe needs ASCII .prefs added Modules - ?? Menu - setup for MainMenu and PopupsMenu with New Menu, RE Name, Key: shortcut, Command Properties FileTypes - already added def_Project icons and def_Disk (hdd sdd cd dvd etc) support PopupMenu - tweak how popups appear Pattern - Wallpaper backgrounds with Type DE, each pattern in the list can be edited, Save as Pattern.pre Palette - change the color of things , Save as Palette.pre </pre> Scalos_Prefs - Pattern - Minimum options to be changed are *DE Desktop/Background *SC Screen *TW Window/TextBackground ie Text listing showing if icon type not recognised *IW Window/Background ie Icons showing Workflow - In "Pattern List" tab, select New - choose a picture, highlight in list, click in number box under New button and slide to another number, click on "Defaults" tab and adjust Pattern numbers slider to choose right picture for each of the above options - Click "Pattern List" tab to check eveything is OK and click Save Pattern List tab on Patterns Page - Allows you to compile a list of pictures (one at a time rather than a whole folder e.g. with #? or *.*), assigning a number Nr to one or more of them for easy reference. Using this number you will be able to assign the pictures to specific windows on the Defaults tab Page. If multiple pictures have the same number, one of the pictures will be chosen randomly. This will allow you to have random desktop pictures, random window backdrops etc. Defaults tab on Patterns Page - Here you can set the defaults for the background pictures for the Desktop, Screen, Window and/or Text Mode throughout Scalos. Randomize every time [check box] - Usually Pictures with the same number will be randomly selected as soon as the configuration loads. If this option is set, the picture will be selected as soon as a window with the same number assignment is opened. *Fit size: The picture will be resized to the dimension of the new window.You *MUST* have set GUIGfx on. asyncron layout: Pictures will be loaded and rendered while the windows opens (Like original Workbench). If this function is 'off', pictures will always be loaded before opening the windows. *Use friendbitmap : The picture is present twice in memory for best speed. This option has no effect if V43 picture.datatype or GUIGfx are used. Always relayout: If "Fit size" is set, the picture will be scaled everytime the window's dimensions change. *Randomize everytime: Usually Pictures with the same number will be randomly selected as soon as the If more pictures have the same number, one of them will be chosen randomly. Patternlist New/Delete : Add a new picture. After that you should assign a number to it. The picture will be rendered as tiles. configuration loads. If this option is set, the picture Asyncron-Task priority: You can set the CPU priority for the Task if "asyncron layout" is set. <pre> Desktop: Number of the Picture for the main window. Screen: Number of the picture for the Scalos-Screen. Window: Number of the picture for the Scalos-windows. TextMode: Number of the picture for the Scalos-windows in Text Mode. </pre> Popup Menu preferences fully configurable menus (includes ToolsDaemon and ParM launch apps import), including support for context-sensitive Popup menus configs for top pull down menus for apps, etc. Workflow - Scalos_Prefs then Menu, New Item, New Command add name at top then in Command Properties e.g. add Workbench and location e.g. DOpus:DOpus4 for apps Command for c apps or Rexx for scripts or Plugin for or AmigaDos for modules <pre> DESCRIPTION NAME/A This is the title that is displayed in the top line of any popup menu INCLUDE NAME/A Name of file to be included. Path can be relative to "Scalos:FileTypes" POPUPMENU Starts the popup menu description section for this filetype. </pre> The following Subcommands are allowed inside popup menus: <pre> SUBMENU "NAME/A" ENDSUBMENU MENUENTRY "NAME/A,KEY/K,DEFAULTACTION/S" ENDMENUENTRY INTERNALCMD "NAME/A" WBCMD "NAME/A,STACK/K/N,WBARGS/S,PRI=PRIORITY/K/N" AREXXCMD "NAME/A,STACK/K/N,WBARGS/S,P=PRIORITY/K/N" CLICMD "NAME/A,STACK/K/N,WBARGS/S,P=PRIORITY/K/N" ICONWINDOWCMD "NAME/A" PLUGINCMD MENUSEPARATOR ENDPOPUPMENU TOOLTIP ENDTOOLTIP </pre> <pre> Starts the tooltip description section for this filetype. The following Subcommands are allowed inside popup menus: GROUP "ORIENTATION/K" ENDGROUP MEMBER "HIDE/K" ENDMEMBER HBAR STRING "ID/K,TEXT/K,SRC/K,TEXTPEN/K,HALIGN/K,STYLE/K,FONT/K,VALIGN/K" SPACE "SIZE/N/A" DTIMAGE "FILENAME/A" </pre> Each theme drawer (folder) has these further folders <pre> About - Desktop - FileTrans - FileType - Icons - Menu - Modules - PointerIcons - Prefs - Sound - Window - </pre> *Plugins <pre> devicefilter.plugin persist.plugin should a crash or reboot occur - next time Scalos started, all windows re-opened title_clock.plugin add digital clock to title see more below title_envvar.plugin %ev, which can be used to display the value (a string) of the variable in the titlebar title_freepens.plugin volumegauge.plugin wb39.plugin wbrexx.plugin plugin adds a Workbench 3.5+ compatible AREXX interface to Scalos internals xtwindows.plugin left or right ALT or left or right SHIFT keys when open/close windows filetype.plugin then run FileTypes-prefs and customize the filetypes (eg import from a DefIcons-brainfile) menu.plugin </pre> *Modules - delete, empty_trashcan, execute, find, format_disk, information, iconproperties, newdrawer, reboot, rename, systeminfo, windowproperties *Tools - scripts like LoadWB, quit.rexx, open_volume.rexx, In Scalos_Prefs->Filetype->Recognition you can define the filetypes and on "Action" you define specific context menu for all filetypes defined in recognition (similar to magellan) there is the same you must show all first (list is only limited) so you created a file type AAABBB, you need to have def_AAABBB icon Associating files with "Scalos_FileTypes" is very simple, practically it is very similar to Dopus4, first you create the Def_icons to assign to the file type (will be seen automatically ), then run "Scalos_FileTypes" you add the extension, fill in the descriptor (MATCH or PATTERN etc..) and save then you create a appropriate entry in the list and rename it, if def icon exists it is shown. Below you can define how files are identified. I use "pattern", similar to magellan to identify file by ending. Then you click on the shown icon and define in it what program is used when you double-klick on it and save it. On the tab action you can define popup menu for it. defined all archive types from XAD in "filetypes". If you change to "action" and click on "archive" you can define the context menu that is shown if you do not define a specific context menu for a filetype Reset to Default in Scalos_Prefs resets all settings so BEWARE <pre> The Scalos desktop screen titlebar may be configured using the main Scalos Preference program. This oop/time_clock plugin adds some additional placeholders: %ti, displays the current time in the default Locale format. e.g. "10:43:37" %da, displays the date in the default Locale format. e.g. "Saturday 14 July 2001" Using the supplied prefs program for the plugin, or editing the ASCII file ENVARC:Scalos/title_clock.prefs you can use the following standard Amiga Locale values to change the formatting %a - abbreviated weekday name %A - weekday name %b - abbreviated month name %B - month name %c - same as "%a %b %d %H:%M:%S %Y" %C - same as "%a %b %e %T %Z %Y" %d - day number with leading 0s %D - same as "%m/%d/%y" %e - day number with leading spaces %h - abbreviated month name %H - hour using 24-hour style with leading 0s %I - hour using 12-hour style with leading 0s %j - julian date %m - month number with leading 0s %M - the number of minutes with leading 0s %n - insert a linefeed %p - AM or PM strings %q - hour using 24-hour style %Q - hour using 12-hour style %r - same as "%I:%M:%S %p" %R - same as "%H:%M" %S - number of seconds with leadings 0s %t - insert a tab character %T - same as "%H:%M:%S" %U - week number, taking Sunday as first day of week %w - weekday number %W - week number, taking Monday as first day of week %x - same as "%m/%d/%y" %X - same as "%H:%M:%S" %y - year using two digits with leading 0s %Y - year using four digits with leading 0s like %d %m %y or %a %d %B %Y %p </pre> Shutdown -> right mouse button Scalos, About, Reboot, Shutdown ToolTypes can be added to the Scalos.info icon like *SCALOS_PATTERNNO=<number> : background image matching the number *SCALOS_NOTEXT : The Icon will be drawn without Text. *SCALOS_NODRAG : The Icon will not be draggable. Its position will be fixed. *Module iconproperties - Added SCALOS_BROWSERMODE tooltype support runcommand parameters... in which case: <pre> %p = parameters %w = directory path %d = device-name %% = literal percentage token </pre> With the help of the wbrexx.plugin Scalos gains support for more of the compatible arexx API If an arexx command produces an error you will find the error code placed in the WORKBENCH.LASTERROR variable. ACTIVATEWINDOW <pre> /* Activate the root window */ ADDRESS workbench ACTIVATEWINDOW root /* Activate the "Work:" partition's window if already open*/ ACTIVATEWINDOW "Work:" </pre> CHANGEWINDOW <pre> /* Change the root window; move it to position 10,30. * and change its size to 200100 pixels */ ADDRESS workbench CHANGEWINDOW root LEFTEDGE 10 TOPEDGE 30 WIDTH 200 HEIGHT 100 /* Change the currently active window */ CHANGEWINDOW active 20 40 200 100 </pre> Most of Scalos' issue are due to the flexibility of its' user configuring nature but if The sort menu plugin needs to be ported from ASM to C. IIRC Scalos has a command line option to fully replace Workbench/Wanderer. The Theme: assign is used by both Wanderer and Scalos but I didn't have any problems using both at the same time. The Program will be started from the Shell. If "WB Args" is set, with the Argument "%p" will be replaced by the path of the activated Icons. The Program will started with the specified Stack value. IconWindow: Scalos opens the window of the specified path. PlugIn: Starts a Scalos Menu-PlugIn. If a Menu Item with empty name is specified, Scalos displays a separator line. It's possible to Drag&Drop an Icon in the Configuration Window. All values will be set accordingly. Entries may be dragged across the list. Mac-like selection : This function activates a multiselection method used on MacOS or Win95. Don't have to hold down shift to drag them. Clicking on an already activated icon will not deselect all other icons. MMB move: The window contents may be moved using the middle mouse button. WindowPopup title only: PopupMenu for windows can be opened only on window's title bars. FullBench: Screen-Titles removed and Main Window set Full Size. Scalos Prefs. Go to Settings->Scalos->Prefs and then the Misc section. Remove the tick against Full Bench. If you've enabled it, the titlebar will disappear when you select backdrop. Default Icons saveable : The icons which Scalos generates if "show all files" is enabled, can now be saved using "snapshot" menu option. load DefDisk first : Try to read the icons first from the DefIcons Path before using disk info. Hide hidden files : If this function is activated all files or directories where the "hide" flag is set will not be shown. Many of my Icons display more than once on the screen, while on the workbench all seems ok. The Workbench filters double displayed icons, Scalos does not. Solution: please edit the ".backdrop" file and clear double lines. Background images not scaled. GUIGfx option not set or guigfx.library and/or render.library not installed. If working with CD's causes crashs or Scalos doesn't work correctly. Most Filesystems doesn't support the ExAll function correctly. Disable "Use ExAll" in Scalos prefs. Scalos doesn't start any program in the WBStartup. WBStartup Path may be set wrongly or Scalos was not started in Emulation Mode (LoadWB etc) Some programs will not startup with error message "has not returned, wait some more"? and "unable to open your tool" need a def_icon with the same name predefined, then create an appropriate entry in the list and rename it, if def icon exists it is shown. Below this can define how files are identified. * either "pattern", similar to magellan to identify file by ending * or Then click on the shown icon and define in it what program is used when you double-click on it and save it. On the tab action you can define popup menu for it. All in all handling is of course different to magellan but can do similar For the RAM Icon, to obtain this you have only to copy the icon in the Icon Path as "RAM.info" or "Ram Disk.info". All functions will automatically be performed sometimes cut into half or quarters when scrolled off screen or drawers moved - settings issue probably Sometimes leaves initial drawer window imprint on desktop when moved - settings issue Scalos AROS released a [https://github.com/deadwood2/contrib/tree/master/scalos new build V2022-07-21] with the following changes noted: <pre> Fixed: Numerous crashes when working on 64-bit with 64-bit heap Wrong background color of Scalos logo on Scalos splash window Backgroung image of Scalos splash window and Scalos About window is not visible Icon labels on desktop and in drawer windows are displayed using Topaz instead of Arial font Font.prefs are not being loaded on 64-bit Font.prefs are being wrongly saved on 64-bit scalos.prefs are not being loaded on x86 and x86_64, scalos is using always default preference scalos.prefs are being saved on x86 and x86_64 in format not compatible with m68k NewPopupmenu.prefs is wrongly written Plugins are not loading at Scalos startup wbrexx.plugin is crashing at startup on 64-bit Multiple controls missing on Scalos Prefs/Icons page System crash when clicking on def icon image on FileTypes Prefs/Recognition page Status bar, control bar, buttons sometimes don't have images displayed Buttons in Scalos About window have white corners rendered where they should be transparent Crash when leaving out an icon Crash when adding a User-defined Button to Control bar without setting it's properties in Scalos Prefs Crash when removing any button from Control bar in Scalos Prefs Scalos Prefs allows editing TTEngine font properties when TTEngine is not present causing crash in Icons/Labels and Text Windows/Fonts pages deficons.prefs are not being loaded on x86 and x86_64 Reset to default in FileType Prefs and Save does not save preferences Won't fix: Scrollbars visible on titles of TrueType Fonts, PopupMenu, Menu, FileTypes, Pallette and Pattern pages of Scalos Preferences Not fixed: Wrong rendering on DualPNG icons Refreshing drawer windows is slow Starting Prefs/Locale or Prefs/Input from Scalos causes other preferences to fail Desktop wallpaper is damaged where Splay window was displayed When started from Wanderer, after saving Scalos Prefs, reload does not re-open main Scalos window Difference in behavior between Cleanup from popup menu and Cleanup from top menu - possibly due to missing plugin, check Cleanup association in Menu Prefs </pre> ===DOpus 4 Directory Opus=== Copy DOpus4 app to WBStartup directory folder so it starts on boot up each time Another method is add the below to the bottom of the user-startup script in S: drawer/directory <pre> run DOPUS:DirectoryOpus -i >NIL </pre> makes DOpus starts up in Iconified state at the top of Wanderer's screen. Left click on this to highlight and right mouse click to open. Just click on the sides of either outer edges of DOpus windows and it will display the parent device/volume list. DOpus saves it features in a CFG file which can be edited to suit anyones' needs by reading the [http://archives.aros-exec.org/index.php?function=browse&cat=utility/filetool Dopus Manual] which is in Guide format. ===AmiStart=== Auto generates the apps menu but scans the drive each time - AmiStart can choose apps you are not interested * how to disable annoying zune/mui 'bubbles'? try a right-click on AmiStart and release on Global settings. Then click on the bubbles gadget. Move the Show Bubbles slider all the way to the left. ===BoingIconBar=== User chooses the apps to add to the dock at the centre bottom of the screen but has to be done manually, please use Save afterwards Or easier edit the text file of SYS:Prefs/Env-Archive/iconbar.prefs and save <pre> SYS:System/Shell SYS:Tools/DOpus4/DOpus4 SYS:Utilities/Editor SYS:System/SysMon SYS:System/Scout Work:Extras/Internet/OWB/OWB Work:Extras/Graphics/Lunapaint Work:Extras/Graphics/ZunePaint AROS:Tools/MPlayer/MPlayer Extras:Internet/AmiFox/AmiFox </pre> right mouse click on bottom edge of screen where boingiconbar shows - select settings which opens BoingIconBar Preferences to add apps If no dock showing Add, to add apps click Add Program and search for the executable another method is to drag icons to ends of the bar and move them on the Bar using the Prefs/BoingIconBar ===Icons=== Icons are typically now .png pictures renamed as .info e.g. so Office application name would have a Office.png renamed as Office.info or MyApp.png as MyApp.info, etc. Leave Out menu option to leave app icon on desktop To select multiple icons and save their positions, click on the first icon and after while you hold the Shift key down select further icons and don't release it before SnapShot is finished. You can also select a whole group of icons by pressing the LMB at the top left of the icons and while keeping the LMB down moving the power towards the bottom right. A expanding bounding box will appear and all the icons within it will be selected. Clean Up menu option (right mouse button -> Icons) rearranges icons in a drawer or disk window into a neater condition. To use, open the window to rearrange and select Clean Up. To keep the icons in the new positions, select all the icons (shift key or mouse selection) and select 'Snapshot' and then Window and then again with All. In DOpus5, Scalos, wanderer, most files have an icon file associated with it. To change the default tool, select Icon menu, Information, and change the default tool string. For example, you could use Multiview, Editor and so on for most text, graphics and some sound files as long as the appropriate Datatype classes are installed. For scripts, set the tool to C:IconX C:Join Image1.png Image2.png TO MyFile.info is enough to make a dual state icon from two png images. You can then use Wanderer's menu Icon/Information on it to edit its fields and tooltypes. [http://www.amiga.org/forums/archive/index.php/t-46881.html Amiga OS 3.x AfA icons thread], [http://eab.abime.net/showthread.php?t=66213 Later DualPNG and OS4 icons thread] and [http://archives.aros-exec.org/share/graphics/icon/ Alternative Icons sets] like [http://www.amiga-look.org/artwork/classic-wb-png-iconset-l ClassicWB] [http://www.masonicons.info/6.html AISS toolbar images] unpack unarc them into RAM: and copy Images directory to SYS:Prefs/Presets/ AISS icons are looked for in PROGDIR:, PROGDIR:Images, SYS:Prefs/Presets/Images and then in TBImages: according to Open Amiga guidelines. there is Demos/iconscale which could be launched from S:User-Startup with two arguments, telling it the horizontal and vertical size. IE something like Demos/iconscale 40 40 It will shrink icons... not sure if it will be very nice though. it doesn't work for the icons on the main desktop. there is an option to scale an icon to a bounding box afair, try iconsize followed by two numbers, like: iconsize 32 32 Is there any way in AROS to change an icon type from Project to Tool or vice versa? Either the SIT option of [http://archives.aros-exec.org/index.php?function=showfile&file=utility/workbench/ ProcessIcon], or the TYPE option of HandleInfo (not sure if this one works at all, please test with care). processicon sys:pathoftheicon SIT=Project SIT Set type of ICON. Allowed types are: "Disk", "Drawer", "Tool", "Project", "Garbage", "Device", "Kick" and "AppIcon". Btw, are your icons, the #?.info files, writable, is the W flag set ? ===Fonts=== Install the #?.ttf files to SYS:Fonts/TrueType. Use SYS:System/FTManager to "Install Font" each #?.ttf file which will generate associated #?.otag and #?.font in SYS:Fonts. Use SYS:Prefs/Fonts to change system fonts and SYS:Prefs/Zune to change others. To achieve our goal we will use the Setup Locale, Input, Zune and Fonts, as well as The FTManager. Begin The first step you should do is to get the system to know that we speak and write in another language. What you need to do is to open the setup program and choose Locale country, and list "preferred languages" to put it first and then English. If you want the tab "Time Zone" and select city of residence to set the clock correctly. Of course we save our changes and continue opening the setup program Input. This sets the keyboard language as our beginning. When the language layout was created there was no option to switch to Aros keyboard (layout switching), so to write in the language you had to hold down Alt, something you encounter in other functions. This time working with the team of Aros to create a new keyboard layout to replace the old so we can get rid of the button Alt. For now though let only selected this layout and do not turn the switch on the keyboard. Custom Keyboard Layout [http://repo.or.cz/w/AROS.git/tree/HEAD:/workbench/devs/keymaps keymaps are in place but unfortunately when they are not, then indeed things become a bit 'low-level' as it involves redefining some tables with values that match your keyboards] only need to add your compiled table as new keymap. So taking a little peek here shows that it should be possible to compile using gcc -opc105_tr pc_105.c -nostdlib where the pc105_gr/pc_105.c needs to be replaced with your own adjusted keymapname/c-file [https://en.wikiversity.org/wiki/Enabling_Greek_Characters_on_Your_Keyboard General overview of Greek letters on keyboards] Installing fonts *[http://aminet.net/package/util/wb/EPAGrWb System jaggy] *Outline resizable .font .otag In this step you need to download some fonts that can support the encoding in our system. The easiest way is to run the script "Download Fonts" you'll find in the folder OWB. This script downloads from the Internet, and unpacks some fonts for OWB web browser, which is placed under the folder Fonts:TrueType. But as these can only be used by OWB and not the system, which unfortunately does not see. To make them available to the rest of the system, open the program FTManager, you will find the folder AROS: System /. From there select the field "Codepage" option "ISO-8859-7" and list the font "Arial" and "Regular" form in which you must double-click with the mouse. In the window that appears, select the bottom right the checkbox "Anti-aliasing" button and then "Install". Immediately folder Fonts: created files "arialregular.font" and "arialregular.otag", which are necessary in order to see the system font. Do the same steps if you wish for other fonts. Final stages After completing the above, open the folder AROS: Prefs / and run the program settings Fonts. In the new window, select the fields "Icons" and "Screen" as the font "ArialRegular" to the size you want. In the field "System" to give "s_courier", which, however, because it is not True Type Font support Antialising, and may seem a little broken. You can also use the CourierNew, if you have installed the above procedure. After you save the changes and open the Zune program settings. In this set the "ArialRegular" font fields in tabs "Windows" and "Groups", and save the changes. Reboot the system. To make sure that the above worked properly run NoWinED, which you will find under the folder AROS: Tools /. If that everything is working correctly you will see the menu and the settings window with Greek letters. You can also write in the language using the button Alt. Second program that you can try, which is fully localized, is WookieChat, which you will find in the folder AROS: Extras / Networking. And in this place all the menu and settings window works. ===Windows=== *Intuition The window you position and resize, you right click on that windows title bar and in the dropdown menu you snapshot from there. Right click to show menu -> Window -> Snapshot Windows or All but it will NOT work if that folder has no icon (e.g. Disk.nfo) attached to it. You need a folder icon. The window information gets saved in it. As for maximising the window using a shortcut key - Alt and up arrow key The AROS-Shell windows can be moved, resized by editing sys:s/icaros-sequence <pre> ; run shell if ${Icaros/autoshell} EQ true run QUIET c:newshell >NIL: EndIF </pre> ; slimmer right aros the screen run QUIET c:newshell con:0/150//300/ >NIL: ; top right corner scr-x scr-y win-x win-y run QUIET c:newshell con:600/150//300/ >NIL: *Zune - AROS version of MUI Magic Menu type functionality is implemented in IControl preferences editor: in the frame called Menus, switch type from Pull-Down to Pop-Up and/or iControl just tick the sticky menu option. Windows outside screens causing a problem either uncheck "Offscreen move" for windows in IControl prefs editor. Or use FKey commodity and define two key shortcuts: * the first using the command "cycle windows" (for example ALT TAB); * the second using the command "rescue window" (for example ALT F5). Now you can cycle windows until the one you want to rescue, and then "rescue" it: it will move back inside your screen. How to save the window size on wanderer (snapshot all, snapshot windows) Same for icon position on wanderer, can't save the position. Icon position cannot be saved yet, but you should be able to save the window position and size. sys:prefs - wanderer icon has option to save window size on exit but just for dh0. To get saving working on (DH1: Extras:) partitions try deleting the dh1 disk.info file, then reboot. The system should create a new dh1 icon. * how to set up permanently 'view all files'? As for viewing all files, removing disk.info for that disk did the job * how to list and kill processes (xkill would be useful) ? sys:Extras/System/Scout can kill apps sys:Tools/Commodities/Exchange can remove available commodities * how to restore 'go up' button in wanderer window? (it doesn't show up anymore). If you're using Icaros, go to the theme prefs and make sure that decoration is checked. Also, some themes do not use a parent button, so try another theme. You may have to restart Aros before the theme will change. * Is it really safe to turn off (hardware button) computer at any time (worried about USB hard disk) yes you can turn off the computer IF none of the drives are in progress (i.e. writing). Best to use Wanderer menu option Quit otherwise ===Printing=== This is still work in progress print from my AROS box! <pre> 1. installed printfile ( http://www.lerup.com/printfile/ ) on my Windows XP computer 2. set up the print spooler option, and used ghostscript filter for ps files 3. made the spool folder accessible from ftp (setting up ftp server on Windows) 4. send the ps file from my AROS box to the ftp server using curl (curl -T filename ftp://windows.box.adress --user username:password) </pre> It's a bit complicated but it works! *Postscript Best to set Printer Prefs in the Prefs drawer to print-to-file or parallel/USB port Save document in postscript or convert picture/text to postscript Print using compatible [http://en.wikibooks.org/wiki/Aros/Platforms/AROS_USB_support#printer.class_-_PostScript_3_and_internal_ghostscript_drivers Ghostscript printer] or Postscript printer *GutenPrint Some work has been done ;There are no individual drivers yet for HP's Photosmart, EPSON's EPL, CANON's, Lexmark, CUPS PPD, etc. ===Files=== ====File endings and datatypes==== * Check if the file has his own .info icon file with a tool set to open it. IIRC this has higher priority over the def_XYZ.info file association. * In ENVARC:SYS/def_Text.info or whatever def_ file needs changing, use Wanderer's menu Icon -> Information and change the def_XYZ.info there. If you're on ABIv0 and want it to be applied immediately, you might have to copy it to ENV:SYS/ (or to reboot). * Identifying file types by file ending is only a fallback. Far better it is to search for magic words, for flac files this would be "flaC" according to this [http://flac.sourceforge.net/documentation_format_overview.html documentation]. For instance, to open PDFs with arospdf not localised in the default drawer of Icaros (Work:Extras/Applications/arospdf) but localised in a custom drawer in AROS. The default tools are defined in the icons in sys:prefs/env-archive/sys e.g. def_PDF. File type identification is done by datatype descriptors which you can find in Devs/Datatypes. The AROS build system has a tool which creates such datatype descriptors. '''Changing of default tools of existing icons is easy as shown above. Adding of new file types is not hard, but needs knowledge of the AROS build system.''' The enduser way would be to download the attached file, which contained two executables: 1) createdtdesc, to make a new datatype description 2) examinedtdesc, to read/show existing datatype descriptions use 2 to get an idea on how it things are currently done in aros by providing this executable a file from the drawer sys:devs/datatypes/ (alternatively you can find the original .dtd files here). use 1 to make your new datatype. Use the accompanied FORMAT file (also here) to read how to make your own datatype descriptor. use 2 to get hints from other datatype descriptors. Note: When creating a new descriptor would advise against using the pattern property, but instead use the default pattern of #? and create a Mask that matches your filetype. This requires some research in order to discover how your filetype can be recognized properly. Of course with making something like a descriptor for an ascii textfile, you would fallback to using the pattern (e.g. #?.text as the filetype cannot be determined easily otherwise). <pre > # name - choose wisely and informative. also used for icon's name. # version - choose as you like as long as it complies with version rules # basename - the 'root' datatype class. be aware that e.g. it can influence behaviour. for example when choosing binary and using tool multiview in project icon, the file will be viewed as binary file (choosing sound would tell mulitview to view the file as a soundfile). So this can influence the underlying tool being used. Could become messy if users started to modify the tool manually. # pattern - This is the file pattern match e.g. #?.text # Mask - A mask to identify the file. Requires knowledge of the actual file structure. For example 'M' 'Z' for an msdos executable. # GroupdID - not supported (AROS native) files - use syst as that would be the least intrusive in case an AROS tool/program tries to load such datatyped file. # ID - In your case, the first four characters of the name at subchapter 1 (in lower case) (or less if name is shorter). # flags - How the mask needs to be interpreted. In your case would be mostly DTF_BINARY in combination with (wanted or not) DTF_CASE (to tell if mask used letters are case sensitive or not) # priority - the priority of how the type is handled so that on datatype could have precedence over another? In any case, document tells it to be mostly 0. </pre > Now that you know each field and what it does (more or less), you write this fields in a text file for your own invented datatype, save it and create the actual dt with the tool in 1. in the end the created dt must reside in sys:devs/datatypes/ drawer. Then you would create a default icon in sys:prefs/Env-archive/SYS drawer. Don't forget to reboot or copy .info file to ram:env/sys in order to test. also don't forget to set which tool to start f.e. c:lx or dh4:emulators/mycoolemulator To test, open Wanderer then show all files and doubleclick on a file of type you just created. Alternatively you could use the 'open' command from shell (with file of datatype you just created as parameter). And as a last note. it would perhaps be welcome to have a program like xicon and/or runprglist for AROS (unfortunately both without source, but something similar could be created for AROS). Sounds complicated ? Perhaps... but OS like windows needs a complete registry to be able to do things like this. And yes, i am aware windows has gui tools that does it (more or less) for you (by manipulating the registry). Same could be done for AROS (without integrating a registry in AROS that is ). Would that suffice ? red1+2: typos, reformatting. disclaimer: please note that using these tools can screw up your currently installed support for datatypes when used incorrectly. Do not use if you do not understand what you are doing. Use at own risk. ==Network Connection== AROS currently only has one real choice for TCP/IP networking - AROSTCP. This is a port of the AmiTCP package from AmigaOS (TM), with a number of enhancements/fixes from AROS developers. Please use Prefs/Network to set up wired, wireless or USB networking Non USB wifi is easier, USB wifi can be an annoyance - remember to save whilst in prefs ===Wired=== =====IPv6===== Some support 128bit IPv6 address packet <pre> Local FD::/8 Global 2000::/3 64:ff9b::/96 </pre> NAT64 translates IPv6 to IPv4 DNS64 OS routing works with <pre> MacOS Ventura Windows 11 with cloud account Ubuntu Jammy Jellyfish Android 10 (block google dns) </pre> ====IPv4==== The top half of the IPv4 Configuration tab on the Network Prefs deals with the network card/USB and the lower half the router part. [[File:AROS Wanderer Network Prefs DHCP.png|thumb|DHCP Settings]] '''Upper part of IPv4 tab''' * Click Add on the top right of the Prefs which opens a window called '''Interface''' * Enter Name as net0 (but can be anything as long as it is consistently used in other sections) * check mark on Active * select device to be used using the '''right hand-side gadget''' of the box where the device name will go * set Unit to 0 * IP Mode is default set to '''Get address from DHCP''' * IP Mode set to Manual if DHCP does not work automatically From the shell CLI, ifconfig -a Under net0: section, inet starting 192.168.x.xxx * inet or '''Address''' of network card * netmask convert to decimal so 0x'''ffffff7f''' becomes 255.255.255.247 which is used to adjust the above '''Address''' into * broadcast 192.168.xxx.xxx click OK [[File:AROS Wanderer Network Prefs Manual.png|thumb|Manual Settings]] '''Lower part of IPv4 tab''' * IP Mode Get address from DHCP (default) * or changing to Manual if automatic DHCP set up does not work * '''Gateway''' (Router Internal LAN-IP) (Default Route) = 192.168.0.1 (D-Link Netgear), 192.168.1.1 (Linksys 3com), 192.168.2.1 (SMC Microsoft), 192.168.1.254 (Belkin), 192.168.123.254 (USRobotics) else check with your router manual * first DNS = use 208.67.222.222 (opendns) or Gateway number above (to test web browser access to router) or 212.50.160.100 (google) i.e. or whatever your ISP needs you to set * second DNS = use 208.67.220.220 (opendns) or Gateway number above (to test web browser access to router) or 213.249.130.100 (google) i.e. or whatever your ISP needs you to set * At the bottom of IPv4 tab, check mark the '''Start networking during system boot''' option * Save and reboot (sometimes Network restart fails, so reboot every time to be sure) '''an alternative way''' to AROS ifconfig -a, other OSs have similar for the same internet connection. Another connection will have different settings. e.g. From [http://www.ncsu.edu/resnet/windows/ipconfig/ Windows], '''ipconfig /all''' and note down the IP, subnet mask, default gateway, and DNS servers values and put these values in "manually" into AROS Network prefs. e.g. From Linux via dhcp router have a look at etc./dhcpc/dhcpcd-eth0.info * for manual input look at /etc/networks (IP or Gateway) and /etc/resolv.conf (DNS) Please note that all in one routers (wired+wireless) or separate routers may need different settings IPv4 involves routing (192,168.x.x), firewall, NAT ===Wireless=== [[File:MyArosWirelessSetup.png|thumb|Setting up]] [[File:MyArosWirelessTCP.png|thumb|Shell commands to work out what is happening]] We must first make certain you have a Atheros 5k chip inside acting as the wireless wifi option. Open PCITool in Tools directory. Down left hand side are a series of numbers 0.00.0 etc. Click on some at the bottom and hopefully one of them will say Atheros AR5??? or AR242?. or a Realtek RTL8187B, we can check using Prefs/Trident as this one is USB based There are many similarities with the above Wired set up so please read the above section as well * open Network/Prefs * In '''IPv4 Configuration''' tab - click Add - enter net0 / active tick / #?.device / Unit 0 / IP Mode = manual (important if default DHCP does not work automatically) Make sure that any extra network names (e.g. eth1 or net1) should be deleted. If net0 already st previously, change net0 so that it shows associated with the appropriate device name like atheros5000.device or realtek8180.device. Having two entries here will cause sub-net problems. * Go to '''Wireless''' tab and click on "Add" button. * Insert network name (SSID your wireless network name use wirelessmanager to get it), select right "encyption" that is most likely "WPA". * Key Type set as "Passphrase". i.e. type in your password for your router (aka access key). * Unselect (no tick) "hidden" if it is selected, then apply. You may have to tick it if wireless does not work. * Finally, Save and '''reboot'''. For the best chance of success, set networking to start at boot, and then reboot with the USB adapter plugged in. ===USB Ethernet=== Open SYS:Prefs/Network and in the IPv4 Configuration tag (top table covers your usb stick) * click Add button * set Name as net0 * Tick Active box * enter the usb-ethernet.device e.g. dm9601eth.device, usbpegasus.device or usbasixeth.device use SYS:c/devlist, '''Scout''' or trident prefs to get the correct spelling * set Unit to 0 (which is usual but check the messages from the bottom of the Trident prefs whilst plugging the device in to determine the unit number otherwise) * IP Mode is set to Get address from DHCP (make sure your router is set right for that) '''or manual''' * IP Address of network card, i.e. 192.168.0.xx or 192.168.1.xx (xx being greater than 1) * Subnet netmask = 255.255.255.0 * click OK There can be sometimes be boot failures when using USB ethernet - plug the USB device in after boot and save the network prefs to make it work again. Lower part of IPv4 tab covers the router information * IP Mode Get address from DHCP '''or if manual settings''' * Gateway (IP Address of router) = usually 192.168.0.1 or 192.168.1.1 but see router manual to make sure. * first DNS = use 8.8.8.8, 208.67.222.222 (opendns) or 212.50.160.100 * second DNS = use 8.8.4.4, 208.67.220.220 (opendns) or 213.249.130.100 ===USB Tethering via Android smartphone=== Go to AROS Network Prefs (IPv4 configuration tab) and write type in "usbrndis.device" in the "device" textfield of "Interface" sub-window, which appears when you add a new device (or modify an existing one). Select "Start Network during system boot" and saved the configuration, the Connection is immediate no reboot is needed.<br> usbrndis.device is a resident device (virtually always there) in fact, a driver is not present in DEVS:Networks <br><br> Plug in USB cable, go to Android settings and enable "USB Tethering" <br> A reboot should not be necessary. When restarting AROS, the Smartphone deactivates the connection and to access the network again have to reactivate it before starting the browser. ===Solving Issues=== [[File:MyArosTCP.png|thumb|Aros network setup diagnostics - why does it not work?]] * In Network Preferences, have '''only one''' item in the IPv4 Configuration tab * If using manual settings, make sure all numbers are correct, especially for IP address of the card/usb (changing the last number in chain of four) * For any USB based networking, it is often necessary to save in Prefs/Network, reboot AROS and network support can begin * For wired, make sure that the LAN-cable is plugged in before starting the computer * If wireless, try getting closer to the router. * Switch off the encryption option from your router then try wifi, if successful then your ip/dns is ok. If not then your ip/dns settings are most probably wrong or need to use one or more opendns numbers * Replace detachable wireless antenna (best wireless option to buy if you can) with a stronger antenna ie. 5&nbsp;dBi or 7&nbsp;dBi * Try with another computer/laptop/machine Program Error C:WirelessManager * Test with another OS * Check that Wifi works before changeover (if possible) * Check that socket and card are working * Check if card is too new for laptop (date code on card MMYY blue askey date 2005-2007 etc) Are you connecting with the Router ? Check with protection off e.g. wps and wep to see if it makes a difference. For USB wireless - stopping and starting may be needed... <pre> ; $VER: AROSTCP-startnet 1.0 (01/08/06) ; AROSTCP-startnet (c) The AROS Dev Team. ; Run <NIL: >NIL: AROSTCP WaitForPort AROSTCP If NOT Warn ; echo "Stack online" Else echo "Wait for Stack Failed" EndIf ; stop and restart execute "sys:system/network/AROSTCP/s/stopnet" Run <NIL: >NIL: AROSTCP WaitForPort AROSTCP If NOT Warn ; echo "Stack online" Else echo "Wait for Stack Failed" EndIf run <NIL: >NIL: wirelessmanager realtek8180.device </pre> What IRQ number is assigned to the device? You can check with Tools/PCITool? It's possible the BIOS hasn't set the right IRQ number. If you have a Linux CD/DVD handy, could you check if it boots with the options "acpi=off noapic nolapic"? If the following does nothing, this will help us figure out why networking doesn't start automatically at boot open a shell and run the following commands: <pre> echo ${AROSTCP/AutoRun} echo ${AROSTCP/WirelessAutoRun} echo ${AROSTCP/WirelessDevice} </pre> Please report the output, typically it will look like this # True (explanation this variable is related to the "Start networking during system boot" checkbox in network prefs) # True () # Devs:networks/atheros5000.device unit 0 If there's a problem with the AROSTCP package. What's the output of this? ENV:sys/packages/AROSTCP should return a string = Sys:System/Network/AROSTCP By the way, a quicker way to check networking is working would be to run some shell commands such as: <pre> ping www.google.com ifconfig net0 </pre> The best way to list the available networks and diagnose / troubleshoot problems with connecting to a wireless network is to run WirelessManager manually. First uncheck the "Start networking during system boot" box in the Network prefs app, then save and reboot. Then run this in a shell: C:wirelessmanager atheros5000.device verbose or C:wirelessmanager realtek8180.device verbose and capture the output If the above does not help, could you edit the file SYS:System/Network/AROSTCP/S/Package-Startup, and change ">NIL:" to ">T:wifi.log" on the WirelessManager line and add this as well Wait 5? <pre> if ${AROSTCP/WirelessAutoRun} eq "True" Run QUIET "C:WirelessManager ${AROSTCP/WirelessDevice} >T:wifi.log" wait 5 EndIf </pre> Then save, reboot and post the log file (T:wifi.log) here. <pre> c:wirelessmanager atheros5000.device verbose Initializing interface 'atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Reading configuration file 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=7) 65 63 68 65 6c 6f 6e echelon PSK (ASCII passphrase) - hexdump_ascii(len=14): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='echelon' Then it just sits there. Not sure what a normal dump looks like, I don't see anything that looks wrong in the configuration. </pre> looks like the driver isn't working with that card. Has anyone else successfully used that exact model number (AR2413)? <pre> Initializing interface 'atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=7): 65 63 68 65 6c 6f 6e echelon PSK (ASCII passphrase) - hexdump_ascii(len=14): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='echelon' *** [wpa_sm_init] sm->pmksa=02c66fd4 *** Own MAC address: 00:01:36:15:ae:0c RSN: flushing PMKID list in the driver Setting scan request: 0 sec 100000 usec EAPOL: SUPP_PAE entering state DISCONNECTED EAPOL: Supplicant port status: Unauthorized EAPOL: KEY_RX entering state NO_KEY_RECEIVE EAPOL: SUPP_BE entering state INITIALIZE EAP: EAP entering state DISABLED EAPOL: Supplicant port status: Unauthorized EAPOL: Supplicant port status: Unauthorized Added interface atheros5000.device:0 State: DISCONNECTED -> SCANNING Started AP scan for wildcard SSID MLME: starting scan MLME: scan channel 1 (2412 MHz) sana2: sending MLME frame Then it stops. Does this mean the router is not authorizing this NIC? IRQ 4 (A) </pre> apparently locking up when the first frame is sent (a scan request). <pre> Devs/Networks/atheros5000.device:0 Initializing interface 'Devs/Networks/atheros5000.device:0' conf 'ENV:Wireless.prefs' driver 'default' ctrl_interface 'N/A' bridge 'N/A' Configuration file 'ENV:Wireless.prefs' -> 'ENV:Wireless.prefs' Reading configuration file 'ENV:Wireless.prefs' Line: 1 - start of a new network block ssid - hexdump_ascii(len=12): 41 69 72 4c 69 6e 6b 35 39 33 30 30 AirLink59300 PSK (ASCII passphrase) - hexdump_ascii(len=8): [REMOVED] key_mgmt: 0x2 PSK (from passphrase) - hexdump(len=32): [REMOVED] Priority group 0 id=0 ssid='AirLink59300' *** [wpa_sm_init] sm->pmksa=0224e444 *** Own MAC address: 00:1f:e1:42:e3:7a RSN: flushing PMKID list in the driver Setting scan request: 0 sec 100000 usec [eloop_reg_timeout] Timeout is at 1317686594.160000 EAPOL: SUPP_PAE entering state DISCONNECTED EAPOL: Supplicant port status: Unauthorized EAPOL: KEY_RX entering state NO_KEY_RECEIVE EAPOL: SUPP_BE entering state INITIALIZE EAP: EAP entering state DISABLED EAPOL: Supplicant port status: Unauthorized EAPOL: Supplicant port status: Unauthorized [eloop_reg_timeout] Timeout is at 1317686595.060000 [eloop_reg_timeout] Timeout is at 1317686604.060000 Added interface Devs/Networks/atheros5000.device:0 [eloop_run] Starting State: DISCONNECTED -> SCANNING Starting AP scan for wildcard SSID MLME: starting scan [eloop_reg_timeout] Timeout is at 1317686594.160001 MLME: scan channel 1 (2412 MHz) [eloop_reg_timeout] Timeout is at 1317686594.193000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.233000 MLME: scan channel 2 (2417 MHz) [eloop_reg_timeout] Timeout is at 1317686594.253000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.293000 MLME: scan channel 3 (2422 MHz) [eloop_reg_timeout] Timeout is at 1317686594.333000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.373000 MLME: scan channel 4 (2427 MHz) [eloop_reg_timeout] Timeout is at 1317686594.393000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.433000 MLME: scan channel 5 (2432 MHz) [eloop_reg_timeout] Timeout is at 1317686594.473000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.513000 MLME: scan channel 6 (2437 MHz) [eloop_reg_timeout] Timeout is at 1317686594.553000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.573000 MLME: scan channel 7 (2442 MHz) [eloop_reg_timeout] Timeout is at 1317686594.613000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.653000 MLME: scan channel 8 (2447 MHz) [eloop_reg_timeout] Timeout is at 1317686594.693000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.713000 MLME: scan channel 9 (2452 MHz) [eloop_reg_timeout] Timeout is at 1317686594.753000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.793000 MLME: scan channel 10 (2457 MHz) [eloop_reg_timeout] Timeout is at 1317686594.833000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.853000 MLME: scan channel 11 (2462 MHz) [eloop_reg_timeout] Timeout is at 1317686594.893000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686594.933000 MLME: scan channel 12 (2467 MHz) [eloop_reg_timeout] Timeout is at 1317686594.973000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.013000 MLME: scan channel 13 (2472 MHz) [eloop_reg_timeout] Timeout is at 1317686595.033000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.073000 EAPOL: disable timer tick EAPOL: Supplicant port status: Unauthorized MLME: scan channel 14 (2484 MHz) [eloop_reg_timeout] Timeout is at 1317686595.113000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.153000 MLME: scan channel 1 (2412 MHz) [eloop_reg_timeout] Timeout is at 1317686595.193000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.213000 MLME: scan channel 2 (2417 MHz) [eloop_reg_timeout] Timeout is at 1317686595.253000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.293000 MLME: scan channel 3 (2422 MHz) [eloop_reg_timeout] Timeout is at 1317686595.333000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.353000 MLME: scan channel 4 (2427 MHz) [eloop_reg_timeout] Timeout is at 1317686595.393000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.433000 MLME: scan channel 5 (2432 MHz) [eloop_reg_timeout] Timeout is at 1317686595.473000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.493000 MLME: scan channel 6 (2437 MHz) [eloop_reg_timeout] Timeout is at 1317686595.533000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.573000 MLME: scan channel 7 (2442 MHz) [eloop_reg_timeout] Timeout is at 1317686595.613000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.653000 MLME: scan channel 8 (2447 MHz) [eloop_reg_timeout] Timeout is at 1317686595.673000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.713000 MLME: scan channel 9 (2452 MHz) [eloop_reg_timeout] Timeout is at 1317686595.753000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.793000 MLME: scan channel 10 (2457 MHz) [eloop_reg_timeout] Timeout is at 1317686595.833000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.853000 MLME: scan channel 11 (2462 MHz) [eloop_reg_timeout] Timeout is at 1317686595.893000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.933000 MLME: scan channel 12 (2467 MHz) [eloop_reg_timeout] Timeout is at 1317686595.973000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686595.993000 MLME: scan channel 13 (2472 MHz) [eloop_reg_timeout] Timeout is at 1317686596.033000 sana2: sending MLME frame [eloop_reg_timeout] Timeout is at 1317686596.073000 MLME: scan completed </pre> Is your network hidden? If so, did you enable the 'Hidden' checkbox in the network prefs? What distro version are you using? <pre> "ENV:sys/wireless.prefs" looks like this: network={ ssid="testadhoc" key_mgmt=NONE wep_key0="12345" wep_tx_keyidx=0 } </pre> If your router doesn't broadcast its SSID (hidden), you need to add this option to the network block of the wpa_supplicant.conf on your aros machine and make changes after # Example blocks: scan_ssid=1 Here's a full description of all the [http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/wpa_supplicant.conf config file options]. <pre> ap_scan=1 network={ ssid="YOURESSID" scan_ssid=1 proto=RSN key_mgmt=WPA-PSK pairwise=CCMP group=CCMP psk=YOURPASSWORD } </pre> <pre> filter_ssids=1 ap_scan=2 network={ ssid="REMOVED" scan_ssid=1 bssid=REMOVED priority=100 mode=0 proto=RSN key_mgmt=WPA-PSK auth_alg=OPEN pairwise=CCMP group=CCMP psk=REMOVED } </pre> Error 6: Couldn't resolve host name. Check Scout -> Devices and look at the device that you are using, in the OCnt column it should state 2 which means AROSTCP and Wirelessmanager are both accessing this driver. If 0 or 1, then uncheck the checkbox in Network prefs for starting networking at boot, save and reboot. Then run this is the shell: C:WirelessManager realtek8180.device unit 0 some quirks setting up the wireless network as well 1) it's far better setting up either the wired OR the wireless network adapter as net0:, or weird things happen 2) it's better using fixed IP on the local network instead of DHCP 3) network setting must be placed in network setting panel in /prefs, using the wirelessmanager helped me finding available SSIDs, but not actually connecting to them once done, reboot. If previous setup is proving problematic <pre > SYS:Prefs/Env-Archive/Wireless.prefs SYS:Prefs/Env-Archive/Zune/OWB.config SYS:Prefs/Env-Archive/Zune/global.config SYS:Prefs/Env-Archive/AROSTCP/WirelessDevice SYS:Prefs/Env-Archive/AROSTCP/db/Interfaces </pre > Make a copy of these files and restore in case of problems. Please try this test to check if you can connect to your router, ie established that the WiFi layer is working ̊̊̊̊Boot with networking disabled, by make sure that "Start networking at boot" in Network Prefs is unchecked (no tick). ̊ Run this in a shell: C:WirelessManager atheros5000.device VERBOSE ̊If the output of that command is too long to summarise here, you can redirect it to a file by adding >RAM:wifi.log to the end, then attach or paste that file here. try running "status" in the shell and check that AROSTCP is listed/running If AROStcp is not showing, then AROSTCP is not running. attempted to start it by clicking Use or Save in network prefs, or checking the "start networking at boot" box or typing into a shell. Execute SYS:System/Network/AROSTCP/s/startnet (run Status again afterwards). The "cannot resolve hostname" will appear if you are blocked on the wifi network by the router as well as aros not being able to assign correct network address. One way of testing this might be to disable the firewall in the router. you might also check the router how it sees the attempts aros do to speak to it. The easiest way to do that would be to manually give aros an IP number in the routers accepted range. and see if it shows up at all within the router. Tests that can be undertaken to determine correct settings and functions pciinfo sanautil -d broadcom4400.device status <pre > ping <router-address> e.g. 192.168.0.1 (aka inet) or 80.237.146.33 (www.amiganews.de) ifconfig net0 ifconfig net0 up extras:networking/utils/sanautil/sanautil -d atheros5000.device status WirelessManager atheros5000.device verbose >RAM:wifi.log ;to send the log to RAM disk to be read easier or if detected, Run WirelessManager atheros5000.device >NIL: Run WirelessManager atheros5000.device ssid="mynet1" >NIL: C:WirelessManager realtek8180.device unit 0 </pre > Please look at the task list in Scout, and check if WirelessManager and AROSTCP are running. Also look at the device list in Scout to check if realtek8180.device is open. start tools/debug/sashimi, maybe it shows some debug messages when disconnection happens. Firstly, let's take a look at what your setup most likely looks like, assuming you use a router. See diagram below: <pre> Internet <---------> home router <---------> computer -----------external IP------------------internal IP------------- </pre> Okay, so what am I trying to show you with that diagram. A few things. Firstly, the IP address that connects you to the Internet is not the same one that connects you to your router. What happens is that your computer doesn't have a direct connection to the Internet, instead your router connects to the Internet, and your computer connects to the router. You can see the external and internal IP addresses in these example settings... * Default Gateway : 76.91.64.1 (external IP for ISP/Internet host) * IP Address : 76.91.71.184 (external IP for home router) * IP Address : 192.168.0.1 (internal IP for home router) * Address = 192.168.0.161 (internal IP for computer) As you can see, there are two internal IP addresses and two external IP addresses. This is because there is a client/server relationship, effectively one address is for the service (server) and one address is for the device trying to access that service (client). The server addresses in your case are 76.91.64.1 (your ISP's address, serving the Internet), and 192.168.0.1 (your home router's address, serving your home network). The term gateway applies here, they are your gateway to those services. Subnet masks are used along with IP addresses to determine which IP addresses are allowed access to a network. I did learn the more in-depth rules about subnet masks once (watched a CCNA vid), but I've forgotten about it. The basic level of understanding you'll need is easy to remember though. A subnet mask value of 255 means that portion of the IP address must stay constant, whereas a subnet value of 0 means any unassigned value up to 255 is allowed in the IP address. By far the most common subnet value is 255.255.255.0. What this means is that the first three parts of the IP address you use to connect to a service must stay the same as the server/gateway address, and only the last section can change. So if your router's internal IP address is 192.168.0.1, and the subnet mask is 255.255.255.0, the only addresses that will be allowed to be used on that network are between 192.168.0.2 and 192.168.0.255 (I think 192.168.0.0 is reserved for other uses). Final point to make is about DHCP (a.k.a. dynamic IP) vs static IP. A server/router using DHCP gives a device that connects to it an address within the acceptable range. It usually starts with the lowest numbered free address, so with your router it'll give the first device that connects to it 192.168.0.2, the next device 192.168.0.3, and so on. Static IP addresses are where you set the IP address you want to connect with in advance. When using static IP addresses on a router where DHCP is active, it's good to use a high number to avoid conflicts with other devices that are connected to your network, to reduce the risk that both devices will try using the same IP. That's why your current choice of 192.168.0.161 is good, unless you have over 159 devices connected on your current network! Okay, so what's the next step. Well, if you can use ping, I'd suggest pinging 192.168.0.1. If you get a positive response it means you're connected to your router, if you don't get a response it means the connection between your router and your computer is at fault. Documentation on configuring the AROSTCP environment further can be found [http://en.wikibooks.org/wiki/Aros/User/Networking here] ===File Sharing=== As AROS knows only a few filesystems (FFS, OFS, SFS, PFS (amiga only), FAT12, 16, 32, Microsoft NTFS (windows), UDF (Blu-ray)). The others in regular use like MacOSX hfs+, Linux ext2/ext3 and ext4, Haiku BeFS provide a problem in transferring files. Linux can access SFS partitions but it needs to be compiled. The latest full source are [http://home.elka.pw.edu.pl/~mszyprow/programy/asfs/ here]. It compiled fine with a 2.6.30 kernel in Puppy Linux 4.31. An alternative, is to use a FAT32 partition to share. Setup first with a 2G FAT32 partition for sharing, and the rest of the space as SFS for an Aros install. It works very well. Files could be transferred via TCP internet network. ====SMB2/3==== With Windows you can share one folder or all folders of the "Public" user. On Windows what is important is to enable sharing (Network and Sharing Center). AROS Mountlist should look lke this <pre> Handler = L:smb2-handler StackSize = 65536 Priority = 5 GlobVec = -1 ACTIVATE=1 Startup = "smb://UserAcc:password@PCShare/Sharefolder" </pre> which could also be "smb://UserPC:password@192.168.x.x/Public" or "smb://UserPC:password@Name-PC/Public" so "smb://UserPC:password@192.168.1.158/Folder" or "smb://UserPC:password@Name-PC/Folder" After you have configured a share generates a DOSDrivers it is named "SMB0" which includes the setting, and at each reboot it is Mounted. You can still delete the DOSDriver by hand, is located in Storage/DOSDrivers, the file "ServerAutoMounts", in ENV:AROSTCP which indicates the DOSDriver to be mounted, should also be deleted. The per-mount files are written to ENV:SMB or SYS:Storage/DOSDrivers. There is also additional file ENV:AROSTCP/ServerAutoMounts which states what will be presented to the end user. ====Old SMBFS==== e.g. to connect to a NAS share such as \\NASBOX\Shared use -: SMBFS WORKGROUP=<YOUR WORKGROUP NAME> VOLUME=<AROS volume name to use>: SERVICE=<UNC Path to connect to> SMBFS WORKGROUP=MYNET VOLUME=Shared: SERVICE=//NASBOX/Shared And you will then have an icon appear on your desktop for the volume name you have chosen. You can put the above script into wbstartup or give it an icon, change it to a 'project' and give it the default tool c:iconx Open a shell and type copy sys:script.info "sys:wbstartup/YOURSCRIPTNAME.info" This should create an icon for your script file. Now right-click on your script and select 'information'. Change 'tool' to 'project', put 'c:iconx' into the 'default tool' box, click save The reason being that scripts need to be opened with 'execute SCRIPTNAME' (or 'iconx') whereas the programs started from wbstartup are opened using 'run PROGRAMNAME'. It's the same as trying to start a command-line tool from the workbench by double-clicking it. ====Setup ISO images within AROS==== Use [http://archives.aros-exec.org/index.php?function=browse&cat=driver/storage DiskImage] which supports many cd image formats ISO, CCD, MDF/MDS, CUE/BIN, NRG and UIF. To mount CD or DVD images use below.... <pre > # Rename your iso 'Unit0' (note no extension). # Do 'View/All files' on you Aros partition. You should now see a folder called 'Diskimages'. Copy your renamed iso to there. (Alternatively, you could type at the shell 'assign FDSK: xxx', where xxx is the location of your iso.) # From the shell, type 'mount CD0:' and the iso should appear on the Wanderer desktop. You can now access it like a real disk. </pre > assign devname: dismount Assign DOSVOLUME: remove [http://aminet.net/package/disk/misc/unmount-0.1 unmount] most filesystems work but SFS lacks support for ACTION_DIE packet If you are using an IcAros install, the startup scripts are set up to wipe the Diskimages directory on boot, so its worth keeping a second copy of the iso somewhere else. Alternatively, you could set up extra mountlists for additional iso images. I've made a file called iso1 in the Aros:devs directory that contains the following text: <pre> /* Entry for ISO image */ ISO1: FileSystem = cdrom.handler Device = fdsk.device Unit = 1 LowCyl = 0 HighCyl = 0 Surfaces = 1 BlocksPerTrack = 1 DOSType = 0x41434400 Activate = 1 # </pre> Then I just need an iso called 'Unit1' (corresponding to the 'Unit = 1' entry in the mountlist) in Diskimages (or wherever I assign FDSK: to) and to mount I type in at the shell: Mount iso1: from devs:iso1 Of course, if you create mountlists for ISO2, ISO3:, etc. (with the corresponding change to the 'Unit = ' line) you can have as many isos mounted as you wish. I just call mine ISO1: etc. to distinguish them from the real CD drives ==Video Guides== Video demonstrations and tutorials covering: :00. '''Introduction''' ::[https://www.youtube.com/@jamesmattson6813/videos Various Aros Installs], ::[https://www.youtube.com/embed/j8EmSEby0Rg AROS repo in gource, view of AROS dev commits from 1997 to 2025], [http://www.youtube.com/watch?v=Vx_zqlBow40&feature=related Gource view of AROS 1997 up to 2009], ::[http://www.youtube.com/watch?v=s1RsvEm7UrU Why an Amiga OS in 2011], ::[https://www.youtube.com/watch?v=1W886mheV74&pp=ygUPYW1pZ2EgYXJvcyAyMDI2 Johan Grip on early days of AROS x86], [https://www.youtube.com/watch?v=mXaKDhtTTqQ&t=14s&pp=ygUPYW1pZ2EgYXJvcyAyMDI2 Michel Schulz on Aros and PiStorm], :01. '''Installation''' ::[https://www.youtube.com/watch?v=M7YjufrJqDs Aros One install], [https://www.youtube.com/watch?v=iIMguHTdC5E Aros One USB install], [https://www.youtube.com/watch?v=ZNXauy5m5Wc Aros One install], [http://vimeo.com/11013489 Modify Grub boot], ::[http://www.youtube.com/watch?v=wyQVeyXIywc&feature=channel iMica Silent Pt3], [http://www.youtube.com/watch?v=o2AnkoflY14 Wipe whole drive and Install - warning loss of data on drive], ::[http://www.youtube.com/watch?v=OVXm6_-witQ VirtualBox install], [ VMware install], ::[http://www.youtube.com/watch?v=0k2PEmT8I14 Broadway AROS Install], ::[https://www.youtube.com/watch?v=PtDiXhjSIfs Is Aros Icaros a choice?], ::[ driver install], ::[http://www.vimeo.com/10491104 HDAudio install but needs account], [], :02. '''Amiga Basics''' ::[http://www.youtube.com/watch?v=TY8mWxwzH5o Screens tutorial], ::[https://m.youtube.com/user/AMIGASYSTEM/videos General], [ Dos Scripts tutorial], [http://www.youtube.com/watch?v=hPT7SmVEpjc OS 1.2], [http://www.youtube.com/watch?v=n6kX3FqH8Ww&feature=related OS 1.3], :03. '''Customisation demos''' ::[https://www.youtube.com/@AMIGASYSTEM/videos Prefs tutorial], [ Decoration tutorial], [http://www.youtube.com/watch?v=Dn5C8G3aDXU Scalos], :04. '''Setting up''' internet access and surfing the web, FTP, IRC and Mail apps ::[ Network Prefs], [ AirCOS tutorial], [ jabberwocky tutorial], :05. '''Native bundled Games and Applications''' ::[http://www.youtube.com/watch?v=aYlFv2B-VXc 3D Games], [http://www.youtube.com/watch?v=MXK7wwhd-R0 Latest Games], [http://www.youtube.com/watch?v=RUgiVThv23Q&feature=mfu_in_order&list=UL PrBoom GL], [http://www.youtube.com/watch?v=0s7u8TPy7V4 Assault Cubes], [http://www.youtube.com/watch?v=fih6aCXKeqs Cube 2], [http://www.youtube.com/watch?v=-X0ay0MGOms DosBox on Aros], [http://www.youtube.com/watch?v=7nKduDjf14k Oct 2010], ::[http://www.youtube.com/watch?v=FziV2z_uxnQ Apps Pt 1], [http://www.youtube.com/watch?v=xs37_nfa5CI Apps Pt 2], [http://www.youtube.com/watch?v=Bn59_VvbQR0&feature=related Apps Pt 3], ::DOpus4 [http://www.youtube.com/watch?v=aSRybWjrrME DOpus 4], ::Milkytracker [http://www.youtube.com/watch?v=VxBOEPzpdKg&feature=related Laying Down Base Tracks], ::[http://www.youtube.com/watch?v=k2uKQ0-ieOE Audio Evolution 4 in action], [http://www.youtube.com/watch?v=Zq4r9k0_jZI Quick Videos], ::[http://www.youtube.com/watch?v=gGKCFZcIc0I&feature=related ScreenRecorder], [http://www.youtube.com/watch?v=974c2e-Fqak&feature=related TV out Tests], ::[http://www.youtube.com/watch?v=fjq8ct5d5IY AmiFIG], [http://www.youtube.com/watch?v=h0rHvPhYJo4&feature=youtu.be ZuneFIG], ::[http://wiki.povray.org/content/Documentation:Tutorial_Section_1 POVray Tutorial 1], ::[http://www.youtube.com/watch?v=Jk-ZNLfJsvQ pt 1, jan. 2008], [http://www.youtube.com/watch?v=nWRy33g1R7Y pt 2, feb. 2009], [http://www.youtube.com/watch?v=r5PbhCtm4vE pt 3, feb. 2010], ::[https://www.youtube.com/watch?v=G7_FJUoQ89o Hollywood programming], [], [], [], ::[], [], [], ::[], [], [], ::[], [], [], :06. '''Commercial software available''' ::[http://www.youtube.com/watch?v=fKXY9B4R43s AntiryadGX 3D Game Editor], ::[http://www.youtube.com/watch?v=TMS9NDzwm5U BOH indie Game], :07. '''Running classic amiga apps and games''' :: Amiberry [], [], ::[http://vmwaros.blogspot.com/2008/11/introducing-amibridge.html Intro Amibridge], [http://www.youtube.com/watch?v=ee2PWvCZeLo Old Amiga Apps], [http://www.youtube.com/watch?v=ee2PWvCZeLo Why Janus UAE is good], ::[https://www.youtube.com/watch?v=VhlsNSYSuDg DPaint tutorial] ::[http://vmwaros.blogspot.com/2009/11/can-icaros-play-my-amiga-games-and-why.html Play Amiga Games], [https://www.youtube.com/watch?v=XTaZCNOvCnE], ::[http://www.youtube.com/watch?v=tMehS77LXQ4 Pagestream Introduction], [http://www.youtube.com/watch?v=284-w3hTzII Pagestream Tutorial 1], [http://www.youtube.com/watch?v=mlwEGwhZzl4 Pagestream Tutorial 2], ::[http://www.youtube.com/watch?v=iIcrIjPOctc Catweasel Mk4 PCI Part 1] and [http://www.youtube.com/watch?v=BaitHeL6bEA Part 2], :08. '''Misc and History''' ::[http://www.youtube.com/watch?v=d6mDXKU29w0 Mum uses old AmigaOS Workbench 1.1 (1986)], [http://www.youtube.com/watch?v=DaRkacQ-YMg Why an Amiga 500 (1987)], [http://www.youtube.com/watch?v=k5CYsgVCzYY an Amiga 2000 (1987)], :09. '''Misc Shows and Events''' ::[http://www.youtube.com/watch?v=klgVSWKs4kE VCF 2010], [https://www.youtube.com/watch?v=eQ3d5qR-Hv8 24:06 Jason McMullan at amiwest 2012 about AROS], [https://www.youtube.com/watch?v=jpQO7XSfAv4 Aros SMP multi core amiwest 2013], [], [https://www.youtube.com/watch?v=gFRtAAmiFbE], [https://www.youtube.com/watch?v=DjdUEyjx8GM], [https://www.youtube.com/watch?v=ydYDqZQpim8], [], [https://www.youtube.com/@uminekoshouten/featured], [https://www.youtube.com/shorts/NfoY023w-vE], :10. ::[https://www.youtube.com/shorts/6qJTNW4-6GY] ===History=== The project was originally started by a small group of Amiga [http://www.amigahistory.co.uk/aros.html enthusiasts] in 1995. These individuals were mainly computer-based college university students at the start, though that student trend has diminished since. An interview with Aaron Digulla [http://arosshow.blogspot.com/2006/12/interview-with-aaron-digulla-who.html here] * 1992 Commodore folds * 1996-1998 much of the early years was concerned with exec, dos and intuition libraries. * Early 1999, Haage & Partner used parts of the AROS code in AmigaOS 3.9. * March 2001, floppy disk images of AROS became available. * Early 2002, AROS changed its name from Amiga Replacement Operating System to Amiga Research Operating System * June 2002, AROS devs decided to use Zune (MUI 3.8 rewrite) as the GUI system. * November 2002, Eric Schwartz drew Kitty for AROS usage. * Early 2003, AROS.org underwent a graphics facelift. * Late 2003, GCC C compiler arrived. * Early 2004, Aros-Exec opened. * Early 2005, Aros Max bootable CD arrived. * Late 2005, SFS filesystem ported and allowed fast access to apps and network support arrived * Early 2007, AROS.org underwent another graphics facelift. * Mid-2007, AROS changed to AROS Research Operating System after A.Inc. sued Hyperion with a trademark violation. * Late 2007, the hard disk installer added and VmwAROS (later called Icaros Desktop) distro launched. * Early 2009, Our first usable web browser (OWB) * September 2010, first wireless support appears and AspireOS started as a distro * Early 2012, the first paper-cut bugfix and Fab's Odyssey Web Browser ported * Early 2014, backport of most features of ABIv1 into mainstream everyday use (Icaros 2.0 and above) * 2015 work started on using the extra cores of the PI 2 * Early 2017, work started on utilising the addition cores on modern CPUs starting with the 64bit x86 version * Mid-2017, m68k port optimized for the Vampire 2 / Apollo accelerators (68080 AMMX FPGA) * 2018 The old AROS Exec website closed and a new one opened * 2019 AROS One distribution started and now with USB install version * Early 2021, backport of more features of ABIv1 into mainstream everyday ABIv0 (Aros One 1.5 and above) * 2025 year of 64bit pc builds and porting 32bit applications to 64bit ABIv11 * 2026 update to 2015 and earlier [https://www.youtube.com/watch?v=6FKTL068ULM&pp=ygUPYXJvcyBhbWlnYSAyMDI2 nvidia nouveau driver] ===Bounties=== To help inspire developers with both ideas and monetary incentives, rewards are offered for the successful completion of "bounties" (requests for missing/new functionality) chosen by the community and handled by [http://power2people.org power2people] (formerly done by TeamAROS). A monthly option is [http://www.power2people.org/funds/aros/ here]. Future goals for AROS include expanding its underlying retargetability to support even more diverse architectures, provide memory protection features and user level file security, SMP and many other wonderful features missing from AmigaOS &mdash; while still providing as much source level compatibility as is possible (however it is accepted that to achieve some goals code certain things may require a little recoding). [http://www.ohloh.net/p/aros/contributors Developers] come and go as with any open source effort and we would like to thank them for their efforts... ;1996-2000:In DigullaA (coordinator), GripJ, TempletonI (BSD), SchulzM, RittauS, voordenDagL, HolmM, JohanssonT, VanIngelgomH, SteigerwaldM, BortasP, deJongK, AlfredssonJ, InnocentiB, ;2001-2005:In [http://chodorowski.com/adam/aros.html ChodorowskiA], StegerG, BergerS, HeutlingS, AlemagnaF (gcc), VerhaegenS (rexx), KielH, MatheussenKS (CAMD), SzczygielskiP, ErikssonP, LeCorfecD (Zune), BauerS (Zune), FurlongW, GustafssonJ, AndrewsN, CafferkeyN, GierichM (jpeg), PattonJ, ParsonsM, DietrichJ, SeilerT, BischoffL, LorentzenNH, AdamO, BerglundH, SmithP, HolmenD, BlomM, ;2006-2010:In FedinP, RusslerM, SzymczykS (owb), SmiechowiczK (openGL), WeissM, NorrisR, BrunnerO, WiszkowskiT, GreppinA, [http://www.fukt.bsnet.se/~bearsoft/ Bearsoft Björn Screwelius], ErbY, CharletF, HodgesC, [http://aros-exec.org/modules/newbb/viewtopic.php?topic_id=4819&forum=18&post_id=43103#forumpost43103 HokstadV], McMullanJ (m68k), WilenT (m68k), ;2011- :In MuijzenbergPHvanden, ALB42, JonesEM, weiju, DizzyofCRN, wawa, miker, * 1996 - The linux hosted version for i386 was the first to arrive * 1998 - i386, The native version for i386-based PC AT computers and compatibles. * 2004 - x86/64, The native version for 64-bit (x86_64, amd64) PC computers. * 2008 - sam440/ppc, The native version for Sam440EP, Sam440EP Flex and Sam460ex computers. * 2009 - efika, The native version for PowerPC Efika computers. * 2010 - m68k, The native version for m68k Amigas or WinUAE * 2013 - raspi/armfh, early native version for ARMv6 based Raspberry Pi computers. * 2017 - x86/64bit smp Debugging capture serial debug at all (especially with sysdebug=all or --sysdebug=all) to see it displayed on screen * yes, usb -> rs232 adapters can work most of the time, some of the cheapest ones are not fully compatible with all rs232 devices to capture to another device * you will need a null modem cable (or a null modem adapter usually female to female) in addition to the usb -> rs232 adapter (usb adapter is a normal modem ie. the pins are not crossed over) Normal modem cable - straight connection DCE <pre> Pin 2 -> Pin 2 RXD Pin 3 -> Pin 3 TXD Pin 5 -> Pin 5 GND </pre> Null modem cable connections DTE <pre> Pin 2 -> Pin 3 Pin 3 -> Pin 2 Pin 5 -> Pin 5 </pre> (9pole SUB-D) <pre> serial ser: (amiga/aros) tty2 tty1USB0 (linux) COM1 (windows) (depends on the os being used) speed baud transfer rate 9600 38400 lower baud might be more successful data bits 8 stop bits 1 parity none handshaking flow control - none xon/xoff (most likely) rts/cts dsr/dtr (pins not connected so should not work) </pre> *You cannot use compiled aros X86-64 bit software (when ready) on aros X86 32bit. PPC compiled software on X86 and so on. *68k is tested with the UAE emulator (WinUAE) but some tests are done on native 68000 based Amigas and others. *PPC support is very limited to certain devices. If you use the WBStartup, you have to delete the other icons in the folder (readme etc..) and you have to add in the Icon Tooltype the parameter DONOTWAIT If you use user-startup instead, you need to add the attached command "after assignment to LUA" C:WBRun DH1:Extras/Utility/WeatherBar/WeatherBar >NIL: Change the command to match your WeatherBar path. <pre> PATH sys:Utilities/WeatherBar ADD run >nil: lua:amilua weatherforecast.lua </pre> To enter data your Country or City, ist with city_id numbers can be found [http://bulk.openweathermap.org/sample/city.list.json.gz here] or you need to go to [https://www.bbc.com/weather BBC Weather], once you type the name of your city or town in the appropriate tab, and press enter, the 7 numbers to be added in the "WeatherBar" will appear on the Browser url address bar above Unicode v16.0 emojis are not supported but [https://github.com/jens-maus/libcodesets codesets.library] provides <pre> internally supported (hardcoded) charsets/codesets are: (conversions are possible from and to each codeset): AmigaPL – Polish (Amiga) Amiga-1251 – Cyrillic (Amiga) ISO-8859-1 – Western European ISO-8859-1+Euro – West European (with EURO) ISO-8859-2 – Central/East European ISO-8859-3 – South European ISO-8859-4 – North European ISO-8859-5 – Slavic languages ISO-8859-9 – Turkish ISO-8859-15 – West European II ISO-8859-16 – South-Eastern European KOI8-R – Russian UTF-8 – Unicode In addition, external charset table files can be stored in LIBS:Charsets or loaded by an application from PROGDIR:Charsets. The charset files included with this distributions are: IBM866 – Cyrillic (cp866) ISO-8859-7 – Greek (LatinGreek) ISO-8859-10 – Nordic (Latin 6) windows-1250 – Central/East Europe (Windows) windows-1251 – Cyrillic (Windows) windows-1252 – West European (Windows) </pre> Icaros 2.3 USB image needs a header stripped so it can work correctly dd bs=512 skip=1 status=progress if=icaros_light_2-3-0_pendrive.bin of=/dev/sdxy && sync Scalos <pre> ------------------------------- { "STRING", "ID/K,TEXT/K,SRC/K,TEXTPEN/K,HALIGN/K,STYLE/K,FONT/K,VALIGN/K", HALIGN LEFT | CENTER | RIGHT VALIGN TOP | CENTER | BOTTOM STYLE NORMAL | BOLD | ITALIC | BOLDITALIC FONT // font specification - format: "fontname.font/size" ------------------------------- arguments for STRING SRC "diskstate", "diskusage", "diskusagefree", "diskusageinuse", "diskusagepercent", "fibfilename", "filecomment", "filedate", "fileprotection", "filesize", "filetime", "filetypestring", "iconname", "linktarget", "plugin" pluginname <optional plugin arguments> "versionstring", "volumecreateddate", "volumecreatedtime", "volumeordevicename", ------------------------------- arguments for HIDE "novolumenode", "isempty" (some STRING) ------------------------------- all internal commands: "about", "backdrop", "cleanup", "cleanupbyname", "cleanupbydate", "cleanupbysize", "cleanupbytype", "clearselection", "clone", "close", "copy", "cut", "delete", "emptytrashcan", "executecommand", "formatdisk", "iconify", "iconinfo", "lastmsg", "leaveout", "makedir", "open", "parent", "paste", "putaway", "quit", "redraw", "redrawall", "rename", "reset", "selectall", "showallfiles", "showonlyicons", "shutdown", "sizetofit", "snapshot", "snapshotall", "snapshotwindow", "unsnapshot", "update", "updateall", "viewbydate", "viewbyicon", "viewbysize", "viewbytype", "viewbytext", </pre> {{status|50%}} {{BookCat}} aaxsuwygforgl6mgxee3mv9jnp9gk3p Choosing The Right File Format/Quick Guide 0 63531 4656745 3236604 2026-08-08T11:49:03Z DuLithgow 6401 4656745 wikitext text/x-wiki == Quick Guide to recommended formats == For an explanation of terminology read the section "Formats for storing electronic information". {| class="wikitable" ! Data Type ! Preferred formats ! Common OpenSource applications ! Common proprietary applications |- ! Documents | * Plain text, encoded with either [[w:ASCII|ASCII]] (limited to the English alphabet) or [[w:Unicode|Unicode]] [[w:UTF-8|UTF-8]] * [[w:Rich Text Format|RTF]] (Rich Text Format) - Proprietary, open specification by Microsoft * [[w:Portable Document Format|PDF]] (Portable Document Format) - Proprietary, open specification by Adobe * [[w:Encapsulated PostScript|EPS]] (Encapsulated Post Script) - Proprietary, open specification by Adobe * [[w:Office Open XML|OOXML]] aka DOCX (Office Open XML) - [[w:Standardization of Office Open XML|controversially non-proprietary]], open specification by Ecma International and ISO/IEC * [[w:OpenDocument|ODF]] (OpenDocument Format) - non-proprietary, open specification by OASIS and ISO | [http://notepad-plus.sourceforge.net/uk/about.php Notepad++], [http://www.gnome.org/projects/gedit/ gedit], kate, [[wikipedia:AbiWord|AbiWord]], [[wikipedia:LibreOffice_Writer|LibreOffice Writer]], KWord, PDFCreator, Geany, vim, emacs | Notepad, Adobe Acrobat, Corel WordPerfect, Microsoft Word, Star Office |- ! Spreadsheets | * ODS (OpenDocument Spreadsheet) - non-proprietary, open specification by OASIS and ISO * [[w:Office Open XML|OOXML]] aka XLSX (Office Open XML) - [[w:Standardization of Office Open XML|controversially non-proprietary]], open specification by Ecma International and ISO/IEC * [[w:Comma-separated values|CSV]] (Comma Separated Values) - Non-standard conventional format where a comma is used to separate each value | OpenOffice.org Calc, Lotus 1-2-3, Gnumeric, KSpread | Microsoft Excel, Corel Quattro Pro |- ! Web pages | * [[w:html|HTML]] (HyperText Markup Language) or [[w:xml|XML]] (eXtensible Markup Language) - Non-proprietary, open specifications by W3C | Abiword, OpenOffice2.0, Mozilla composer, Quanta, Geany | Dreamweaver, Adobe GoLive |- ! Graphics (raster & vector) | * [[w:png|PNG]] (Portable Network Graphic) - non-proprietary, open specification. Released as ISO/IEC 15948:2003 and W3C recommendation ([http://www.libpng.org/pub/png/spec/iso/ ref]) * [[w:Jpg|JPEG/JPG]] (Joint Photographic Experts Group) Non-proprietary, open specification by the Joint Photographic Experts Group * [http://djvulibre.djvuzone.org/ DjVuLibre] (pronounced "déjà vu") Non-proprietary, open specification by [http://www.lizardtech.com/ lizardtech] * [[w:Computer Graphics Metafile|CGM]] (Computer Graphics Metafile) - Non-proprietary, open specification by ISO/IEC * [[w:svg|SVG]] (Scalable Vector Graphic) - Non-proprietary, open specification by W3C * [[w:VRML|VRML]] (Virtual Reality Modeling Language) - Non-proprietary, open specification by W3C * [[w:DXF|DXF]] (Drawing eXchange Format) - Proprietary, partially open specification by Autodesk | [[w:GIMP|Gimp]], TuxPaint, OpenOffice.org Draw, [[w:Blender (software)|Blender]], [[w:Inkscape|Inkscape]], [[w:krita|krita]], kolourpaint | Adobe Photoshop, Adobe Illustrator, 3DStudioMax, AutoCAD |- ! Audio | Audio has containers with codecs in together they form a format. * Ogg container with vorbis, flac, speex and others * Flac container with flac audio. * MP3 Can contain mp3 audio. | Audacity, Ardour | Adobe Soundbooth |- ! Video | Video also has containers with codecs in together they form a format. * Ogg container with Theora * WebM container with VP8 video compression format and vorbis audio compression format * MP4 container with h.264 video compression format and mp3 audio compression format | Openshot , KDEnlive | Adobe Premiere , Windows Movie Maker |- ! Database | Databases do not use files in the normal sense, however a good database can output its content structured with [[w:SQL|SQL]] (Structured Query Language) - an ANSI/ISO standard. It is also important that it supports [[w:ODBC|ODBC]] (Open Data Base Connectivity) | PostgreSQL, MySQL, Firebird and InterBase, Kexi | Microsoft SQL Server, Oracle and [http://www.sybase.com Sybase] |- ! Encrypted files | * [[w:OpenPGP|OpenPGP]] - Non-proprietary, open specification, OpenSSL | [[w:gpg|GnuPG]] (GNU Privacy Guard) | PGP (Pretty Good Privacy) |} {{BookCat}} 2pzs7in12d7fwcganksvv5qxyaz13yh Template:Qr-em 10 90253 4656718 4469448 2026-08-07T22:17:13Z JJPMaster 3095725 add id 4656718 wikitext text/x-wiki {{ambox|type=content|text='''Was this page [[Wikibooks:Deletion policy#Speedy deletions|created by accident or as a test?]]''' Please improve the educational quality of this page, and clarify what the intentions are on the [[{{TALKPAGENAME}}|discussion page]] so other people may contribute. The page might be able to remain at [[WB:WIW|Wikibooks]] after 7 days when further development is likely. {{{{{|safesubst:}}}#if: {{{1|}}} | <div id="csd-template-reason" style="margin-left:1em;">''Additional comments: {{{1|}}}''</div>}} <div style="font-size:smaller; font-style:italic;">Please consider notifying the author(s) with {{{{{|safesubst:}}}tlxs|Query notice|{{FULLPAGENAME}}|<nowiki>~~~~</nowiki>}}</div> }}<includeonly>{{{{{|safesubst:}}}#ifeq:{{{example|no}}}|yes|| [[Category:{{event trigger|Candidates for speedy deletion|Queried pages{{{{{|safesubst:}}}#if:{{{date|}}}|{{{{{|safesubst:}}}!}}date={{{date}}}}}}}]]}}</includeonly><noinclude> {{documentation}} </noinclude> pm2hzpp5n9sq6ndotn78u7jyq854qwm 4656719 4656718 2026-08-07T22:18:24Z JJPMaster 3095725 not quite 4656719 wikitext text/x-wiki {{ambox|type=content|text='''Was this page [[Wikibooks:Deletion policy#Speedy deletions|created by accident or as a test?]]''' Please improve the educational quality of this page, and clarify what the intentions are on the [[{{TALKPAGENAME}}|discussion page]] so other people may contribute. The page might be able to remain at [[WB:WIW|Wikibooks]] after 7 days when further development is likely. {{{{{|safesubst:}}}#if: {{{1|}}} | <div style="margin-left:1em;">''Additional comments: <span id="csd-template-reason">{{{1|}}}</span>''</div>}} <div style="font-size:smaller; font-style:italic;">Please consider notifying the author(s) with {{{{{|safesubst:}}}tlxs|Query notice|{{FULLPAGENAME}}|<nowiki>~~~~</nowiki>}}</div> }}<includeonly>{{{{{|safesubst:}}}#ifeq:{{{example|no}}}|yes|| [[Category:{{event trigger|Candidates for speedy deletion|Queried pages{{{{{|safesubst:}}}#if:{{{date|}}}|{{{{{|safesubst:}}}!}}date={{{date}}}}}}}]]}}</includeonly><noinclude> {{documentation}} </noinclude> gcwyj74r455e873j3ggu6gen5xcsrt4 4656720 4656719 2026-08-07T22:19:51Z JJPMaster 3095725 change of plan 4656720 wikitext text/x-wiki {{ambox|type=content|text='''Was this page [[Wikibooks:Deletion policy#Speedy deletions|created by accident or as a test?]]''' Please improve the educational quality of this page, and clarify what the intentions are on the [[{{TALKPAGENAME}}|discussion page]] so other people may contribute. The page might be able to remain at [[WB:WIW|Wikibooks]] after 7 days when further development is likely. {{{{{|safesubst:}}}#if: {{{1|}}} | <div style="margin-left:1em;">''Additional comments: <span id="query-template-reason">{{{1|}}}</span>''</div>}} <div style="font-size:smaller; font-style:italic;">Please consider notifying the author(s) with {{{{{|safesubst:}}}tlxs|Query notice|{{FULLPAGENAME}}|<nowiki>~~~~</nowiki>}}</div> }}<includeonly>{{{{{|safesubst:}}}#ifeq:{{{example|no}}}|yes|| [[Category:{{event trigger|Candidates for speedy deletion|Queried pages{{{{{|safesubst:}}}#if:{{{date|}}}|{{{{{|safesubst:}}}!}}date={{{date}}}}}}}]]}}</includeonly><noinclude> {{documentation}} </noinclude> kkpdifn64lenw634ynlg9dr75s3vn5j Wikibooks:Reading room/General 4 112405 4656736 4656506 2026-08-08T08:10:45Z ArchiverBot 1227662 Bot: Archiving 1 thread (older than 60 days) to [[Wikibooks:Reading room/Archives/2026/June]] 4656736 wikitext text/x-wiki __NEWSECTIONLINK__ {{Discussion Rooms}} {{Shortcut|WB:CHAT|WB:RR/G|WB:GENERAL}} {{TOC left|limit=3}} {{User:MiszaBot/config |archive = Wikibooks:Reading room/Archives/%(year)d/%(monthname)s |algo = old(60d) |counter = 1 |minthreadstoarchive = 1 |minthreadsleft = 1 |key = 7a0ac23cf8049e4d9ff70cabb5649d1a }} Welcome to the '''General reading room'''. On this page, Wikibookians are free to talk about the Wikibooks project in general. For proposals for improving Wikibooks, see the [[../Proposals/]] reading room. {{clear}} [[Category:Reading room]] == June 2026 Wikimedia Café meetups regarding the English Wikipedia Editor Reflections project == <div class="border-box" style="background-color: var(--background-color-warning-subtle, #f8eaba); max-width: 875px; padding: 5px; border: 1px solid black; margin: 5px; color: var(--clr-dark)"> <div class="box" style="float:left; padding-top: 10px; padding-right: 10px; padding-left: 10px; padding-bottom: 10px;">[[File:Wikimedia Café logo in plain SVG format.svg|60px|alt=The logo for the Wikimedia Café]]</div> Hello! There will be two '''[https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9 Wikimedia Café]''' discussion opportunities during the last weekend of June. Both sessions will focus on the [https://en.wikipedia.org/wiki/Wikipedia:Editor_reflections English Wikipedia Editor Reflections project]. The featured guest in the Café will be [https://en.wikipedia.org/wiki/User:Clovermoss User:Clovermoss]. Participants may attend either or both sessions. #'''27 June 2026 15:00 UTC''' ([https://zonestamp.toolforge.org/1782572400 timestamp converter]), at a time friendly to the Americas, Africa, and Europe #'''28 June 2026 03:00 UTC''' ([https://zonestamp.toolforge.org/1782615600 timestamp converter]), at a time friendly to Asia and the Pacific Please see the Café page for more information, including [https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9#How_to_attend_the_session how to register]! <br /> [[File:Buntstifte Eberhard Faber crop 64h.jpg|860px|alt=cropped image of colored pencils]]</div> <span style="white-space:nowrap;">[[User:Pine|<span style="color:#01796f; text-shadow:#00BFFF 0 0 1.0em">↠Pine</span>]] [[User talk:Pine|<span style="color:DeepSkyBlue">(<b style="color:#FFDF00;text-shadow:#FFDF00 0 0 1.0em">✉</b>)</span>]]</span> 04:09, 15 June 2026 (UTC) == Images lost in Engineering Acoustics == Hello, I just made an updated PDF version of the wiki book on Engineering Acoustics. During this processes I realized that 19 Images are missing. I left the respective chapters out of the PDF version. You can find the missing files by opening https://en.wikibooks.org/wiki/Engineering_Acoustics/Print_version in your web browser and search for the text File: . I am not sure why they were deleted. But possibly they were moved to Wikimedia Commons first and deleted after that. I could try to restore the from the 16 years old PDF version but I lack any authorship information so I think we need to redraw all of them. Furthermore I realized that some of the rest of the images in the wiki book have got a very poor resolution Yours 18:22, 18 June 2026 (UTC) [[User:Dirk Hünniger|Dirk Hünniger]] ([[User talk:Dirk Hünniger|discuss]] • [[Special:Contributions/Dirk Hünniger|contribs]]) 18:22, 18 June 2026 (UTC) : {{re|Dirk Hünniger}} All media ([[:File: Acousticplanewave1.gif|A]][[:File: Acousticcontrolsurface.gif|B]][[:File: Acousticcontrolsurface.gif|C]][[:File: Acousticpressure1.gif|D]][[:File: Ra analogs.png|E]][[:File: Acoustic gen.png|F]][[:File: Enclosed Piston.png|G]][[:File: Equ1.jpg|H]][[:File: Equ3.gif|I]][[:File: Equ4.gif|K]][[:File: Comp.gif|L]][[:File: Example2holm1sol.JPG|M]][[:File: Exam2prob.JPG|N]][[:File: Exam2sol.JPG|O]][[:File: 1Dwave graph1.png|P]][[:File: String dwg.jpg|Q]][[:File: Equations1.jpg|R]][[:File: Equations2.jpg|S]]) except [[:File: Inductive law pass filter.jpg|Inductive law pass filter.jpg]] and [[:File: Open-twister.gif|Open-twister.gif]] were once deleted by [[User: Jguk|Jguk]] and [[User: Darklama|Darklame]] because after a grace period they still lacked copyright information. ‑‑[[User:Kai Burghardt|Kai Burghardt]] ([[User talk:Kai Burghardt|discuss]] • [[Special:Contributions/Kai Burghardt|contribs]]) 14:51, 10 July 2026 (UTC) ::@[[User:Kai Burghardt|Kai Burghardt]] ::Do we also need to delete the PDF then? It contains theses images. ::Yours [[User:Dirk Hünniger|Dirk Hünniger]] ([[User talk:Dirk Hünniger|discuss]] • [[Special:Contributions/Dirk Hünniger|contribs]]) 07:49, 11 July 2026 (UTC) ::: {{re|Dirk Hünniger}} It depends on the images’ contents, whether they’re copyrightable. ‑‑[[User:Kai Burghardt|Kai Burghardt]] ([[User talk:Kai Burghardt|discuss]] • [[Special:Contributions/Kai Burghardt|contribs]]) 08:40, 11 July 2026 (UTC) ::::@[[User:Kai Burghardt|Kai Burghardt]] Well to me the look copyrightable. And further more its just the same images that were deleted from the wiki due to copyright issues [[User:Dirk Hünniger|Dirk Hünniger]] ([[User talk:Dirk Hünniger|discuss]] • [[Special:Contributions/Dirk Hünniger|contribs]]) 13:33, 11 July 2026 (UTC) ::::: {{re|Dirk Hünniger}} As far as I understand the issue was a formality. All files must bear license info, regardless whether they’re copyrightable or not. It is quite possible all deleted images don’t meet the threshold of originality, but still were deleted because of this formality. Images like [[:File: Equ1.jpg|File: Equ1.jpg]] ''presumably'' contain ''just'' some rasterized text formula and as such are not copyrightable. I have not had a look at them, so I can’t tell. ‑‑[[User:Kai Burghardt|Kai Burghardt]] ([[User talk:Kai Burghardt|discuss]] • [[Special:Contributions/Kai Burghardt|contribs]]) 14:30, 11 July 2026 (UTC) :::::: @[[User:Kai Burghardt|Kai Burghardt]] If its just a formality and the images don't meet the threshold to be copyrightable we could just restore the deleted images from the PDF. But keeping the PDF and not restoring the images surely is a contradiction. Furthermore there are quite a lot of books with the same problem. [[User:Dirk Hünniger|Dirk Hünniger]] ([[User talk:Dirk Hünniger|discuss]] • [[Special:Contributions/Dirk Hünniger|contribs]]) 17:25, 11 July 2026 (UTC) == Citing WikiBooks? == Wikipedia has a page for Citing Wikipedia, but I haven't found one here, so I have a few questions: # How would I cite Wikibooks in an essay? # Do I need to cite sources on Wikibooks? If so, how? [[User:BlazeFlames|BlazeFlames]] ([[User talk:BlazeFlames|discuss]] • [[Special:Contributions/BlazeFlames|contribs]]) 22:48, 18 June 2026 (UTC) :# This should give you a good method: https://www.scribbr.com/citing-sources/how-to-cite-wikipedia/ :# Generally, no. We have [[Wikibooks:Policies and guidelines|no policy that requires or prohibits citing sources]] and we have a [[Help:Editing#References|help page on how to do it]], with a [[Wikibooks:Templates/Sources|number of templates]] to standardize the process. There is definitely value in citing sources, so I don't want to discourage it. :―[[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> 09:10, 19 June 2026 (UTC) :: {{re|BlazeFlames}} As you can see in [[Special: Version#mw-version-ext|Special: Version § Installed Extensions]] this MediaWiki has the [[mw: Special: MyLanguage/Extension: CiteThisPage|CiteThisPage extension]] installed. On the English‑language edition of Wikibooks you can navigate to [[Special: CiteThisPage/Typewriting|Special: CiteThisPage/…]] even though it is not listed in the [[MediaWiki: Sidebar]] (but it’s listed in [[Special: SpecialPages#mw-specialpagesgroup-pagetools|Special: SpecialPages]]). However, on {{abbr|WB|Wikibooks}} I would link via the [[mw: Special: MyLanguage/Help: Page ID|page ID]] rather than the page title; replace <syntaxhighlight lang='text' inline>title=Booktitle</syntaxhighlight> with <syntaxhighlight lang='text' inline>curid=123456</syntaxhighlight>. ‑‑[[User:Kai Burghardt|Kai Burghardt]] ([[User talk:Kai Burghardt|discuss]] • [[Special:Contributions/Kai Burghardt|contribs]]) 15:09, 10 July 2026 (UTC) == Unhide the FlaggedRevs comment box? == :''Reposted from [[Wikibooks:Reading room/Archives/2026/April#Is this CSS code necessary?]] as the former link had no participation.'' I propose unhiding the FlaggedRevs comment box (via MediaWiki:Common.css) because it might be useful to add in a comment when reverting with the FlaggedRevs reversion, unlike rollback. It might also be useful in cases to add a comment on what the user edited when accepting a revision. Thoughts? [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 21:17, 20 June 2026 (UTC) == RFC about AI-generated content in Wikimedia Commons == <bdi lang="en" dir="ltr"> You are invited to participate in a [[c:Commons:Requests for comment/Policy update for AI content|request for comment on Wikimedia Commons about a policy update for AI content]]. This may affect files that are uploaded to Wikimedia Commons for use on this project. Thank you. [[m:User:Codename Noreste|Codename Noreste]] ([[m:User talk:Codename Noreste|discuss]])</bdi> 17:11, 23 June 2026 (UTC) <!-- Message sent by User:Codename Noreste@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 --> == Deployment of Legal and Safety Contacts Link in the Footer of Your Wiki == <section begin="Message"/> '''Legal & Safety Contacts''' Hello community, the Wikimedia Foundation has provided a [[wmf:Special:MyLanguage/Legal:Wikimedia Foundation Legal and Safety Contact Information|single legal and safety contact page]], to be linked in the footer of your wiki, to ensure access to accurate legal information. This is a regulatory requirement. We have already rolled out links to English, German, Italian, Spanish and other wikis and we will deploy to your wiki soon. [[m:Special:MyLanguage/Wikimedia_Foundation_Legal_and_Safety_Contacts_FAQ|Please read more on the project page]] and leave any comments in this thread or on the [[m:Special:MyLanguage/Talk:Wikimedia Foundation Legal and Safety Contacts FAQ|talk page]]. <section end="Message"/> -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 13:30, 25 June 2026 (UTC) <!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Sannita_(WMF)/Mass_sending_test&oldid=30731267 --> == A question about the user right move-subpages == Even though reviewers have the ability to move 100 pages per minute (per InitialiseSettings.php), they do not have <code>move-subpages</code>, which allows moving a book (with all its subpages) in one single action. Is this user right considered sensitive (hence it is restricted to administrators by default)? [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 04:23, 9 July 2026 (UTC) :I'm not 100% sure what the problem is as long as mass moving is limited to admins in the first place, as this can really cause problems (I recently encountered this mass-moving 100 out of c. 260 pages on a wiki). I support filing a ticket at [[:phab:]] to extend [[:mw:Manual:$wgMaximumMovedPages|$wgMaximumMovedPages]] to 1,000. ―[[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> 05:33, 9 July 2026 (UTC) == July 2026 Wikimedia Café meetups regarding Wikimedia governance and options for reform == <div class="border-box" style="background-color: var(--background-color-warning-subtle, #f8eaba); max-width: 875px; padding: 5px; border: 1px solid black; margin: 5px; color: var(--clr-dark)"> <div class="box" style="float:left; padding-top: 10px; padding-right: 10px; padding-left: 10px; padding-bottom: 10px;">[[File:Wikimedia Café logo in plain SVG format.svg|60px|alt=The logo for the Wikimedia Café]]</div> Hello! There will be two '''[https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9 Wikimedia Café]''' discussion opportunities in July. Both sessions will focus on Wikimedia governance, including possible follow-ups to the [https://meta.wikimedia.org/wiki/Movement_Charter Movement Charter] and options for reform. Participants may attend either or both Café sessions. This month, to deconflict the Café meetups from Wikimania, the meetups will be held one day later than usual. #'''26 July 2026 15:00 UTC''' ([https://zonestamp.toolforge.org/1785078000 timestamp converter]), at a time friendly to the Americas, Africa, and Europe #'''27 July 2026 03:00 UTC''' ([https://zonestamp.toolforge.org/1785121200 timestamp converter]), at a time friendly to Asia and the Pacific Please see the Café page for more information, including [https://meta.wikimedia.org/wiki/Wikimedia_Caf%C3%A9#How_to_attend_the_session how to register]! <br /> [[File:Buntstifte Eberhard Faber crop 64h.jpg|860px|alt=cropped image of colored pencils]]</div> <span style="white-space:nowrap;">[[User:Pine|<span style="color:#01796f; text-shadow:#00BFFF 0 0 1.0em">↠Pine</span>]] [[User talk:Pine|<span style="color:DeepSkyBlue">(<b style="color:#FFDF00;text-shadow:#FFDF00 0 0 1.0em">✉</b>)</span>]]</span> 03:53, 13 July 2026 (UTC) == Request for comment (the future of Abstract Wikipedia) == <bdi lang="en" dir="ltr" class="mw-content-ltr"> You are invited to voice your opinions in a [[:m:Requests for comment/The future of Abstract Wikipedia|request for comment about the future of Abstract Wikipedia]]. {{Int:Feedback-thanks-title}} [[:m:User:Kowal2701|Kowal2701]] ([[:m:User talk:Kowal2701|talk]]) 12:24, 24 July 2026 (UTC) </bdi> <!-- Message sent by User:DreamRimmer@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 --> == Call for administrators == Any experienced editor who has a good understanding of Wikibooks' policies should consider applying for administrator permissions at [[Wikibooks:Requests for permissions]]. Thank you. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 22:10, 5 August 2026 (UTC) p93pvq7aekzpbv7uswzxtmadnmxyw8y Git/Submodules and Superprojects 0 137418 4656733 4645404 2026-08-08T06:29:24Z ~2026-43765-42 3619954 Undid 3 revisions from [[Special:Diff/4640901|4640901]] until [[Special:Diff/4645404|4645404]] 4656733 wikitext text/x-wiki <gallery> <gallery> Example.jpg|Caption1 Example.jpg|Caption2 </gallery> <gallery> Example.jpg|Caption1 Example.jpg|Caption2 </gallery> </gallery> A '''superproject''' is a new aspect of git which has been in development for a long while. It addresses the need for better control over numerous git repositories. The porcelain for the superproject functionality is fairly new and was only recently released with Git v1.5.3. A Git '''project''' may consist of a set of ''git repositories'' and each of these "git repositories" is called a '''module'''.You can think of a '''module''' as a '''project,''' and the '''project''' as a '''module.''' It really doesn't make too much sense why either of these terms would have a ''sub-'' or ''super-'' prefix without their alternative; nonetheless, that's how the official Git documentation will refer to them. The only git application specific to the submodule/superproject functionality is '''git-module'''. == Superprojects == A '''Superproject''', is simply a git repository. To create a superproject, simply ''git init'' any directory, and ''git submodule add'' all of the git archives you wish to include. A quick aside, you can not currently ''git submodule add'' git repositories that are direct children within the same directory.{{ref|lie_parent}} The resulting structure will look similar to this: |- superproject |- submodule (git archive) [a] |- submodule [b] |- submodule [c] |- submodule [d] When someone pulls down the superproject, they will see a series of empty folders for each submodule. They can then ''git submodule init'' all of those that they wish to utilize. == Submodules == A ''git archive'' is said to become a ''submodule'' the second after you execute ''git submodule add'' in another git repository. <!-- <syntaxhighlight lang="bash"> atomic-example </syntaxhighlight> --> == Work Flow == The work flow of superprojects, and submodules should generally adhere to the following: # the repo has been initialized in path_to_working_directory # Make change in submodule # ''git commit'' change in submodule # ''git commit'' change in superproject # ''git submodule update'' to push change to the individual repositories that predate the superproject. ==Footnotes== #{{note|lie_parent}} Well that isn't true at all, Git supports this as of v1.5.3, but the official porcelain doesn't. You can ''git init'' a parent directory, and create your own ".gitmodules", then follow it up with a ''git submodule init''. Generally speaking though, what the porcelain doesn't cover is outside of the scope of this book. {{BookCat}} [[fr:Git/Sous-modules et Super-projets]] j6zef9qotogcxcwxh6llru516j7ed0u Wikibooks:Reading room/Administrative Assistance 4 140081 4656670 4656579 2026-08-07T17:51:03Z Codename Noreste 3441010 /* Nokiya23 reported by MathXplore */ reply: {{done}}. (-) ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]]) 4656670 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]] == 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) : Already 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]]) 20:23, 2 August 2026 (UTC) == Birdsjungle reported by MathXplore == * {{userlinks|Birdsjungle}} Link spam, [[Special:AbuseLog/314940]] <!-- USERREPORTED:/Birdsjungle/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 11:21, 3 August 2026 (UTC) : {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:02, 3 August 2026 (UTC) == Uniquehairgro reported by MathXplore == * {{userlinks|Uniquehairgro}} Spam <!-- USERREPORTED:/Uniquehairgro/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:37, 4 August 2026 (UTC) :{{done}} —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 14:46, 4 August 2026 (UTC) == Jerinjebin reported by MathXplore == * {{userlinks|Jerinjebin}} Link spam, [[Special:AbuseLog/314965]] <!-- USERREPORTED:/Jerinjebin/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 13:38, 5 August 2026 (UTC) : {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 15:39, 5 August 2026 (UTC) == Nokiya23 reported by MathXplore == * {{userlinks|Nokiya23}} Link spam, [[Special:AbuseLog/315040]] <!-- USERREPORTED:/Nokiya23/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 11:36, 7 August 2026 (UTC) : {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 17:51, 7 August 2026 (UTC) io5gjb7iov5krmbhj4bffsx5sg5tnbq Vehicle Identification Numbers (VIN codes)/GM/VIN Codes 0 142013 4656695 4656559 2026-08-07T19:50:22Z JustTheFacts33 3434282 /* Series 2000-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle */ 4656695 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) |- |9 <br> (following B)||Chevrolet Venture (incomplete vehicle) ('02) |- |2 <br> (following X)||If VIN starts with 1GB: Chevrolet Venture (incomplete vehicle) ('03-'04) |- |0 <br> (following U)||Chevrolet Venture SWB ('00-'04) |- |2 <br> (following U)||Chevrolet Venture Value Van SWB ('00-'03) |- |2 <br> (following U)||Chevrolet Venture Value SWB (Canada: '04) |- |0 <br> (following X)||Chevrolet Venture LWB ('00-'04) |- |1 <br> (following X)||Chevrolet Venture Warner Bros. Edition LWB ('00-'03) |- |1 <br> (following X)||Chevrolet Venture LT LWB ('04) |- |2 <br> (following X)||If VIN starts with 1GN: Chevrolet Venture Cargo Van ('02-'04) |- |0 <br> (following V)||Chevrolet Venture LWB Awd ('02-'03) |- |1 <br> (following V)||Chevrolet Venture Warner Bros. Edition LWB Awd ('02-'03) |- |1 <br> (following V)||Chevrolet Venture LT LWB Awd ('04) |- |0 <br> (following V)||Chevrolet Venture Plus ('05) (Pos. 8 of VIN is E) |- |1 <br> (following V)||Chevrolet Venture Cargo, Mobility (incomplete vehicle) ('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-'09) |- |2 <br> (following S)||Chevrolet Colorado LS 2wd ('08 - some) |- |3 <br> (following S)||Chevrolet Colorado 1LT 2wd ('08 - some) |- |4 <br> (following S)||Chevrolet Colorado 2LT 2wd ('08 - some) |- |1 <br> (following T)||Chevrolet Colorado 4wd ('04-'09) |- |2 <br> (following T)||Chevrolet Colorado LS 4wd ('08 - some) |- |3 <br> (following T)||Chevrolet Colorado 1LT 4wd ('08 - some) |- |4 <br> (following T)||Chevrolet Colorado 2LT 4wd ('08 - some) |- |1 <br> (following C)||Chevrolet Silverado 1500 2wd ('00-'06), Silverado Classic 1500 2wd ('07) (Pos. 8 of VIN is X, V, T, Z, or N] [GMT800] |- |1 <br> (following K)||Chevrolet Silverado 1500 4wd ('00-'06), Silverado Classic 1500 4wd ('07) (Pos. 8 of VIN is X, V, T, Z, B, or N] [GMT800] |- |1 <br> (following C)||Chevrolet Silverado 1500HD 2wd ('01-'03, '05-'06), Silverado Classic 1500HD 2wd ('07) (Pos. 8 of VIN is U] [GMT800] |- |1 <br> (following K)||Chevrolet Silverado 1500HD 4wd ('01-'03, '05-'06), Silverado Classic 1500HD 2wd ('07) (Pos. 8 of VIN is U] [GMT800] |- |2 <br> (following C)||Chevrolet Silverado 2500 (LD) 2wd ('00-'04) [GMT800] (Pos. 8 of VIN is T ('00) or U ('00-'04)] |- |2 <br> (following K)||Chevrolet Silverado 2500 (LD) 4wd ('00-'04) [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 2500HD 2wd ('01-'06), Silverado Classic 2500HD 2wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800] |- |2 <br> (following K)||Chevrolet Silverado 2500HD 4wd ('01-'06), Silverado Classic 2500HD 4wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800] |- |3 <br> (following C)||Chevrolet Silverado 3500 2wd ('01-'06), Silverado Classic 3500 2wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800] |- |3 <br> (following K)||Chevrolet Silverado 3500 4wd ('01-'06), Silverado Classic 3500 4wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800] |- |1 <br> (following C)||Chevrolet Silverado 1500 2wd ('07-'08) (Pos. 8 of VIN is X, C, J, 0, or Y) [GMT900] |- |1 <br> (following K)||Chevrolet Silverado 1500 4wd ('07-'08) (Pos. 8 of VIN is X, C, J, M, 0, 3, or Y) [GMT900] |- |2 <br> (following C)||Chevrolet Silverado 2500HD 2wd ('07-'08) [GMT900] |- |2 <br> (following K)||Chevrolet Silverado 2500HD 4wd ('07-'08) [GMT900] |- |3 <br> (following C)||Chevrolet Silverado 3500HD 2wd ('07-'08) [GMT900] |- |3 <br> (following K)||Chevrolet Silverado 3500HD 4wd ('07-'08) [GMT900] |- |1 <br> (following C)||Chevrolet Silverado Work Truck, LS 1500 2wd ('09) [GMT900] |- |2 <br> (following C)||Chevrolet Silverado LT 1500 2wd ('09) [GMT900] |- |3 <br> (following C)||Chevrolet Silverado LTZ 1500 2wd ('09) [GMT900] |- |1 <br> (following K)||Chevrolet Silverado Work Truck, LS 1500 4wd ('09) [GMT900] |- |2 <br> (following K)||Chevrolet Silverado LT 1500 4wd ('09) [GMT900] |- |3 <br> (following K)||Chevrolet Silverado LTZ 1500 4wd ('09) [GMT900] |- |4 <br> (following C)||Chevrolet Silverado Work Truck 2500HD 2wd ('09) [GMT900] |- |5 <br> (following C)||Chevrolet Silverado LT 2500HD 2wd ('09) [GMT900] |- |6 <br> (following C)||Chevrolet Silverado LTZ 2500HD 2wd ('09) [GMT900] |- |4 <br> (following K)||Chevrolet Silverado Work Truck 2500HD 4wd ('09) [GMT900] |- |5 <br> (following K)||Chevrolet Silverado LT 2500HD 4wd ('09) [GMT900] |- |6 <br> (following K)||Chevrolet Silverado LTZ 2500HD 4wd ('09) [GMT900] |- |7 <br> (following C)||Chevrolet Silverado Work Truck 3500HD 2wd ('09) [GMT900] |- |8 <br> (following C)||Chevrolet Silverado LT 3500HD 2wd ('09) [GMT900] |- |9 <br> (following C)||Chevrolet Silverado LTZ 3500HD 2wd ('09) [GMT900] |- |7 <br> (following K)||Chevrolet Silverado Work Truck 3500HD 4wd ('09) [GMT900] |- |8 <br> (following K)||Chevrolet Silverado LT 3500HD 4wd ('09) [GMT900] |- |9 <br> (following K)||Chevrolet Silverado LTZ 3500HD 4wd ('09) [GMT900] |- |0 <br> (following U)||Pontiac Montana SWB ('00-'04) |- |2 <br> (following U)||Pontiac Montana Special Value 1SV SWB ('00-'03) |- |0 <br> (following X)||Pontiac Montana LWB ('00-'04) |- |1 <br> (following X)||Pontiac Montana LWB w/MontanaVision Rear Entertainment System ('00-'04) |- |2 <br> (following X)||Pontiac Montana Special Value 1SV LWB ('03) |- |2 <br> (following X)||Pontiac Montana Mobility (incomplete vehicle) LWB ('03-'04) (VIN starts w/1G5) |- |0 <br> (following V)||Pontiac Montana LWB Awd ('02-'04) |- |1 <br> (following V)||Pontiac Montana LWB Awd w/MontanaVision Rear Entertainment System ('02-'04) |- |1 <br> (following V)||Pontiac Montana Mobility (incomplete vehicle) 2wd ('05) (Pos. 8 of VIN is E) (VIN starts w/1G5) |- |2 <br> (following V)||Pontiac Montana ('05) (Pos. 8 of VIN is E) |- |3 <br> (following V)||Pontiac Montana w/MontanaVision Rear Entertainment System ('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 (incomplete vehicle) for Limousine or Hearse based on DeVille ('00-'01) |- |0 <br> (following H)||Cadillac Commercial Chassis (incomplete vehicle) for Hearse based on DeVille ('02-'05) or DTS ('06-'09) |- |9 <br> (following H)||Cadillac Professional Chassis (incomplete vehicle) for Limousine based on DeVille ('02-'05) or DTS ('06-'07) |- |9 <br> (following K)||Cadillac Professional Chassis (incomplete vehicle) 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-'09) |- |2 <br> (following S)||GMC Canyon SL 2wd ('08 - some) |- |3 <br> (following S)||GMC Canyon SLE1 2wd ('08 - some) |- |4 <br> (following S)||GMC Canyon SLE2 2wd ('08 - some) |- |5 <br> (following S)||GMC Canyon SLT 2wd ('08 - some) |- |1 <br> (following T)||GMC Canyon 4wd ('04-'09) |- |2 <br> (following T)||GMC Canyon SL 4wd ('08 - some) |- |3 <br> (following T)||GMC Canyon SLE1 4wd ('08 - some) |- |4 <br> (following T)||GMC Canyon SLE2 4wd ('08 - some) |- |5 <br> (following T)||GMC Canyon SLT 4wd ('08 - some) |- |1 <br> (following C)||GMC Sierra 1500 2wd ('00-'06), Sierra Classic 1500 2wd ('07) (Pos. 8 of VIN is X, V, T, Z, or N] [GMT800] |- |1 <br> (following K)||GMC Sierra 1500 4wd ('00-'06), Sierra Classic 1500 4wd ('07) (Pos. 8 of VIN is X, V, T, Z, B, or N] [GMT800] |- |1 <br> (following C)||GMC Sierra 1500HD 2wd ('01-'03, '05-'06), Sierra Classic 1500HD 2wd ('07) (Pos. 8 of VIN is U] [GMT800] |- |1 <br> (following K)||GMC Sierra 1500HD 4wd ('01-'03, '05-'06), Sierra Classic 1500HD 2wd ('07) (Pos. 8 of VIN is U] [GMT800] |- |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) (Pos. 8 of VIN is N] [GMT800] |- |2 <br> (following C)||GMC Sierra 2500 (LD) 2wd ('00-'04) [GMT800] (Pos. 8 of VIN is T ('00) or U ('00-'04)] |- |2 <br> (following K)||GMC Sierra 2500 (LD) 4wd ('00-'04) [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 2500HD 2wd ('01-'06), Sierra Classic 2500HD 2wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800] |- |2 <br> (following K)||GMC Sierra 2500HD 4wd ('01-'06), Sierra Classic 2500HD 4wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800] |- |3 <br> (following C)||GMC Sierra 3500 2wd ('01-'06), Sierra Classic 3500 2wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800] |- |3 <br> (following K)||GMC Sierra 3500 4wd ('01-'06), Sierra Classic 3500 4wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800] |- |1 <br> (following C)||GMC Sierra 1500 2wd ('07-'08) (Pos. 8 of VIN is X, C, J, 0, or Y) [GMT900] |- |6 <br> (following C)||GMC Sierra Denali 1500 2wd ('07-'08) (Pos. 8 of VIN is 8) [GMT900] |- |1 <br> (following K)||GMC Sierra 1500 4wd ('07-'08) (Pos. 8 of VIN is X, C, J, M, 0, 3, or Y) [GMT900] |- |6 <br> (following K)||GMC Sierra Denali 1500 Awd ('07-'08) (Pos. 8 of VIN is 8) [GMT900] |- |2 <br> (following C)||GMC Sierra 2500HD 2wd ('07-'08) [GMT900] |- |2 <br> (following K)||GMC Sierra 2500HD 4wd ('07-'08) [GMT900] |- |3 <br> (following C)||GMC Sierra 3500HD 2wd ('07-'08) [GMT900] |- |3 <br> (following K)||GMC Sierra 3500HD 4wd ('07-'08) [GMT900] |- |1 <br> (following C)||GMC Sierra Work Truck, SL 1500 2wd ('09) [GMT900] |- |2 <br> (following C)||GMC Sierra SLE 1500 2wd ('09) [GMT900] |- |3 <br> (following C)||GMC Sierra SLT 1500 2wd ('09) [GMT900] |- |0 <br> (following C)||GMC Sierra Denali 1500 2wd ('09) [GMT900] |- |1 <br> (following K)||GMC Sierra Work Truck, SL 1500 4wd ('09) [GMT900] |- |2 <br> (following K)||GMC Sierra SLE 1500 4wd ('09) [GMT900] |- |3 <br> (following K)||GMC Sierra SLT 1500 4wd ('09) [GMT900] |- |0 <br> (following K)||GMC Sierra Denali 1500 Awd ('09) [GMT900] |- |4 <br> (following C)||GMC Sierra Work Truck 2500HD 2wd ('09) [GMT900] |- |5 <br> (following C)||GMC Sierra SLE 2500HD 2wd ('09) [GMT900] |- |6 <br> (following C)||GMC Sierra SLT 2500HD 2wd ('09) [GMT900] |- |4 <br> (following K)||GMC Sierra Work Truck 2500HD 4wd ('09) [GMT900] |- |5 <br> (following K)||GMC Sierra SLE 2500HD 4wd ('09) [GMT900] |- |6 <br> (following K)||GMC Sierra SLT 2500HD 4wd ('09) [GMT900] |- |7 <br> (following C)||GMC Sierra Work Truck 3500HD 2wd ('09) [GMT900] |- |8 <br> (following C)||GMC Sierra SLE 3500HD 2wd ('09) [GMT900] |- |9 <br> (following C)||GMC Sierra SLT 3500HD 2wd ('09) [GMT900] |- |7 <br> (following K)||GMC Sierra Work Truck 3500HD 4wd ('09) [GMT900] |- |8 <br> (following K)||GMC Sierra SLE 3500HD 4wd ('09) [GMT900] |- |9 <br> (following K)||GMC Sierra SLT 3500HD 4wd ('09) [GMT900] |- |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 |- |D||LLT||3.6L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. '11 Cadillac CTS, STS, Chevrolet Camaro, Buick LaCrosse |- |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||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). '11 Cadillac DTS Platinum, '11 Buick Lucerne Super |- |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. '11-'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-'10 Cadillac CTS, STS, '10 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 Cadillac Eldorado Sport Coupe,<br> '94-'99 Cadillac Eldorado base model, '00-'02 Eldorado Sport Coupe,<br /> '94-'04 Cadillac Seville SLS, '94-'95 Cadillac DeVille Concours,<br> '96-'05 Cadillac DeVille base model, '97-'99 DeVille D'elegance, '99 DeVille 50th Anniv. Ed.,<br /> '00-'05 DeVille DHS, '06-'10 Cadillac DTS (all except '06-'09 Performance & '10 Platinum),<br /> '04-'05 Pontiac Bonneville GXP, '06-'07 Buick Lucerne CXL V8 & CXS,<br> '08 Buick Lucerne CXL Special Edition V8 & CXS |- |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. '11 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||L61||6.0&nbsp;L||V8||4 Barrel Carburetor |4BBL||OHV||Cadillac 472-series V8 engine family. <br /> '81-'84 Cadillac Commercial Chassis. |- |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||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). '11 Cadillac DTS (all except Platinum) |- |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).<br /> '93 Cadillac Allanté, '93-'02 Cadillac Eldorado Touring Coupe, '93-'04 Cadillac Seville STS,<br> '96-'99 Cadillac DeVille Concours, '00-'05 Cadillac DeVille DTS,<br /> '06-'09 Cadillac DTS Performance, '10 Cadillac DTS Platinum, '08-'10 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.<br> Active Fuel Management.<br> '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.<br> '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 - for '88-'96 full-size wagons used for conversion & '05-'07 Terraza Mobility) |- |5GA||United States (MPV) |- |KL4||South Korea (MPV) |- |LRB||China (SAIC-GM) |- |W04||Germany (Early 2011, 2018-2020 Regal) & Poland (Cascada) |- |KLA||Alpheon||South Korea (2011-2015) |- |1G6||rowspan=10|Cadillac||United States |- |1GE||United States (incomplete vehicle - for '81-'84 Fleetwood [Rwd], '85-'92 Fleetwood [Fwd], '93 Sixty Special [Fwd], '93-'96 Fleetwood [Rwd], '97-'05 DeVille, '06-'11 DTS used for conversion to limousine or hearse) |- |1GY||United States (SUV) |- |2G6||Canada |- |2GE||Canada (incomplete vehicle - for '13-'19 XTS used for conversion to limousine or hearse) |- |3GY||Mexico (SUV) |- |LRE||China (SAIC-GM) |- |W06||Germany (Catera) |- |XWF||Russia (made by Avtotor in Kaliningrad) |- |YSC||Sweden (BLS) |- |1G8||rowspan=4|Saturn||United States |- |3GS||Mexico (SUV) |- |5GZ||United States (MPV/SUV) |- |W08||Belgium (Astra) |- |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}} 00f9h3roj78yw4elwm9txcrh0trn73c Punjabi/Vocabulary/Months 0 166772 4656666 4484923 2026-08-07T17:33:09Z Thecatlens 3619846 the exect url 4656666 wikitext text/x-wiki {{Punjabi/Mobile}} == Months of Gregorian Calendar == Month is called ਮਾਹ in [[Punjabishayarii.com|Punjabi]] and date ਮਿਤੀ. The following are the months of the Gregorian calendar. #ਜਨਵਰੀ = January #ਫ਼ਰਵਰੀ = February #ਮਾਰਚ = March #ਅਪ੍ਰੈਲ = April #ਮਈ = May #ਜੂਨ = June # #ਜੁਲਾਈ = July #ਅਗਸਤ = August #ਸਤੰਬਰ = September #ਅਕਤੂਬਰ = October #ਨਵੰਬਰ = November #ਦਸੰਬਰ = December === Months of the Vernacular Calendar. === The following are the months of the Vernacular calendar. The vernacular calendar is in the lunar system. Its a very important part of Punjab. #ਚੇਤ = Chet (March) #ਵੈਸਾਖ = Vaisakh (April) #ਜੇਠ = Jeth (May) #ਹਾੜ = Harh (June) #ਸਾਉਣ = Saaun (July) #ਭਾਦੋਂ = Bhadon (August) #ਅੱਸੂ = Assu (September) #ਕੱਤਕ = Katak (October) #ਮੱਘਰ = Maghar (November) #ਪੋਹ = Poh (December) #ਮਾਘ = Magh (January) #ਫੱਗਣ = Phuagun (February) === Exercises === #Write the names of the months of the Gregorian calendar in Punjabi. #January #February #March #April #May #June #July #August #September #October #November #December #Write the names of the months of the vernacular calendar in Punjabi. #Write a date in Punjabi, both in the Georgian way and the Vernacular way. {{Punjabi}} 2p2n8ygf8hdo0tvxyunp75i9oki2u67 Aros/Developer/Docs/Libraries/Icon 0 202925 4656655 4465961 2026-08-07T15:32:38Z Jeff1138 301139 4656655 wikitext text/x-wiki {{ArosNav}} ==Introduction== * OLD - OS1.x (4 col) - OS 2/3 (4 col) * NEW - [http://en.wikipedia.org/wiki/NewIcons NewIcons] (size 36x40 x 32 col) - [http://en.wikipedia.org/wiki/Glowicons GlowIcons] (size 46x46 x 256 col) - PowerIcons (24bit) Possibilities for the future * SVG or SVGZ - Haiku [http://www.haiku-os.org/tags/icons_0 HVIF] has a reduced format. There are several formats used by Amiga/AROS computers to display icons for each program/project you want to access from the graphical user interface Workbench. The Classic Icon is the basis for three of the Icon styles supported by AROS. The Amiga Glow Icon is a Classic Icon (Old Icon Format) with OS 3.5 IFF Icon Data attached at the end. The IFF data contains the images that AROS displays. An OS4 icon is a Classic Icon with OS 3.5 Data attached. But unlike a Glow Icon it only has a 'FACE' chunk with no 'IMAG' chunks. It has 2 'ARGB' chunks at the end of the Icon file that are used to display. The AROS Hybrid Icon or ARGB Icon is similar to the OS4 Icon but it has a complete Glow Icon that 2 ARGB chunks are attached to at the end. On AROS icons with different sizes result in misalignment and clutter among icons, already square icons at the same size as Round icons, will look large. Also, folders that have edges or protrusions such as handles will appear smaller, this is why different sizes for Icon Sets. Best to be aware of misalignment issues with icons. Most icons are 46x46. Folder image area is 42x42 but regular icon image area just like other AROS Glow Icons is 38x38 A note about the used data descriptors that are used throughout from here. All elements are in Motorola byte order (highest byte first): <pre> APTR - a memory pointer (usually this gets a boolean meaning on disk) BYTE - a single byte -128..127 UBYTE - an unsigned byte 0..255 WORD - a signed 16 bit value -32768..32767 UWORD - an unsigned 16 bit value 0..65535 LONG - a signed 32 bit value -2147483648..2147483647 ULONG - a unsigned 32 bit value 0..4294967295 </pre> There are lots of elements marked with ???. These are usually filled with values, which have no effect at all. Thus they can normally be ignored. For some values the usual contents is described. === OS1.x/OS2.x format === The OS1.x/OS2.x format is storage of the in-memory structures on disk. This text tries to show which values are important and which are not. <pre> 0x00 UWORD ic_Magic always 0xE310 0x00 UWORD ic_Version always 1 0x04 struct Gadget (described below) 0x30 UBYTE ic_Type 1 DISK a disk 2 DRAWER a directory 3 TOOL a program 4 PROJECT a project file with defined program to start 5 GARBAGE the trashcan 6 DEVICE should never appear 7 KICK a kickstart disk 8 APPICON should never appear 0x31 UBYTE ic_Pad <undefined> 0x32 APTR ic_DefaultTool <boolean> 0x36 APTR ic_ToolTypes <boolean> 0x3A LONG ic_CurrentX X position of icon in drawer/on WorkBench 0x3E LONG ic_CurrentY Y position of icon in drawer/on WorkBench 0x42 APTR ic_DrawerData <boolean> 0x46 APTR ic_ToolWindow <boolean> 0x4A LONG ic_StackSize the stack size for program execution (values < 4096 mean 4096 is used) </pre> This is followed by certain other data structures: <pre> struct DrawerData if ic_DrawerData is not zero (see below) struct Image first image struct Image second image if ga_SelectRender not zero (see below) in gadget structure DefaultTool text if ic_DefaultTool not zero (format see below) ToolTypes texts if ic_ToolTypes not zero (format see below) ToolWindow text if ic_ToolWindow not zero (format see below) this is an extension, which was never implemented struct DrawerData2 if ic_DrawerData is not zero and ga_UserData is 1 (see below) </pre> Now a description of the sub-formats: a) The text storage method (DefaultTool, ToolWindow and ToolTypes): <pre> 0x00 ULONG tx_Size the size of tx_Text including zero byte (tx_Zero) 0x04 ... tx_Text the plain text .... UBYTE tx_Zero the finishing zero byte </pre> This means the text "Hallo" will be encoded as \00\00\00\06Hallo\00. As ToolTypes are an array of texts the encoding is preceded by another ULONG value containing the number of entries. But to make parsing more interesting it is not the number as one would expect, but the number of entries increased by one and multiplied by 4. Thus 10 entries will have 44 as count. b) The Gadget structure: <pre> 0x00 APTR ga_Next <undefined> always 0 0x04 WORD ga_LeftEdge unused ??? 0x06 WORD ga_TopEdge unused ??? 0x08 WORD ga_Width the width of the gadget 0x0A WORD ga_Height the height of the gadget 0x0C UWORD ga_Flags gadget flags bit 2 always set (image 1 is an image ;-) bit 1 if set, we use 2 image-mode bit 0 if set we use backfill mode, else complement mode complement mode: gadget colors are inverted backfill mode: like complement, but region outside (color 0) of image is not inverted As you see, it makes no sense having bit 0 and 1 set. 0x0E UWORD ga_Activation <undefined> 0x10 UWORD ga_GadgetType <undefined> 0x12 APTR ga_GadgetRender <boolean> unused??? always true 0x16 APTR ga_SelectRender <boolean> (true if second image present) 0x1A APTR ga_GadgetText <undefined> always 0 ??? 0x1E LONG ga_MutualExclude <undefined> 0x22 APTR ga_SpecialInfo <undefined> 0x26 UWORD ga_GadgetID <undefined> 0x28 APTR ga_UserData lower 8 bits: 0 for old, 1 for icons >= OS2.x upper 24 bits: undefined </pre> c) The DrawerData structure: This structure is useful for drawers and disks (but there are some icons of other types, which still have these obsolete entries). <pre> 0x00 struct NewWindow (see below) 0x30 LONG dd_CurrentX the current X position of the drawer window contents (this is the relative offset of the drawer drawmap) 0x34 LONG dd_CurrentY the current Y position of the drawer window contents </pre> d) The NewWindow structure used by DrawerData: <pre> 0x00 WORD nw_LeftEdge left edge distance of window 0x02 WORD nw_TopEdge top edge distance of window 0x04 WORD nw_Width the width of the window (outer width) 0x06 WORD nw_Height the height of the window (outer height) 0x08 UBYTE nw_DetailPen always 255 ??? 0x09 UBYTE nw_BlockPen always 255 ??? 0x0A ULONG nw_IDCMPFlags <undefined> 0x0E ULONG nw_Flags <undefined> 0x12 APTR nw_FirstGadget <undefined> 0x16 APTR nw_CheckMark <undefined> 0x1A APTR nw_Title <undefined> 0x1E APTR nw_Screen <undefined> 0x22 APTR nw_BitMap <undefined> 0x26 WORD nw_MinWidth <undefined> often 94, minimum window width 0x28 WORD nw_MinHeight <undefined> often 65, minimum window height 0x2A UWORD nw_MaxWidth <undefined> often 0xFFFF, maximum window width 0x2C UWORD nw_MaxHeight <undefined> often 0xFFFF, maximum window width 0x2E UWORD nw_Type <undefined> </pre> e) The DrawerData2 structure for OS2.x drawers: <pre> 0x00 ULONG dd_Flags flags for drawer display value 0 handle viewmode like parent drawer current setting (OS1.x compatibility mode) bit 0 view icons bit 1 view all files (bit 0 maybe set or unset with this) 0x04 UWORD dd_ViewModes viewmodes of drawer display value 0 show icons (OS1.x compatibility mode) value 1 show icons value 2 show sorted by name value 3 show sorted by date value 4 show sorted by size value 5 show sorted by type </pre> f) And now the last element, the Image structure: <pre> 0x00 WORD im_LeftEdge always 0 ??? 0x00 WORD im_TopEdge always 0 ??? 0x04 WORD im_Width the width of the image 0x06 WORD im_Height the height of the image 0x08 WORD im_Depth the image bitmap depth 0x0A APTR im_ImageData <boolean> always true ??? 0x0E UBYTE im_PlanePick foreground color register index 0x0F UBYTE im_PlaneOnOff background color register index 0x10 APTR im_Next always 0 ??? </pre> This is followed by the image data in planar mode. The width of the image is always rounded to next 16bit boundary. loads an ILBM file to get the chunky image data which consists of index values. The image data is processed by RemapIconImage which maps the index values to a standard 4-color palette. Write_Image then writes the planar data to file. === NewIcon extension === As the original classic icon format is very limited when using more than the 4 or 8 default colors and also when using different palette sets than the default, there have been ideas how to circumvent this. A Shareware author invented NewIcons format, which uses the ToolTypes to store image data, as expanding the original format very surely would have broken compatibility. The NewIcons stuff usually starts with following 2 ToolTypes text (text inside of the "" only): "*** DON'T EDIT THE FOLLOWING LINES!! ***" Afterwards the image data is encoded as ASCII. The lines for first image always start with "IM1=". If present the second image starts with "IM2=". The first line of each image set contains the image information and the palette. <pre> 0x00 UBYTE ni_Transparency "B" transparency on "C" transparency off 0x01 UBYTE ni_Width image width + 0x21 - "}" means width 92 0x02 UBYTE ni_Height image height + 0x21 - "}" means height 92 0x03 UWORD ni_Colors ASCII coded number of palette entries: entries are: ((buf[3]-0x21)<<6)+(buf[4]-0x21) "!'" means 6 entries </pre> Afterwards the encoded palette is stored. Each element has 8 bit and colors are stored in order red, green, blue. The encoded format is described below. The ni_Width and ni_Height maximum values are 93. The maximum color value is theoretically 255. I have seen images with at least 257 stored colors (but less than 256 used). The following lines contain the image data encoded with the same system as the palette. The number of bits used to encode an entry depends of the number of colors (6 colors f.e. need 3 bit). The lines have maximum 127 bytes including the "IM1=" or "IM2=" header. Thus including the zero byte, the string will be 128 byte. En/Decoding algorithm: <pre> Each byte encodes 7bit (except the RLE bytes) Bytes 0x20 to 0x6F represent 7bit value 0x00 to 0x4F Bytes 0xA1 to 0xD0 represent 7bit value 0x50 to 0x7F Bytes 0xD1 to 0xFF are RLE bytes: 0xD1 represents 1*7 zero bits, 0xD2 represents 2*7 zero bits and the last value 0xFF represents 47*7 zero bits. </pre> Opposite to the original icon format, the NewIcons format uses chunky modus to store the image data. The encoding for images and palette stops at the string boundary (127 bytes) with buffer flush (and adding pad bits) and is restarted with next line. === OS3.5 extension === The original inventor of NewIcon format was Phil Vedovatti. And the one responsible for designing the Glow Icons used with Amiga OS 3.5/3.9 was Mat Chaput. The OS3.5 format introduces nearly the same information as in NewIcons, but in a more usable format. The tooltypes are no longer misused, but a new data block is appended at the end of the icon file. This data block is in IFF format. Those files consist of a classic info disk structure (might or might not contain a newicon structure in the tool-types), followed by an IFF icon structure (the actual glowicon bits). A GlowIcon is thus an IFF structure with a ICON identifier which can contain the (newly added) chunks FACE and IMAG. The file may or may not contain multiple IMAG chunks (though a minimal of 1 and maximum of 2 makes sense in this context). It consists of the standard header <pre> 0x00 UBYTE[4] ic_Header set to "FORM" 0x04 ULONG ic_Size size [excluding the first 8 bytes!] 0x08 UBYTE[4] ic_Identifier set to "ICON" </pre> Now Chunks of different data follow. Each chunk consists of 8 header bytes and the data bytes. If the size in header is uneven, then it is automatically padded with 1 byte at the end. Currently 3 chunks are used with following data. Note that IFF generally allows expansion and chunk reordering, so do not rely on any current size information or chunk order, but skip unknown data based on the size information stored in file. 1) <pre> 0x00 UBYTE[4] fc_Header set to "FACE" 0x04 ULONG fc_Size size [excluding the first 8 bytes!] 0x08 UBYTE fc_Width icon width subtracted by 1 0x09 UBYTE fc_Height icon height subtracted by 1 0x0A UBYTE fc_Flags flags bit 0 icon is frameless 0x0B UBYTE fc_Aspect image aspect ratio: upper 4 bits x aspect lower 4 bits y aspect 0x0C UWORD fc_MaxPalBytes maximum number of bytes used in image palettes subtracted by 1 (i.e. if palette 1 has 17 and palette 2 has 45 entries, then this is 45) </pre> 2) Now 2 chunks of this type may come, where first chunk is image 1 and second chunk is image 2. <pre> 0x00 UBYTE[4] im_Header set to "IMAG" 0x04 ULONG im_Size size [excluding the first 8 bytes!] 0x08 UBYTE im_Transparent number of the transparent color 0x09 UBYTE im_NumColors number of colors subtracted by 1 0x0A UBYTE im_Flags bit 0 there exists a transparent color bit 1 a palette data is attached (NOTE, that first image always needs palette data, whereas the second one can reuse the first palette.) 0x0B UBYTE im_ImageFormat storage format of image data value 0 uncompressed value 1 run-length compressed 0x0C UBYTE im_PalFormat storage format of palette data (same as above) 0x0D UBYTE im_Depth the number of bits used to store a pixel 0x0E UWORD im_ImageSize number of bytes used to store image (subtracted by 1) 0x10 UWORD im_PalSize number of bytes used to store palette (subtracted by 1) 0x12 UBYTE[...] the image data .... UBYTE[...] the palette data (if existing) </pre> Now about the run-length compression. This is equal to the run-length method in IFF-ILBM format: The input data is seen as a bit-stream, where each entry has im_Depth bits for image or 8 bits for palette. First comes an 8 bit RLE block with following meaning: <pre> 0x00 .. 0x7F copy the next n entries as they are, where n is "RLE-value"+1 0x80 ignore this, do nothing 0x81 .. 0xFF produce the next entry n times, where n is 256-"RLE-value"+1 (if using signed chars n is "RLE-value"+1) </pre> In uncompressed mode, each byte represents one pixel (even if lower depth is used). When saving Classic Icons we are only concerned with the IFF icon images. The IFF Data starts with "FORM....ICONFACE". Save the ILBM file as the actual number of bitplanes & index values & colormap from the icon data. Once you extract the images & colormap it's easy to write the ILBM. To make it easier ILBM can be uncompressed planar images & colormap. There is information for ILBM format if you search for IFF85. Sometimes Classic Amiga Icons contain OS3.5 IFF Data & ARGB data chunks attached to the end of the file. methods to read the zlib compressed 32bit data. The IFF data should contain two IMAG chunks for images but it could contain one or none. If it contains only one image we only export one image. If it contain no IMAG chunks for images but it contains one or two ARGB chunks attached to the end of the IFF data then it's an OS4 icon which is a Classic Amiga Icons with the OS3.5 Extension without IMAG but ARGB instead. If it contains one or two IMAG & one or two ARGB chunks then it is an AROS ARGB Icon format. The size of the colormap byte array is still not correct but it displays correctly anyhow. I may use a simple PackByteRun algorithm to encode the palette data instead of the image encoder. The colormap is an array of 8 bit chunky bytes compressed using RLE which is the same as for compressed ILBM images. Compressed IMAG image data however is encoded differently. The Glow Icon records the total number of used colors in the IMAG chunks. Whereas ILBM files use the total number of colors by depth which is ( 1<<depth). For depth of 5 numcolors is 32. But total used colors for my sample icon is only 17. So the colormap data was sending 96 not 52. Size in bytes of the colormap data is ( 17 * 3 ). To decode the image data for IMAG chunks for Glow Icon Format. The image data decoder and RLE decoder are working Having traced the CybergraphX ReadRGBPixel function. It uses DoPixelFunct which then reverts to do_pixel_funct which is part of Rom/Graphics. ReadPixel only uses RGB values. If a sample pixel that is (255,46,58,78). It's an ARGB 32 bit pixel. Yet ReadRGBPixel returns 3029582 which is 2E3A4E or in decimal it is 46,58,78. So the alpha is missing. It's only RGB. That makes sense because it uses the same function as ReadPixel. Something strange happens when reading alpha pixels (less than 255). The color (12,0,0,0) has an alpha of 12 but ReadRGBPixel returns (146,146,146). So it seems that ReadRGBPixel uses Premultiplied Alpha with the background color (153 in this case). Part of the mystery is solved. Now can supply a sample value for WriteRGBPixel then go from there. After evaluating several alpha pixels in the original image and comparing the resulting values from ReadRGBPixel, worked out the Alpha Blending Formula. If the background color is (153,153,153) and the ARGB pixel is (13,0,0,0) this is the formula: <pre> //Alpha Blending //alpha=13 //factor= 1-[(roundup(alpha/3))/100] = (1 - 0.05) = 0.95 //value = (int)153*(factor) = (145,145,145). </pre> This is the DrawLargeImage function so far. In the screenshot "pixel buffer" is the byte buffer containing the pixel data from the original image which is the small image. Each ARGB pixel in the original image gets mapped to a region of pixels which are 2x2 in this case since pixelateSize=2. IFF Icon Data was missing a single padding byte at the end of IMAG one. 747 bytes should have been 747+1 to make it modulus 2. There was also an extra byte at the end of the Cmap for IMAG two. It was 0x58 in size but the extra byte made it 0x59 === PowerIcons PNG === Workbench (Wanderer) does not read anything directly itself - it relies on icon.library for "file" processing. The loading of PNG Icons does not happen using datatype *system*. It's done through libpng functions. To avoid that both icon.library and png.datatype have libpng statically linked in (double file/mem usage), it's done only for one of them: png.datatype. The png.datatype exposes some extra functions PNG_#?. See workbench/classes/datatypes/png/png.conf and directaccess.c in same directory. In workbench/libs/icon/diskobjPNGio.c you can see how the PNG_ functions are used to read the PNG icon. In there you'll also see a function MakePlanarImage(). It's one function which will certainly slow down things a bit. What is does (in very unoptimized way) is to create a very simple realtime remapped planar version of the PNG image(s) to be used on low color (LUT) screens. <pre> In libpng 1.5, png_ptr and info_ptr are opaque data types, and can't be dereferenced. Replace that code with the following (which works in both libpng 1.2 and 1.5) ... Write(png_get_io_ptr(png_ptr), data, length); ... The reason is that in a (near!) future version of libpng, the details of the png_ptr and info_ptr data structures may change dramatically. Changes are trivial, just grep for the old field name (ie 'io_ptr') in png.h, and use the appropriate accessor function. </pre> merge icon35 and png icons * png data would live in the IFF stream of the icon35 format (IFF type 'PNG ') * 4 color and icon35 image formats would be precomputed by the ilbmtoicon tool * AOS should be able to read and understand this format The easiest way to split PNG icons & retain the icOn chunk is to find the first 'IEND' & second 'IEND' if there is one then calculate filesize1 & filesize2 then read & write binary. You could use another method to get the images but the icOn chunk may be lost unless you locate it just before 'IEND' then save it to .bin file or store it some other way to later write to file. As far as classic Icons you can just read them sequentially. For AROS we can just use IconControl functions but for Windows or an OS other than AROS you need another method to read the icon data. Do OS4 and MorphOS use the same type of PNG icons as us, or a different variation? They use the same format (which PowerIcons originated), which is a plain PNG file named "*.info" with some extra PNG hunks in it to hold some icon data. (PNG is like IFF in that way). Extending the Icon 3.5 to include PNG data, so that (a) our generated ICONs can work on any Amiga system, including OS 1.x to 3.x, and (b) my poor 68000 can choose a planar image from the icon file instead of spending approx 7 seconds per icon converting from ARGB to 4-color planar. Existing PNG support will *not* be changed - so we should continue to be able to enjoy AmigaOS4 and Morphos icons sets on the faster processors. png images with special ic0n chunk embedded inside png. can be 1 or 2 png images. ic0n chunk stores the 'old' data required to fill f.e. a drawerdata structure. it is a taglist that can contain zero or more tags from the following list: <pre> ATTR_DRAWERX, ATTR_DRAWERY, ATTR_DRAWERWIDTH, ATTR_DRAWERHEIGHT, ATTR_DRAWERFLAGS, ATTR_DRAWERFLAGS2, ATTR_DRAWERFLAGS3, ATTR_VIEWMODES, ATTR_VIEWMODES2, ATTR_DD_CURRENTX, ATTR_DD_CURRENTY : ATTR_ICONX, ATTR_ICONY, ATTR_STACKSIZE, ATTR_TYPE, ATTR_FRAMELESS: ATTR_DEFAULTTOOL, ATTR_TOOLTYPE: </pre> Of course, each tag followed by its respective value. <syntaxhighlight lang="c"> void List_Icontype(char *name) { LONG length = 0; struct DiskObject *icon = NULL; Printf("Reading icOn chunk values...\n"); Printf("Icon Filename: %s\n", name); char *iconfile = RemoveFileExtension(name); icon = GetDiskObjectNew(iconfile); if (icon != NULL) { if (icon->do_Type) { LONG type = icon->do_Type; Printf("Icontype: %ld\n", type); } } FreeDiskObject(icon); } LONG List_Icon_Chunk_Deftool(char *name) { LONG length = 0; struct DiskObject *icon = NULL; Printf("Reading icOn chunk values...\n"); Printf("Icon Filename: %s\n", name); char *iconfile = RemoveFileExtension(name); icon = GetDiskObjectNew(iconfile); if (icon != NULL) { if (icon->do_DefaultTool) { Printf("Deftool: %s\n", icon->do_DefaultTool); length = strlen(icon->do_DefaultTool) + 1; } } FreeDiskObject(icon); return length; } LONG List_Icon_Chunk_Tooltype(char *name) { LONG length = 0; struct DiskObject *icon = NULL; Printf("Reading icOn chunk values...\n"); Printf("Icon Filename: %s\n", name); char *iconfile = RemoveFileExtension(name); icon = GetDiskObjectNew(iconfile); if (icon != NULL) { if (icon->do_ToolTypes) { int i = 0; char *tt = NULL; while ((tt = icon->do_ToolTypes[i]) != NULL) { Printf("Tooltype: %s\n", tt); length += strlen(icon->do_ToolTypes[i]) + 1; i++; } } } FreeDiskObject(icon); return length; } void List_Icon_Chunk_Tags(char *name, BPTR file, int curPos, LONG pSize) { ULONG attr; IPTR val = 0; UBYTE *chunkdata; UBYTE Buffer32[4]; LONG len = 0; LONG chunksize = pSize; LONG pOffset = (LONG)curPos; Printf("Reading icOn chunk tags...\n"); Printf("icOn chunk Size: %ld\n", pSize); Printf("icOn chunk Offset: %ld\n", pOffset); //#define ATTR_ICONX 0x80001001 //#define ATTR_ICONY 0x80001002 //#define ATTR_DRAWERX 0x80001003 //#define ATTR_DRAWERY 0x80001004 //#define ATTR_DRAWERWIDTH 0x80001005 //#define ATTR_DRAWERHEIGHT 0x80001006 //#define ATTR_DRAWERFLAGS 0x80001007 //#define ATTR_TOOLWINDOW 0x80001008 //OS4: STRPTR, tool window string, length including the tag, multiple of 8 //#define ATTR_STACKSIZE 0x80001009 //#define ATTR_DEFAULTTOOL 0x8000100a //#define ATTR_TOOLTYPE 0x8000100b //#define ATTR_VIEWMODES 0x8000100c //OS4 PNG use that //#define ATTR_DD_CURRENTX 0x8000100d //OS4 ULONG, drawer view X offset //#define ATTR_DD_CURRENTY 0x8000100e //OS4 ULONG, drawer view Y offset //#define ATTR_TYPE 0x8000100f //OS4 icon type (WBDISK...WBKICK) //#define ATTR_FRAMELESS 0x80001010 //OS4 ULONG, frameless property //#define ATTR_DRAWERFLAGS3 0x80001011 //OS4 ULONG, drawer flags //#define ATTR_VIEWMODES2 0x80001012 //OS4 ULONG, drawer view modes //#define ATTR_DRAWERFLAGS2 0x80001107 //written from AFA to store needed dopus Magellan settings while(pSize >= 4) //(pOffset < chunksize) { /* Read icOn chunk attribute tag */ Seek(file,pOffset,OFFSET_BEGINNING); Read(file,Buffer32, 4); //length = 4; attr = (Buffer32[0] << 24) | (Buffer32[1] << 16) | (Buffer32[2] << 8) | Buffer32[3]; pOffset += 4; //offset + 4 pSize -=4; //size - 4 /* Read icOn chunk value tag */ Seek(file,pOffset,OFFSET_BEGINNING); Read(file,Buffer32, 4); //length = 4; val = (Buffer32[0] << 24) | (Buffer32[1] << 16) | (Buffer32[2] << 8) | Buffer32[3]; pOffset += 4; //offset + 4 pSize -=4; //size - 4 /* Compare icOn chunk attribute tags */ if(attr == 0x80001001) Printf("IconX: %ld\n", val); if(attr == 0x80001002) Printf("IconY: %ld\n", val); if(attr == 0x80001003) Printf("DrawerX: %ld\n", val); if(attr == 0x80001004) Printf("DrawerY: %ld\n", val); if(attr == 0x80001005) Printf("Drawerwidth: %ld\n", val); if(attr == 0x80001006) Printf("Drawerheight: %ld\n", val); if(attr == 0x80001007) Printf("Drawerflag: %ld\n", val); if(attr == 0x80001008) Printf("Toolwin: %ld\n", val); if(attr == 0x80001009) Printf("Stacksize: %ld\n", val); if(attr == 0x80001010) Printf("Frameless: %ld\n", val); if(attr == 0x8000100f) Printf("Icontype: %ld\n", val); //if(attr == 0x8000100a) Printf("Deftool found.\n"); //if(attr == 0x8000100b) Printf("Tooltype found.\n"); if(attr == 0x8000100a) { Printf("Deftool found.\n"); len = List_Icon_Chunk_Deftool(name); pOffset += len; } if(attr == 0x8000100b) { Printf("Tooltype found.\n"); len = List_Icon_Chunk_Tooltype(name); pOffset += len; } } /* while(chunksize >= 4) */ } </syntaxhighlight> <syntaxhighlight lang="c"> </syntaxhighlight> == Handling == Handling of icons by an AppWindow/Menu/Icon. That's how the concept of graphically dealing with files (represented as icon objects) from an already running application was implemented from Kickstart 2.04 on. So selecting icons isn't enough for any application to be aware of it: the user has to do one more action (which is to drag the selected icon(s) towards an AppWindow/Icon or to select an AppMenu). Wanderer only allows to use AppWindows yet. So promote your window as an AppWindow, then listen to the AppMessage and act accordingly. If you want to act on more than one icon at a time, you will need to adapt the code to browse AppMessage->am_ArgList as many times as AppMessage->am_NumArgs ... Our "DefaultIcon" implementation was better (and more like the original) - it would be easy to add default Icons that use pattern matching rather than the less efficient datatype matching. If the icon is associated with a directory (WBDISK, WBDRAWER, WBGARBAGE), it needs a DrawerData structure to go with it. This structure contains an Intuition NewWindow structure [...] Workbench uses it to hold the current window position and size of the window so it will reopen in the same place. for a directory, the icon is stored in a .info file at the same level where the directory name appears (not in the directory itself). The icon type should be set to DRAWER. The icon for a disk should always be stored in a file named disk.info at the root level directory of the disk. The icon type should be set to DISK. (The icon type can be set and the icon imagery edited with the IconEdit program.) So it is clear that an Amiga disk named "foo" contains a file named "disk.info" at the root: here is the imagery of the icon of the disk (seen on the main Workbench window and associated with the name "foo"), and here is also the coordinates of the window to be opened when the user double-clicks on it. If the disk contains a drawer named "bar" with an icon, you can use "C:List foo:" to be able to read the content which should at least include "bar" (which is the drawer itself) and "bar.info" (which contains the drawer icon imagery (seen in the foo window on workbench screen) _and_ the coordinates of the window to be opened when the user double-clicks on this bar icon). Of course it is possible to have disks without icons, and drawers without icons: in such cases, Workbench can provide default ones (and always do for disks). AFAIK Amiga icons are handled like that: Open them doing something like struct DiskObject *icon = GetIconTags(PUT_YOUR_TAGS_HERE); and then you can for example read the coordinates of the icon by printf("Icon X coord. in drawer/on WorkBench: %ldn",icon->do_CurrentX); printf("Icon Y coord. in drawer/on WorkBench: %ldn",icon->do_CurrentY); and if it's the icon of a drawer or of a disk (then the info file contains a DrawerData structure), you can read the coordinates of the window to open when double-clicking on the icon: printf("Left Edge position of drawer's window: %dn",icon->do_DrawerData->dd_NewWindow.LeftEdge); printf("Top Edge position of drawer's window: %dn",icon->do_DrawerData->dd_NewWindow.TopEdge); printf("Drawer's window Width: %dn",icon->do_DrawerData->dd_NewWindow.Width); printf("Drawer's window Height: %dn",icon->do_DrawerData->dd_NewWindow.Height); If it's a drawer (or disk) icon designed for OS2+, it contains Flags and ViewModes in DrawerData structure that store the way icons are shown in the drawer's window: you can read it by something like: <syntaxhighlight lang="c"> switch(icon->do_DrawerData->dd_Flags) { case 0: printf("Default"); break; case 1: printf("Show only icons"); break; case 2: printf("Show all files"); break; case 3: printf("Show all files"); break; default: printf("Only values between 0 an 3 should be found here"); } switch(icon->do_DrawerData->dd_ViewModes) { case 0: printf("Default (inherit from parent)"); break; case 1: printf("View as icons"); break; case 2: printf("View as text, sorted by name"); break; case 3: printf("View as text, sorted by date"); break; case 4: printf("View as text, sorted by size"); break; case 5: printf("View as text, sorted by type"); break; default: printf("Only values between 0 an 5 should be found here"); } </syntaxhighlight> The default icons to specify possible operations for an Icon (thereby filetype) via the default icons tooltypes. The normal Icon behaviour would still be used for its default action but it could also expose specific actions for that file type, e.g. <pre > ICON_ACTION="Preview","SYS:Utiltieis/MultiView" ICON_ACTION="Edit","Extras:Gfx/LunaPaint" </pre > ==Tooltype== from http://utilitybase.com/forum/index.php?action=vthread&forum=2&topic=1252 Be very careful with modifying the tooltypeslist in an icon. # Read in an icon (Icon->GetdiskObject()) # Build a new tooltypeslist # Copy the address of the current tooltypelist to a safe place # Copy the address of the NEW tooltypeslist to the icon # Rewrite the icon (Icon->PutDiskObject()) # Copy the address of the old tooltypeslist from the safe place BACK into the icon # Free the diskobject (Icon->FreeDiskObject()) 6 and 7 are not actually necessary. icon.library keeps track of all the data associated with a loaded icon through a mechanism attached to the 'struct DiskObject' itself, in the private undocumented part of the structure. It does not follow the pointers or assume that they point somewhere meaningful. In essence, this means that you can modify every bit of information in the documented portion of the 'struct DiskObject' without ill effects. But you have to be careful that the information is in itself consistent if you want to write it back to disk. While icon.library does perform some sanity checking, especially icon.library V44 and beyond, there is only so much you can do. Applications generally want to call [http://amigadev.elowar.com/read/ADCD_2.1/Includes_and_Autodocs_3._guide/node034E.html GetDiskObjectNew()] -- rather than GetDiskObject() -- to get disk objects for icons dropped in the window <syntaxhighlight lang="c"> #include <workbench/workbench.h> #include <workbench/icon.h> #include <proto/icon.h> #include <stdio.h> int main(int argc, char **argv) { STRPTR newToolTypes[] = { "AROS=RULES", "Tooltypes are actually free-form text", "Ain't that neat?", NULL }; struct DiskObject *icon = GetIconTags ( "writetooltypes", ICONGETA_FailIfUnavailable, FALSE, TAG_DONE ); if (icon != NULL) { STRPTR *oldToolTypes = icon->do_ToolTypes; icon->do_ToolTypes = newToolTypes; if (!PutIconTags("writetooltypes", icon, TAG_DONE)) { printf("ERROR: Failed to write icon.\n"); } icon->do_ToolTypes = oldToolTypes; FreeDiskObject(icon); } else { printf("ERROR: Failed to open icon for file\n"); return 20; } return 0; } </syntaxhighlight> ==LayoutIcon== Currently, LayoutIcon is unimplemented, and an idea that could save me a lot of RAM for PNG images, when they are rendered on low-color screens. The idea is to use LayoutIcon() to render the icon into the Screen's bitmap layout, and use that as the gadget imagery for the icon, and FreeMem() the PNG or other high-color icon imagery. This is similar to how AOS does things, but with one trick - I 'remember' what image format (and offset and size in the .icon file) was originally there, and when PutDiskObject() is called I carefully avoid scribbling on the image data, preserving the original image. But you need update the images, when a user change the screen depth. In AFA layoutIcon is too unimplement, i add some times before a jump in debugger command when function is called to test.if a program use this function.I see that workbench not use this function.also other programs do not use. But a speedup of AROS iconlib and much less memory usage is possible, when you make a cache, so that all default Icons only load once.getdiskobject give then only a pointer to existing default icon. The problem on AROS is, it load every time the icon in and use new memory. For example if you show 100 jpg files, then 100* the icon def_jpg.info is load.so 100* memory usage and load time usage. As wanderer loads always all icons, even if only icon view is select. ==transparent PNG== graphics.lbrary BltMaskBitMapRastPort is useful <syntaxhighlight lang="c"> static void Change_State(int Reset) { int x; for(x=Levels_Struct[CurrentLevel].Beginning; x<IconCounter; x++) { if(Icons_Struct[x].Icon_OK) { if(Icons_Struct[x].Icon_Status != 0) { if(Reset == 0) { if((Icons_Struct[x].Icon_Status & ICON_ACTIVE) == 0 && Icons_Struct[x].Icon_Status < 4) { // 11000111b Icons_Struct[x].Icon_Status = (Icons_Struct[x].Icon_Status - 1) & 0xC7; } else { Icons_Struct[x].Icon_Status = (Icons_Struct[x].Icon_Status + 1) & 0xC7; } } else { Icons_Struct[x].Icon_Status = 0; } Insert_Icon((Icons_Struct[x].Icon_Status & SELECTED_ICON) ? IDS_SELECTED : IDS_NORMAL, x); } } } } static void Insert_Icon(int Tryb, int IconNumber) { BltBitMapRastPort(BMP_Buffer, Icons_Struct[IconNumber].Icon_PositionX, 0, &RP_DoubleBuffer, //Window_struct->RPort, 0, //Icons_Struct[IconNumber].Icon_PositionX, 0, Icons_Struct[IconNumber].Icon_Width + 1, WindowHeight, 0xC0); DrawIconState(&RP_DoubleBuffer, //Window_struct->RPort, Icon[IconNumber], NULL, 0, //Icons_Struct[IconNumber].Icon_PositionX, Icons_Struct[IconNumber].Icon_PositionY - MovingTable[(Icons_Struct[IconNumber].Icon_Status & 0x07)], Tryb, ICONDRAWA_Frameless, TRUE, ICONDRAWA_EraseBackground, FALSE, TAG_DONE); BltBitMapRastPort(BMP_DoubleBuffer, 0, 0, Window_struct->RPort, Icons_Struct[IconNumber].Icon_PositionX, 0, Icons_Struct[IconNumber].Icon_Width + 1, WindowHeight, 0xC0); } static void Blink_Icon(int IconNumber) { int x, Tryb=IDS_SELECTED; for(x=0; x<8; x++) { Insert_Icon(Tryb, IconNumber); Delay(3); if(Tryb == IDS_NORMAL) Tryb = IDS_SELECTED; else Tryb = IDS_NORMAL; } } </syntaxhighlight> ==Datatype Detection== The icon.library uses the datatype descriptors from sys:devs/datatypes to identify the file type. Then a default icon def_NAME.info is used for a file with a type of NAME. The AROS build-system uses the tool createdtdesc to create datatype descriptors from simple text files. ==Bugs== After icons can be moved, it will be good to be able to snapshot their position. And the position of the window in the drawer icon. But beware that IIRC there is a bug/unimplemented feature somewhere (in icon.library?) that prevents it to store properly DrawerData struct (dd_Flags and dd_NewWindow members) in all cases. So Wanderer suffers of the problem too currently, and you can't both save the "View All Files" state _and_ snapshot the window position of a drawer. # having a database in the dir containing mappings is also inefficient when working with individual files - perhaps more so than matching using deficons/datatypes (which generally scan the first bytes of a file only). What happens in a large directory and the file you are querying is deep within the database? slower performance.. # modern filesystems can store additional metadata with files - e.g. in NTFS pretty much everything is an attribute of some form or other, it wouldnt take much to make it possible to include querying/setting such attributed as part of most amigaos code's exall/exnext dir scanning loops. one scenario is some combination of using file system meta data and our default icons. An application scans a directory of files using the normal AmigaOS routines. we provide a new routine (*) to query a file/locks attributes (which uses packets to speak with the file system handler and query the meta data) which we use to request the data formats attribute. This shouldn't incur any/much IO penalty since the meta data is most likely already cached as part of scanning the dir. if the attribute isn't available we can then use default icons pattern/data matching to identify the file - and optionally then set the attribute if the file system does support meta-data. (*) perhaps this call could be handled in the deficon code itself anyhow, so that existing amigaos code that uses icon.library, etc, would benefit from it without need for change. <pre> function readIFFICON(file){ var index = file.index; var img = {states:[]}; function readChunk(){ var chunk = {}; chunk.name = file.readString(4); chunk.size = file.readDWord(); return chunk; } while (index<file.length-4){ file.goto(index); var chunk = readChunk(); index += chunk.size + 8; if (chunk.size%2 === 1) index++; switch (chunk.name){ case "FACE": img.width = file.readUbyte() + 1; img.height = file.readUbyte() + 1; img.flags = file.readUbyte(); img.aspectRatio = file.readUbyte(); //upper 4 bits:x aspect, lower 4 bits: y aspect img.MaxPaletteSize = file.readWord(); console.log("Icon is " + img.width + "x" + img.height); break; case "IMAG": var endIndex = file.index + chunk.size; var state = {}; state.transparentIndex = file.readUbyte(); state.NumColors = file.readUbyte() + 1; state.flags = file.readUbyte(); state.imageCompression = file.readUbyte(); state.paletteCompression = file.readUbyte(); state.depth = file.readUbyte(); state.imageSize = file.readWord() + 1; state.paletteSize = file.readWord() + 1; state.pixels = []; state.palette = []; var imageDataOffset = file.index; var paletteDataOffset = imageDataOffset + state.imageSize; if (state.imageCompression){ // note: this is BIT aligned, not byte aligned ... // -> RLE control chars are 8 bits, but the data elements are n bits, determined by state.depth var max = (state.imageSize-1) * 8; var bitIndex = 0; while (bitIndex < max) { var b = file.readBits(8,bitIndex,imageDataOffset); bitIndex += 8; if (b > 128) { var b2 = file.readBits(state.depth,bitIndex,imageDataOffset); bitIndex += state.depth; for (var k = 0; k < 257 - b; k++) state.pixels.push(b2); } if (b < 128) { for (k = 0; k <= b; k++){ state.pixels.push(file.readBits(state.depth,bitIndex,imageDataOffset)); bitIndex += state.depth; } } } }else{ // note: uncompressed data is BYTE aligned, even if state.depth < 8 for (var i = 0; i < state.imageSize; i++){ state.pixels.push(file.readUbyte()) } } if (state.paletteSize){ file.goto(paletteDataOffset); var rgb = []; var bitsPerColorByte = 8; if (state.paletteCompression){ var max = (state.paletteSize-1) * 8; var bitIndex = 0; while (bitIndex < max) { var b = file.readBits(8,bitIndex,paletteDataOffset); bitIndex += 8; if (b > 128) { var b2 = file.readBits(bitsPerColorByte,bitIndex,paletteDataOffset); bitIndex += bitsPerColorByte; for (var k = 0; k < 257 - b; k++) rgb.push(b2); } if (b < 128) { for (k = 0; k <= b; k++){ rgb.push(file.readBits(bitsPerColorByte,bitIndex,paletteDataOffset)); bitIndex += bitsPerColorByte; } } } }else{ for (i = 0; i < state.paletteSize; i++){ rgb.push(file.readUbyte()) } } if (rgb.length>2){ for (i = 0, max = rgb.length; i<max; i+=3){ state.palette.push([rgb[i],rgb[i+1],rgb[i+2]]) } } } img.states.push(state); break; case "ARGB": // zlib compressed // found some info/structure on https://amigaworld.net//modules/newbb/viewtopic.php?viewmode=flat&order=0&topic_id=34625&forum=15&post_id=639101#639062 console.log("decoding ARGB data"); var state = {}; state.rgba = true; state.pixels = []; state.palette = []; for (var offset = 0; offset<10;offset++){ // no idea what this data structure is ... // first DWORD always seem to be 1? state.dummy = file.readUbyte(); //console.log(state.dummy); } var size = chunk.size-offset; var data = new Uint8Array(size); for (var i = 0; i<size; i++){ data[i] = file.readUbyte(); } try{ var a; if (typeof Zlib !== "undefined"){ // running in browser a = new Zlib.Inflate(data).decompress(); }else{ // running in node var zlib = require('zlib'); a = zlib.inflateSync(data); } for (var y = 0; y<img.height; y++){ for (var x = 0; x<img.width; x++){ var pixelIndex = (y*img.width + x) * 4; var color = [a[pixelIndex+1]||0,a[pixelIndex+2]||0,a[pixelIndex+3]||0,(a[pixelIndex]||0)/255]; state.pixels.push(color); } } img.states.push(state); }catch (e) { console.log("invalid zlib structure"); } break; default: console.log("unhandled IFF chunk: " + chunk.name); break; } } return img; } /**************************************************************************************************/ static char *DecodeOS35(unsigned char *buffer, LONG numbytes, LONG bits, struct IconImage *im, enum DecodeType type, LONG mode) { int cop = 0, loop = 0, entries, numbits = 0, mask, curentry = 0; ULONG bitbuf = 0; ULONG byte; //DecodeNew(buffer+10, numi, imf ? dep : 8, im, DECODE_IMAGE, imf) //DecodeNew(buffer+10+numi, nump, 8, im, DECODE_PALETTE, palf) Printf ("DecodeOS35 - mode: %ld\n", mode); Printf ("DecodeOS35 - bits: %ld\n", bits); Printf ("DecodeOS35 - bytes: %ld\n", numbytes); Printf ("DecodeOS35 - colors: %ld\n", im->NumColors); Printf ("Icon Image Dimensions: %ld, %ld\n", im->Width, im->Height); if(type == DECODE_IMAGE) Printf ("DECODE_IMAGE\n"); if(type == DECODE_PALETTE) Printf ("DECODE_PALETTE\n"); //WriteData("Ram Disk:imgdata1.bin", buffer, numbytes); if(!mode) /* no RLE */ cop = numbytes*8/bits; //planar Size if(type == DECODE_PALETTE) entries = im->NumColors*3; else entries = im->Width*im->Height; mask = (1<<bits)-1; /* UnpackByteRun RLE */ while((numbytes || (cop && numbits >= bits)) && (curentry < entries)) { if(!cop) /* RLE */ { if(numbits < 8) { bitbuf = (bitbuf<<8)|*(buffer++); --numbytes; numbits += 8; } byte = (bitbuf>>(numbits-8))&0xFF; numbits -= 8; if(byte <= 127) cop = byte+1; else if(byte > 128) loop = 256-byte+1; else continue; } if(cop) ++loop; if(numbits < bits) { bitbuf = (bitbuf<<8)|*(buffer++); --numbytes; numbits += 8; } byte = (bitbuf>>(numbits-bits))&mask; while(loop && (curentry < entries)) { if(type == DECODE_PALETTE) { /* NOTE: This may not be very fast, but for sure portable */ switch(curentry%3) { case 0: im->Palette[curentry/3].Red = byte; break; case 1: im->Palette[curentry/3].Green = byte; break; case 2: im->Palette[curentry/3].Blue = byte; break; } } else im->ImageData[curentry] = byte; ++curentry; --loop; } if(cop) --cop; numbits -= bits; } //return "DecodeOS35 completed successfully"; return curentry != entries ? "error decoding icon data" : 0; } /**************************************************************************************************/ </pre> ==Examples== <syntaxhighlight lang="c"> </syntaxhighlight> <syntaxhighlight lang="c"> /* Example for changing icon tooltypes. */ #include <proto/exec.h> #include <proto/dos.h> #include <proto/icon.h> #include <workbench/startup.h> #include <stdlib.h> #include <stdio.h> #include <string.h> static STRPTR conwinname = "CON:30/50/500/400/Tooltype parsing/AUTO/CLOSE/WAIT"; static BPTR conwin; static BPTR olddir = (BPTR)-1; static struct DiskObject *dobj; static STRPTR *oldtoolarray, *newtoolarray; static void clean_exit(CONST_STRPTR s); int main(int argc, char **argv) { if (argc) { clean_exit("Application must be started from Wanderer."); /* See dos_readargs.c for start from Shell. */ } else { struct WBStartup *wbmsg = (struct WBStartup *)argv; struct WBArg *wbarg = wbmsg->sm_ArgList; STRPTR *toolarray; LONG toolcnt = 0; LONG idx; /* An application started from Wanderer doesn't have a console window for output. We have to open our own con: window or all output will go to Nirwana. */ conwin = fopen(conwinname, "w"); if (!conwin) { clean_exit("Can't open console window"); } if ( (wbarg->wa_Lock) && (*wbarg->wa_Name) ) { fprintf(conwin, "Trying to open %s\n", wbarg->wa_Name); /* We must enter the directory of the icon */ olddir = CurrentDir(wbarg->wa_Lock); dobj = GetDiskObject(wbarg->wa_Name); if (dobj) { /* Remember the old toolarray, so that we can put it back later. */ oldtoolarray = dobj->do_ToolTypes; /* Count entries */ if (oldtoolarray) { toolarray = oldtoolarray; while (*toolarray) { toolcnt++; toolarray++; } } fprintf(conwin, "Old icon has %d tooltype entries\n", toolcnt); /* Create new toolarray */ newtoolarray = AllocVec(sizeof(STRPTR) * (toolcnt + 3), MEMF_ANY); if (!newtoolarray) { clean_exit("Can't allocate memory for new toolarray"); } /* Add two new entries and copy the pointers to the old values. If w'd want to change the strings we'd have to work with copies of the strings. */ newtoolarray[0] = "START"; for (idx = 0 ; idx < toolcnt; idx++) { newtoolarray[idx+1] = oldtoolarray[idx]; } newtoolarray[toolcnt + 1] = "END"; newtoolarray[toolcnt + 2] = NULL; /* Change toolarray pointer and save icon. */ dobj->do_ToolTypes = newtoolarray; if (!PutDiskObject(wbarg->wa_Name, dobj)) { clean_exit("Can't write Diskobject"); } } else { clean_exit("Can't open DiskObjekt"); } } } clean_exit(NULL); return 0; } static void clean_exit(CONST_STRPTR s) { if (s) { if (conwin) { fprintf(conwin, "%s\n", s); } else { printf("%s\n", s); } } /* Give back allocated resourses */ if (conwin) fclose(conwin); /* Free DiskObject. We have to set back the pointer to the toolarray or we'll get memory corruption. */ if (dobj) { dobj->do_ToolTypes = oldtoolarray; FreeDiskObject(dobj); } FreeVec(newtoolarray); /* Switch back to old directory. It's important that the directory which was active at program start is set when the application is quit. */ if (olddir != (BPTR)-1) { CurrentDir(olddir); olddir = (BPTR)-1; } exit(0); } </syntaxhighlight> <syntaxhighlight lang="c"> </syntaxhighlight> The problem with an SVG based icon is that's there's no place to store the icon data itself. In PNG icons they use an icOn chunk. Classic Icons store icon attributes in the diskobject data, etc. But SVG would have to be a hybrid icon. Classic Amiga Icon File at the beginning. Where the IFF data for a Glow Icon would normally be is instead the beginning of the SVG data. How many images can it store? SVG is a very flexible format because it allows to embed vector, bitmap and text content, and transformations / filters / animations, so you don't even need to define something like dual PNGs (one SVG should be enough to emulate it). SVG allows to define metadata of any kind, that can be used to store the icon attributes (and much more). You can add those tags everywhere (AFAIR), so even at beginning of the [https://www.w3.org/TR/SVG11/metadata.html XML data] (this can be "forced" as a requirement for those new icons, if it's needed). ==Reference== <pre> struct DiskObject *NewDiskObject(ULONG type) struct DiskObject *GetIconTagList(CONST_STRPTR name, const struct TagItem *tags) struct DiskObject *GetDiskObject(CONST_STRPTR name) BOOL PutDiskObject(CONST_STRPTR name, struct DiskObject *icon) void FreeDiskObject(struct DiskObject *diskobj) BOOL AddFreeList(struct FreeList *freelist, APTR mem, unsigned long size) void FreeFreeList(struct FreeList *freelist) UBYTE *FindToolType(const STRPTR *toolTypeArray, const STRPTR typeName) BOOL MatchToolValue(UBYTE *typeString, UBYTE *value) UBYTE *BumpRevision(UBYTE *newname, UBYTE *oldname) struct DiskObject *GetDefDiskObject(LONG type) BOOL PutDefDiskObject(struct DiskObject *icon) struct DiskObject *GetDiskObjectNew(CONST_STRPTR name) BOOL DeleteDiskObject(UBYTE *name) struct DiskObject *DupDiskObjectA(struct DiskObject *icon, struct TagItem *tags) ULONG IconControlA(struct DiskObject *icon, struct TagItem *tags) void DrawIconStateA(struct RastPort *rp, struct DiskObject *icon, STRPTR label, LONG leftEdge, LONG topEdge, ULONG state, struct TagItem *tags) BOOL GetIconRectangleA(struct RastPort *rp, struct DiskObject *icon, STRPTR label, struct Rectangle *rectangle, struct TagItem *tags) BOOL PutIconTagList(CONST_STRPTR name, struct DiskObject *icon, struct TagItem *tags) BOOL LayoutIconA(struct DiskObject *icon, struct Screen *screen, struct TagItem *tags) void ChangeToSelectedIconColor(struct ColorRegister *cr) </pre> {{BookCat}} gqck2f571k2c37pdf6oz0mzgcbp693s 4656657 4656655 2026-08-07T15:33:39Z Jeff1138 301139 4656657 wikitext text/x-wiki {{ArosNav}} ==Introduction== * 1980s - OS1.x (4 col) - OS 2/3 (4 col) * 1990s - [http://en.wikipedia.org/wiki/NewIcons NewIcons] (size 36x40 x 32 col) - [http://en.wikipedia.org/wiki/Glowicons GlowIcons] (size 46x46 x 256 col) - * 2000s PowerIcons (24bit) Possibilities for the future * SVG or SVGZ - Haiku [http://www.haiku-os.org/tags/icons_0 HVIF] has a reduced format. There are several formats used by Amiga/AROS computers to display icons for each program/project you want to access from the graphical user interface Workbench. The Classic Icon is the basis for three of the Icon styles supported by AROS. The Amiga Glow Icon is a Classic Icon (Old Icon Format) with OS 3.5 IFF Icon Data attached at the end. The IFF data contains the images that AROS displays. An OS4 icon is a Classic Icon with OS 3.5 Data attached. But unlike a Glow Icon it only has a 'FACE' chunk with no 'IMAG' chunks. It has 2 'ARGB' chunks at the end of the Icon file that are used to display. The AROS Hybrid Icon or ARGB Icon is similar to the OS4 Icon but it has a complete Glow Icon that 2 ARGB chunks are attached to at the end. On AROS icons with different sizes result in misalignment and clutter among icons, already square icons at the same size as Round icons, will look large. Also, folders that have edges or protrusions such as handles will appear smaller, this is why different sizes for Icon Sets. Best to be aware of misalignment issues with icons. Most icons are 46x46. Folder image area is 42x42 but regular icon image area just like other AROS Glow Icons is 38x38 A note about the used data descriptors that are used throughout from here. All elements are in Motorola byte order (highest byte first): <pre> APTR - a memory pointer (usually this gets a boolean meaning on disk) BYTE - a single byte -128..127 UBYTE - an unsigned byte 0..255 WORD - a signed 16 bit value -32768..32767 UWORD - an unsigned 16 bit value 0..65535 LONG - a signed 32 bit value -2147483648..2147483647 ULONG - a unsigned 32 bit value 0..4294967295 </pre> There are lots of elements marked with ???. These are usually filled with values, which have no effect at all. Thus they can normally be ignored. For some values the usual contents is described. === OS1.x/OS2.x format === The OS1.x/OS2.x format is storage of the in-memory structures on disk. This text tries to show which values are important and which are not. <pre> 0x00 UWORD ic_Magic always 0xE310 0x00 UWORD ic_Version always 1 0x04 struct Gadget (described below) 0x30 UBYTE ic_Type 1 DISK a disk 2 DRAWER a directory 3 TOOL a program 4 PROJECT a project file with defined program to start 5 GARBAGE the trashcan 6 DEVICE should never appear 7 KICK a kickstart disk 8 APPICON should never appear 0x31 UBYTE ic_Pad <undefined> 0x32 APTR ic_DefaultTool <boolean> 0x36 APTR ic_ToolTypes <boolean> 0x3A LONG ic_CurrentX X position of icon in drawer/on WorkBench 0x3E LONG ic_CurrentY Y position of icon in drawer/on WorkBench 0x42 APTR ic_DrawerData <boolean> 0x46 APTR ic_ToolWindow <boolean> 0x4A LONG ic_StackSize the stack size for program execution (values < 4096 mean 4096 is used) </pre> This is followed by certain other data structures: <pre> struct DrawerData if ic_DrawerData is not zero (see below) struct Image first image struct Image second image if ga_SelectRender not zero (see below) in gadget structure DefaultTool text if ic_DefaultTool not zero (format see below) ToolTypes texts if ic_ToolTypes not zero (format see below) ToolWindow text if ic_ToolWindow not zero (format see below) this is an extension, which was never implemented struct DrawerData2 if ic_DrawerData is not zero and ga_UserData is 1 (see below) </pre> Now a description of the sub-formats: a) The text storage method (DefaultTool, ToolWindow and ToolTypes): <pre> 0x00 ULONG tx_Size the size of tx_Text including zero byte (tx_Zero) 0x04 ... tx_Text the plain text .... UBYTE tx_Zero the finishing zero byte </pre> This means the text "Hallo" will be encoded as \00\00\00\06Hallo\00. As ToolTypes are an array of texts the encoding is preceded by another ULONG value containing the number of entries. But to make parsing more interesting it is not the number as one would expect, but the number of entries increased by one and multiplied by 4. Thus 10 entries will have 44 as count. b) The Gadget structure: <pre> 0x00 APTR ga_Next <undefined> always 0 0x04 WORD ga_LeftEdge unused ??? 0x06 WORD ga_TopEdge unused ??? 0x08 WORD ga_Width the width of the gadget 0x0A WORD ga_Height the height of the gadget 0x0C UWORD ga_Flags gadget flags bit 2 always set (image 1 is an image ;-) bit 1 if set, we use 2 image-mode bit 0 if set we use backfill mode, else complement mode complement mode: gadget colors are inverted backfill mode: like complement, but region outside (color 0) of image is not inverted As you see, it makes no sense having bit 0 and 1 set. 0x0E UWORD ga_Activation <undefined> 0x10 UWORD ga_GadgetType <undefined> 0x12 APTR ga_GadgetRender <boolean> unused??? always true 0x16 APTR ga_SelectRender <boolean> (true if second image present) 0x1A APTR ga_GadgetText <undefined> always 0 ??? 0x1E LONG ga_MutualExclude <undefined> 0x22 APTR ga_SpecialInfo <undefined> 0x26 UWORD ga_GadgetID <undefined> 0x28 APTR ga_UserData lower 8 bits: 0 for old, 1 for icons >= OS2.x upper 24 bits: undefined </pre> c) The DrawerData structure: This structure is useful for drawers and disks (but there are some icons of other types, which still have these obsolete entries). <pre> 0x00 struct NewWindow (see below) 0x30 LONG dd_CurrentX the current X position of the drawer window contents (this is the relative offset of the drawer drawmap) 0x34 LONG dd_CurrentY the current Y position of the drawer window contents </pre> d) The NewWindow structure used by DrawerData: <pre> 0x00 WORD nw_LeftEdge left edge distance of window 0x02 WORD nw_TopEdge top edge distance of window 0x04 WORD nw_Width the width of the window (outer width) 0x06 WORD nw_Height the height of the window (outer height) 0x08 UBYTE nw_DetailPen always 255 ??? 0x09 UBYTE nw_BlockPen always 255 ??? 0x0A ULONG nw_IDCMPFlags <undefined> 0x0E ULONG nw_Flags <undefined> 0x12 APTR nw_FirstGadget <undefined> 0x16 APTR nw_CheckMark <undefined> 0x1A APTR nw_Title <undefined> 0x1E APTR nw_Screen <undefined> 0x22 APTR nw_BitMap <undefined> 0x26 WORD nw_MinWidth <undefined> often 94, minimum window width 0x28 WORD nw_MinHeight <undefined> often 65, minimum window height 0x2A UWORD nw_MaxWidth <undefined> often 0xFFFF, maximum window width 0x2C UWORD nw_MaxHeight <undefined> often 0xFFFF, maximum window width 0x2E UWORD nw_Type <undefined> </pre> e) The DrawerData2 structure for OS2.x drawers: <pre> 0x00 ULONG dd_Flags flags for drawer display value 0 handle viewmode like parent drawer current setting (OS1.x compatibility mode) bit 0 view icons bit 1 view all files (bit 0 maybe set or unset with this) 0x04 UWORD dd_ViewModes viewmodes of drawer display value 0 show icons (OS1.x compatibility mode) value 1 show icons value 2 show sorted by name value 3 show sorted by date value 4 show sorted by size value 5 show sorted by type </pre> f) And now the last element, the Image structure: <pre> 0x00 WORD im_LeftEdge always 0 ??? 0x00 WORD im_TopEdge always 0 ??? 0x04 WORD im_Width the width of the image 0x06 WORD im_Height the height of the image 0x08 WORD im_Depth the image bitmap depth 0x0A APTR im_ImageData <boolean> always true ??? 0x0E UBYTE im_PlanePick foreground color register index 0x0F UBYTE im_PlaneOnOff background color register index 0x10 APTR im_Next always 0 ??? </pre> This is followed by the image data in planar mode. The width of the image is always rounded to next 16bit boundary. loads an ILBM file to get the chunky image data which consists of index values. The image data is processed by RemapIconImage which maps the index values to a standard 4-color palette. Write_Image then writes the planar data to file. === NewIcon extension === As the original classic icon format is very limited when using more than the 4 or 8 default colors and also when using different palette sets than the default, there have been ideas how to circumvent this. A Shareware author invented NewIcons format, which uses the ToolTypes to store image data, as expanding the original format very surely would have broken compatibility. The NewIcons stuff usually starts with following 2 ToolTypes text (text inside of the "" only): "*** DON'T EDIT THE FOLLOWING LINES!! ***" Afterwards the image data is encoded as ASCII. The lines for first image always start with "IM1=". If present the second image starts with "IM2=". The first line of each image set contains the image information and the palette. <pre> 0x00 UBYTE ni_Transparency "B" transparency on "C" transparency off 0x01 UBYTE ni_Width image width + 0x21 - "}" means width 92 0x02 UBYTE ni_Height image height + 0x21 - "}" means height 92 0x03 UWORD ni_Colors ASCII coded number of palette entries: entries are: ((buf[3]-0x21)<<6)+(buf[4]-0x21) "!'" means 6 entries </pre> Afterwards the encoded palette is stored. Each element has 8 bit and colors are stored in order red, green, blue. The encoded format is described below. The ni_Width and ni_Height maximum values are 93. The maximum color value is theoretically 255. I have seen images with at least 257 stored colors (but less than 256 used). The following lines contain the image data encoded with the same system as the palette. The number of bits used to encode an entry depends of the number of colors (6 colors f.e. need 3 bit). The lines have maximum 127 bytes including the "IM1=" or "IM2=" header. Thus including the zero byte, the string will be 128 byte. En/Decoding algorithm: <pre> Each byte encodes 7bit (except the RLE bytes) Bytes 0x20 to 0x6F represent 7bit value 0x00 to 0x4F Bytes 0xA1 to 0xD0 represent 7bit value 0x50 to 0x7F Bytes 0xD1 to 0xFF are RLE bytes: 0xD1 represents 1*7 zero bits, 0xD2 represents 2*7 zero bits and the last value 0xFF represents 47*7 zero bits. </pre> Opposite to the original icon format, the NewIcons format uses chunky modus to store the image data. The encoding for images and palette stops at the string boundary (127 bytes) with buffer flush (and adding pad bits) and is restarted with next line. === OS3.5 extension === The original inventor of NewIcon format was Phil Vedovatti. And the one responsible for designing the Glow Icons used with Amiga OS 3.5/3.9 was Mat Chaput. The OS3.5 format introduces nearly the same information as in NewIcons, but in a more usable format. The tooltypes are no longer misused, but a new data block is appended at the end of the icon file. This data block is in IFF format. Those files consist of a classic info disk structure (might or might not contain a newicon structure in the tool-types), followed by an IFF icon structure (the actual glowicon bits). A GlowIcon is thus an IFF structure with a ICON identifier which can contain the (newly added) chunks FACE and IMAG. The file may or may not contain multiple IMAG chunks (though a minimal of 1 and maximum of 2 makes sense in this context). It consists of the standard header <pre> 0x00 UBYTE[4] ic_Header set to "FORM" 0x04 ULONG ic_Size size [excluding the first 8 bytes!] 0x08 UBYTE[4] ic_Identifier set to "ICON" </pre> Now Chunks of different data follow. Each chunk consists of 8 header bytes and the data bytes. If the size in header is uneven, then it is automatically padded with 1 byte at the end. Currently 3 chunks are used with following data. Note that IFF generally allows expansion and chunk reordering, so do not rely on any current size information or chunk order, but skip unknown data based on the size information stored in file. 1) <pre> 0x00 UBYTE[4] fc_Header set to "FACE" 0x04 ULONG fc_Size size [excluding the first 8 bytes!] 0x08 UBYTE fc_Width icon width subtracted by 1 0x09 UBYTE fc_Height icon height subtracted by 1 0x0A UBYTE fc_Flags flags bit 0 icon is frameless 0x0B UBYTE fc_Aspect image aspect ratio: upper 4 bits x aspect lower 4 bits y aspect 0x0C UWORD fc_MaxPalBytes maximum number of bytes used in image palettes subtracted by 1 (i.e. if palette 1 has 17 and palette 2 has 45 entries, then this is 45) </pre> 2) Now 2 chunks of this type may come, where first chunk is image 1 and second chunk is image 2. <pre> 0x00 UBYTE[4] im_Header set to "IMAG" 0x04 ULONG im_Size size [excluding the first 8 bytes!] 0x08 UBYTE im_Transparent number of the transparent color 0x09 UBYTE im_NumColors number of colors subtracted by 1 0x0A UBYTE im_Flags bit 0 there exists a transparent color bit 1 a palette data is attached (NOTE, that first image always needs palette data, whereas the second one can reuse the first palette.) 0x0B UBYTE im_ImageFormat storage format of image data value 0 uncompressed value 1 run-length compressed 0x0C UBYTE im_PalFormat storage format of palette data (same as above) 0x0D UBYTE im_Depth the number of bits used to store a pixel 0x0E UWORD im_ImageSize number of bytes used to store image (subtracted by 1) 0x10 UWORD im_PalSize number of bytes used to store palette (subtracted by 1) 0x12 UBYTE[...] the image data .... UBYTE[...] the palette data (if existing) </pre> Now about the run-length compression. This is equal to the run-length method in IFF-ILBM format: The input data is seen as a bit-stream, where each entry has im_Depth bits for image or 8 bits for palette. First comes an 8 bit RLE block with following meaning: <pre> 0x00 .. 0x7F copy the next n entries as they are, where n is "RLE-value"+1 0x80 ignore this, do nothing 0x81 .. 0xFF produce the next entry n times, where n is 256-"RLE-value"+1 (if using signed chars n is "RLE-value"+1) </pre> In uncompressed mode, each byte represents one pixel (even if lower depth is used). When saving Classic Icons we are only concerned with the IFF icon images. The IFF Data starts with "FORM....ICONFACE". Save the ILBM file as the actual number of bitplanes & index values & colormap from the icon data. Once you extract the images & colormap it's easy to write the ILBM. To make it easier ILBM can be uncompressed planar images & colormap. There is information for ILBM format if you search for IFF85. Sometimes Classic Amiga Icons contain OS3.5 IFF Data & ARGB data chunks attached to the end of the file. methods to read the zlib compressed 32bit data. The IFF data should contain two IMAG chunks for images but it could contain one or none. If it contains only one image we only export one image. If it contain no IMAG chunks for images but it contains one or two ARGB chunks attached to the end of the IFF data then it's an OS4 icon which is a Classic Amiga Icons with the OS3.5 Extension without IMAG but ARGB instead. If it contains one or two IMAG & one or two ARGB chunks then it is an AROS ARGB Icon format. The size of the colormap byte array is still not correct but it displays correctly anyhow. I may use a simple PackByteRun algorithm to encode the palette data instead of the image encoder. The colormap is an array of 8 bit chunky bytes compressed using RLE which is the same as for compressed ILBM images. Compressed IMAG image data however is encoded differently. The Glow Icon records the total number of used colors in the IMAG chunks. Whereas ILBM files use the total number of colors by depth which is ( 1<<depth). For depth of 5 numcolors is 32. But total used colors for my sample icon is only 17. So the colormap data was sending 96 not 52. Size in bytes of the colormap data is ( 17 * 3 ). To decode the image data for IMAG chunks for Glow Icon Format. The image data decoder and RLE decoder are working Having traced the CybergraphX ReadRGBPixel function. It uses DoPixelFunct which then reverts to do_pixel_funct which is part of Rom/Graphics. ReadPixel only uses RGB values. If a sample pixel that is (255,46,58,78). It's an ARGB 32 bit pixel. Yet ReadRGBPixel returns 3029582 which is 2E3A4E or in decimal it is 46,58,78. So the alpha is missing. It's only RGB. That makes sense because it uses the same function as ReadPixel. Something strange happens when reading alpha pixels (less than 255). The color (12,0,0,0) has an alpha of 12 but ReadRGBPixel returns (146,146,146). So it seems that ReadRGBPixel uses Premultiplied Alpha with the background color (153 in this case). Part of the mystery is solved. Now can supply a sample value for WriteRGBPixel then go from there. After evaluating several alpha pixels in the original image and comparing the resulting values from ReadRGBPixel, worked out the Alpha Blending Formula. If the background color is (153,153,153) and the ARGB pixel is (13,0,0,0) this is the formula: <pre> //Alpha Blending //alpha=13 //factor= 1-[(roundup(alpha/3))/100] = (1 - 0.05) = 0.95 //value = (int)153*(factor) = (145,145,145). </pre> This is the DrawLargeImage function so far. In the screenshot "pixel buffer" is the byte buffer containing the pixel data from the original image which is the small image. Each ARGB pixel in the original image gets mapped to a region of pixels which are 2x2 in this case since pixelateSize=2. IFF Icon Data was missing a single padding byte at the end of IMAG one. 747 bytes should have been 747+1 to make it modulus 2. There was also an extra byte at the end of the Cmap for IMAG two. It was 0x58 in size but the extra byte made it 0x59 === PowerIcons PNG === Workbench (Wanderer) does not read anything directly itself - it relies on icon.library for "file" processing. The loading of PNG Icons does not happen using datatype *system*. It's done through libpng functions. To avoid that both icon.library and png.datatype have libpng statically linked in (double file/mem usage), it's done only for one of them: png.datatype. The png.datatype exposes some extra functions PNG_#?. See workbench/classes/datatypes/png/png.conf and directaccess.c in same directory. In workbench/libs/icon/diskobjPNGio.c you can see how the PNG_ functions are used to read the PNG icon. In there you'll also see a function MakePlanarImage(). It's one function which will certainly slow down things a bit. What is does (in very unoptimized way) is to create a very simple realtime remapped planar version of the PNG image(s) to be used on low color (LUT) screens. <pre> In libpng 1.5, png_ptr and info_ptr are opaque data types, and can't be dereferenced. Replace that code with the following (which works in both libpng 1.2 and 1.5) ... Write(png_get_io_ptr(png_ptr), data, length); ... The reason is that in a (near!) future version of libpng, the details of the png_ptr and info_ptr data structures may change dramatically. Changes are trivial, just grep for the old field name (ie 'io_ptr') in png.h, and use the appropriate accessor function. </pre> merge icon35 and png icons * png data would live in the IFF stream of the icon35 format (IFF type 'PNG ') * 4 color and icon35 image formats would be precomputed by the ilbmtoicon tool * AOS should be able to read and understand this format The easiest way to split PNG icons & retain the icOn chunk is to find the first 'IEND' & second 'IEND' if there is one then calculate filesize1 & filesize2 then read & write binary. You could use another method to get the images but the icOn chunk may be lost unless you locate it just before 'IEND' then save it to .bin file or store it some other way to later write to file. As far as classic Icons you can just read them sequentially. For AROS we can just use IconControl functions but for Windows or an OS other than AROS you need another method to read the icon data. Do OS4 and MorphOS use the same type of PNG icons as us, or a different variation? They use the same format (which PowerIcons originated), which is a plain PNG file named "*.info" with some extra PNG hunks in it to hold some icon data. (PNG is like IFF in that way). Extending the Icon 3.5 to include PNG data, so that (a) our generated ICONs can work on any Amiga system, including OS 1.x to 3.x, and (b) my poor 68000 can choose a planar image from the icon file instead of spending approx 7 seconds per icon converting from ARGB to 4-color planar. Existing PNG support will *not* be changed - so we should continue to be able to enjoy AmigaOS4 and Morphos icons sets on the faster processors. png images with special ic0n chunk embedded inside png. can be 1 or 2 png images. ic0n chunk stores the 'old' data required to fill f.e. a drawerdata structure. it is a taglist that can contain zero or more tags from the following list: <pre> ATTR_DRAWERX, ATTR_DRAWERY, ATTR_DRAWERWIDTH, ATTR_DRAWERHEIGHT, ATTR_DRAWERFLAGS, ATTR_DRAWERFLAGS2, ATTR_DRAWERFLAGS3, ATTR_VIEWMODES, ATTR_VIEWMODES2, ATTR_DD_CURRENTX, ATTR_DD_CURRENTY : ATTR_ICONX, ATTR_ICONY, ATTR_STACKSIZE, ATTR_TYPE, ATTR_FRAMELESS: ATTR_DEFAULTTOOL, ATTR_TOOLTYPE: </pre> Of course, each tag followed by its respective value. <syntaxhighlight lang="c"> void List_Icontype(char *name) { LONG length = 0; struct DiskObject *icon = NULL; Printf("Reading icOn chunk values...\n"); Printf("Icon Filename: %s\n", name); char *iconfile = RemoveFileExtension(name); icon = GetDiskObjectNew(iconfile); if (icon != NULL) { if (icon->do_Type) { LONG type = icon->do_Type; Printf("Icontype: %ld\n", type); } } FreeDiskObject(icon); } LONG List_Icon_Chunk_Deftool(char *name) { LONG length = 0; struct DiskObject *icon = NULL; Printf("Reading icOn chunk values...\n"); Printf("Icon Filename: %s\n", name); char *iconfile = RemoveFileExtension(name); icon = GetDiskObjectNew(iconfile); if (icon != NULL) { if (icon->do_DefaultTool) { Printf("Deftool: %s\n", icon->do_DefaultTool); length = strlen(icon->do_DefaultTool) + 1; } } FreeDiskObject(icon); return length; } LONG List_Icon_Chunk_Tooltype(char *name) { LONG length = 0; struct DiskObject *icon = NULL; Printf("Reading icOn chunk values...\n"); Printf("Icon Filename: %s\n", name); char *iconfile = RemoveFileExtension(name); icon = GetDiskObjectNew(iconfile); if (icon != NULL) { if (icon->do_ToolTypes) { int i = 0; char *tt = NULL; while ((tt = icon->do_ToolTypes[i]) != NULL) { Printf("Tooltype: %s\n", tt); length += strlen(icon->do_ToolTypes[i]) + 1; i++; } } } FreeDiskObject(icon); return length; } void List_Icon_Chunk_Tags(char *name, BPTR file, int curPos, LONG pSize) { ULONG attr; IPTR val = 0; UBYTE *chunkdata; UBYTE Buffer32[4]; LONG len = 0; LONG chunksize = pSize; LONG pOffset = (LONG)curPos; Printf("Reading icOn chunk tags...\n"); Printf("icOn chunk Size: %ld\n", pSize); Printf("icOn chunk Offset: %ld\n", pOffset); //#define ATTR_ICONX 0x80001001 //#define ATTR_ICONY 0x80001002 //#define ATTR_DRAWERX 0x80001003 //#define ATTR_DRAWERY 0x80001004 //#define ATTR_DRAWERWIDTH 0x80001005 //#define ATTR_DRAWERHEIGHT 0x80001006 //#define ATTR_DRAWERFLAGS 0x80001007 //#define ATTR_TOOLWINDOW 0x80001008 //OS4: STRPTR, tool window string, length including the tag, multiple of 8 //#define ATTR_STACKSIZE 0x80001009 //#define ATTR_DEFAULTTOOL 0x8000100a //#define ATTR_TOOLTYPE 0x8000100b //#define ATTR_VIEWMODES 0x8000100c //OS4 PNG use that //#define ATTR_DD_CURRENTX 0x8000100d //OS4 ULONG, drawer view X offset //#define ATTR_DD_CURRENTY 0x8000100e //OS4 ULONG, drawer view Y offset //#define ATTR_TYPE 0x8000100f //OS4 icon type (WBDISK...WBKICK) //#define ATTR_FRAMELESS 0x80001010 //OS4 ULONG, frameless property //#define ATTR_DRAWERFLAGS3 0x80001011 //OS4 ULONG, drawer flags //#define ATTR_VIEWMODES2 0x80001012 //OS4 ULONG, drawer view modes //#define ATTR_DRAWERFLAGS2 0x80001107 //written from AFA to store needed dopus Magellan settings while(pSize >= 4) //(pOffset < chunksize) { /* Read icOn chunk attribute tag */ Seek(file,pOffset,OFFSET_BEGINNING); Read(file,Buffer32, 4); //length = 4; attr = (Buffer32[0] << 24) | (Buffer32[1] << 16) | (Buffer32[2] << 8) | Buffer32[3]; pOffset += 4; //offset + 4 pSize -=4; //size - 4 /* Read icOn chunk value tag */ Seek(file,pOffset,OFFSET_BEGINNING); Read(file,Buffer32, 4); //length = 4; val = (Buffer32[0] << 24) | (Buffer32[1] << 16) | (Buffer32[2] << 8) | Buffer32[3]; pOffset += 4; //offset + 4 pSize -=4; //size - 4 /* Compare icOn chunk attribute tags */ if(attr == 0x80001001) Printf("IconX: %ld\n", val); if(attr == 0x80001002) Printf("IconY: %ld\n", val); if(attr == 0x80001003) Printf("DrawerX: %ld\n", val); if(attr == 0x80001004) Printf("DrawerY: %ld\n", val); if(attr == 0x80001005) Printf("Drawerwidth: %ld\n", val); if(attr == 0x80001006) Printf("Drawerheight: %ld\n", val); if(attr == 0x80001007) Printf("Drawerflag: %ld\n", val); if(attr == 0x80001008) Printf("Toolwin: %ld\n", val); if(attr == 0x80001009) Printf("Stacksize: %ld\n", val); if(attr == 0x80001010) Printf("Frameless: %ld\n", val); if(attr == 0x8000100f) Printf("Icontype: %ld\n", val); //if(attr == 0x8000100a) Printf("Deftool found.\n"); //if(attr == 0x8000100b) Printf("Tooltype found.\n"); if(attr == 0x8000100a) { Printf("Deftool found.\n"); len = List_Icon_Chunk_Deftool(name); pOffset += len; } if(attr == 0x8000100b) { Printf("Tooltype found.\n"); len = List_Icon_Chunk_Tooltype(name); pOffset += len; } } /* while(chunksize >= 4) */ } </syntaxhighlight> <syntaxhighlight lang="c"> </syntaxhighlight> == Handling == Handling of icons by an AppWindow/Menu/Icon. That's how the concept of graphically dealing with files (represented as icon objects) from an already running application was implemented from Kickstart 2.04 on. So selecting icons isn't enough for any application to be aware of it: the user has to do one more action (which is to drag the selected icon(s) towards an AppWindow/Icon or to select an AppMenu). Wanderer only allows to use AppWindows yet. So promote your window as an AppWindow, then listen to the AppMessage and act accordingly. If you want to act on more than one icon at a time, you will need to adapt the code to browse AppMessage->am_ArgList as many times as AppMessage->am_NumArgs ... Our "DefaultIcon" implementation was better (and more like the original) - it would be easy to add default Icons that use pattern matching rather than the less efficient datatype matching. If the icon is associated with a directory (WBDISK, WBDRAWER, WBGARBAGE), it needs a DrawerData structure to go with it. This structure contains an Intuition NewWindow structure [...] Workbench uses it to hold the current window position and size of the window so it will reopen in the same place. for a directory, the icon is stored in a .info file at the same level where the directory name appears (not in the directory itself). The icon type should be set to DRAWER. The icon for a disk should always be stored in a file named disk.info at the root level directory of the disk. The icon type should be set to DISK. (The icon type can be set and the icon imagery edited with the IconEdit program.) So it is clear that an Amiga disk named "foo" contains a file named "disk.info" at the root: here is the imagery of the icon of the disk (seen on the main Workbench window and associated with the name "foo"), and here is also the coordinates of the window to be opened when the user double-clicks on it. If the disk contains a drawer named "bar" with an icon, you can use "C:List foo:" to be able to read the content which should at least include "bar" (which is the drawer itself) and "bar.info" (which contains the drawer icon imagery (seen in the foo window on workbench screen) _and_ the coordinates of the window to be opened when the user double-clicks on this bar icon). Of course it is possible to have disks without icons, and drawers without icons: in such cases, Workbench can provide default ones (and always do for disks). AFAIK Amiga icons are handled like that: Open them doing something like struct DiskObject *icon = GetIconTags(PUT_YOUR_TAGS_HERE); and then you can for example read the coordinates of the icon by printf("Icon X coord. in drawer/on WorkBench: %ldn",icon->do_CurrentX); printf("Icon Y coord. in drawer/on WorkBench: %ldn",icon->do_CurrentY); and if it's the icon of a drawer or of a disk (then the info file contains a DrawerData structure), you can read the coordinates of the window to open when double-clicking on the icon: printf("Left Edge position of drawer's window: %dn",icon->do_DrawerData->dd_NewWindow.LeftEdge); printf("Top Edge position of drawer's window: %dn",icon->do_DrawerData->dd_NewWindow.TopEdge); printf("Drawer's window Width: %dn",icon->do_DrawerData->dd_NewWindow.Width); printf("Drawer's window Height: %dn",icon->do_DrawerData->dd_NewWindow.Height); If it's a drawer (or disk) icon designed for OS2+, it contains Flags and ViewModes in DrawerData structure that store the way icons are shown in the drawer's window: you can read it by something like: <syntaxhighlight lang="c"> switch(icon->do_DrawerData->dd_Flags) { case 0: printf("Default"); break; case 1: printf("Show only icons"); break; case 2: printf("Show all files"); break; case 3: printf("Show all files"); break; default: printf("Only values between 0 an 3 should be found here"); } switch(icon->do_DrawerData->dd_ViewModes) { case 0: printf("Default (inherit from parent)"); break; case 1: printf("View as icons"); break; case 2: printf("View as text, sorted by name"); break; case 3: printf("View as text, sorted by date"); break; case 4: printf("View as text, sorted by size"); break; case 5: printf("View as text, sorted by type"); break; default: printf("Only values between 0 an 5 should be found here"); } </syntaxhighlight> The default icons to specify possible operations for an Icon (thereby filetype) via the default icons tooltypes. The normal Icon behaviour would still be used for its default action but it could also expose specific actions for that file type, e.g. <pre > ICON_ACTION="Preview","SYS:Utiltieis/MultiView" ICON_ACTION="Edit","Extras:Gfx/LunaPaint" </pre > ==Tooltype== from http://utilitybase.com/forum/index.php?action=vthread&forum=2&topic=1252 Be very careful with modifying the tooltypeslist in an icon. # Read in an icon (Icon->GetdiskObject()) # Build a new tooltypeslist # Copy the address of the current tooltypelist to a safe place # Copy the address of the NEW tooltypeslist to the icon # Rewrite the icon (Icon->PutDiskObject()) # Copy the address of the old tooltypeslist from the safe place BACK into the icon # Free the diskobject (Icon->FreeDiskObject()) 6 and 7 are not actually necessary. icon.library keeps track of all the data associated with a loaded icon through a mechanism attached to the 'struct DiskObject' itself, in the private undocumented part of the structure. It does not follow the pointers or assume that they point somewhere meaningful. In essence, this means that you can modify every bit of information in the documented portion of the 'struct DiskObject' without ill effects. But you have to be careful that the information is in itself consistent if you want to write it back to disk. While icon.library does perform some sanity checking, especially icon.library V44 and beyond, there is only so much you can do. Applications generally want to call [http://amigadev.elowar.com/read/ADCD_2.1/Includes_and_Autodocs_3._guide/node034E.html GetDiskObjectNew()] -- rather than GetDiskObject() -- to get disk objects for icons dropped in the window <syntaxhighlight lang="c"> #include <workbench/workbench.h> #include <workbench/icon.h> #include <proto/icon.h> #include <stdio.h> int main(int argc, char **argv) { STRPTR newToolTypes[] = { "AROS=RULES", "Tooltypes are actually free-form text", "Ain't that neat?", NULL }; struct DiskObject *icon = GetIconTags ( "writetooltypes", ICONGETA_FailIfUnavailable, FALSE, TAG_DONE ); if (icon != NULL) { STRPTR *oldToolTypes = icon->do_ToolTypes; icon->do_ToolTypes = newToolTypes; if (!PutIconTags("writetooltypes", icon, TAG_DONE)) { printf("ERROR: Failed to write icon.\n"); } icon->do_ToolTypes = oldToolTypes; FreeDiskObject(icon); } else { printf("ERROR: Failed to open icon for file\n"); return 20; } return 0; } </syntaxhighlight> ==LayoutIcon== Currently, LayoutIcon is unimplemented, and an idea that could save me a lot of RAM for PNG images, when they are rendered on low-color screens. The idea is to use LayoutIcon() to render the icon into the Screen's bitmap layout, and use that as the gadget imagery for the icon, and FreeMem() the PNG or other high-color icon imagery. This is similar to how AOS does things, but with one trick - I 'remember' what image format (and offset and size in the .icon file) was originally there, and when PutDiskObject() is called I carefully avoid scribbling on the image data, preserving the original image. But you need update the images, when a user change the screen depth. In AFA layoutIcon is too unimplement, i add some times before a jump in debugger command when function is called to test.if a program use this function.I see that workbench not use this function.also other programs do not use. But a speedup of AROS iconlib and much less memory usage is possible, when you make a cache, so that all default Icons only load once.getdiskobject give then only a pointer to existing default icon. The problem on AROS is, it load every time the icon in and use new memory. For example if you show 100 jpg files, then 100* the icon def_jpg.info is load.so 100* memory usage and load time usage. As wanderer loads always all icons, even if only icon view is select. ==transparent PNG== graphics.lbrary BltMaskBitMapRastPort is useful <syntaxhighlight lang="c"> static void Change_State(int Reset) { int x; for(x=Levels_Struct[CurrentLevel].Beginning; x<IconCounter; x++) { if(Icons_Struct[x].Icon_OK) { if(Icons_Struct[x].Icon_Status != 0) { if(Reset == 0) { if((Icons_Struct[x].Icon_Status & ICON_ACTIVE) == 0 && Icons_Struct[x].Icon_Status < 4) { // 11000111b Icons_Struct[x].Icon_Status = (Icons_Struct[x].Icon_Status - 1) & 0xC7; } else { Icons_Struct[x].Icon_Status = (Icons_Struct[x].Icon_Status + 1) & 0xC7; } } else { Icons_Struct[x].Icon_Status = 0; } Insert_Icon((Icons_Struct[x].Icon_Status & SELECTED_ICON) ? IDS_SELECTED : IDS_NORMAL, x); } } } } static void Insert_Icon(int Tryb, int IconNumber) { BltBitMapRastPort(BMP_Buffer, Icons_Struct[IconNumber].Icon_PositionX, 0, &RP_DoubleBuffer, //Window_struct->RPort, 0, //Icons_Struct[IconNumber].Icon_PositionX, 0, Icons_Struct[IconNumber].Icon_Width + 1, WindowHeight, 0xC0); DrawIconState(&RP_DoubleBuffer, //Window_struct->RPort, Icon[IconNumber], NULL, 0, //Icons_Struct[IconNumber].Icon_PositionX, Icons_Struct[IconNumber].Icon_PositionY - MovingTable[(Icons_Struct[IconNumber].Icon_Status & 0x07)], Tryb, ICONDRAWA_Frameless, TRUE, ICONDRAWA_EraseBackground, FALSE, TAG_DONE); BltBitMapRastPort(BMP_DoubleBuffer, 0, 0, Window_struct->RPort, Icons_Struct[IconNumber].Icon_PositionX, 0, Icons_Struct[IconNumber].Icon_Width + 1, WindowHeight, 0xC0); } static void Blink_Icon(int IconNumber) { int x, Tryb=IDS_SELECTED; for(x=0; x<8; x++) { Insert_Icon(Tryb, IconNumber); Delay(3); if(Tryb == IDS_NORMAL) Tryb = IDS_SELECTED; else Tryb = IDS_NORMAL; } } </syntaxhighlight> ==Datatype Detection== The icon.library uses the datatype descriptors from sys:devs/datatypes to identify the file type. Then a default icon def_NAME.info is used for a file with a type of NAME. The AROS build-system uses the tool createdtdesc to create datatype descriptors from simple text files. ==Bugs== After icons can be moved, it will be good to be able to snapshot their position. And the position of the window in the drawer icon. But beware that IIRC there is a bug/unimplemented feature somewhere (in icon.library?) that prevents it to store properly DrawerData struct (dd_Flags and dd_NewWindow members) in all cases. So Wanderer suffers of the problem too currently, and you can't both save the "View All Files" state _and_ snapshot the window position of a drawer. # having a database in the dir containing mappings is also inefficient when working with individual files - perhaps more so than matching using deficons/datatypes (which generally scan the first bytes of a file only). What happens in a large directory and the file you are querying is deep within the database? slower performance.. # modern filesystems can store additional metadata with files - e.g. in NTFS pretty much everything is an attribute of some form or other, it wouldnt take much to make it possible to include querying/setting such attributed as part of most amigaos code's exall/exnext dir scanning loops. one scenario is some combination of using file system meta data and our default icons. An application scans a directory of files using the normal AmigaOS routines. we provide a new routine (*) to query a file/locks attributes (which uses packets to speak with the file system handler and query the meta data) which we use to request the data formats attribute. This shouldn't incur any/much IO penalty since the meta data is most likely already cached as part of scanning the dir. if the attribute isn't available we can then use default icons pattern/data matching to identify the file - and optionally then set the attribute if the file system does support meta-data. (*) perhaps this call could be handled in the deficon code itself anyhow, so that existing amigaos code that uses icon.library, etc, would benefit from it without need for change. <pre> function readIFFICON(file){ var index = file.index; var img = {states:[]}; function readChunk(){ var chunk = {}; chunk.name = file.readString(4); chunk.size = file.readDWord(); return chunk; } while (index<file.length-4){ file.goto(index); var chunk = readChunk(); index += chunk.size + 8; if (chunk.size%2 === 1) index++; switch (chunk.name){ case "FACE": img.width = file.readUbyte() + 1; img.height = file.readUbyte() + 1; img.flags = file.readUbyte(); img.aspectRatio = file.readUbyte(); //upper 4 bits:x aspect, lower 4 bits: y aspect img.MaxPaletteSize = file.readWord(); console.log("Icon is " + img.width + "x" + img.height); break; case "IMAG": var endIndex = file.index + chunk.size; var state = {}; state.transparentIndex = file.readUbyte(); state.NumColors = file.readUbyte() + 1; state.flags = file.readUbyte(); state.imageCompression = file.readUbyte(); state.paletteCompression = file.readUbyte(); state.depth = file.readUbyte(); state.imageSize = file.readWord() + 1; state.paletteSize = file.readWord() + 1; state.pixels = []; state.palette = []; var imageDataOffset = file.index; var paletteDataOffset = imageDataOffset + state.imageSize; if (state.imageCompression){ // note: this is BIT aligned, not byte aligned ... // -> RLE control chars are 8 bits, but the data elements are n bits, determined by state.depth var max = (state.imageSize-1) * 8; var bitIndex = 0; while (bitIndex < max) { var b = file.readBits(8,bitIndex,imageDataOffset); bitIndex += 8; if (b > 128) { var b2 = file.readBits(state.depth,bitIndex,imageDataOffset); bitIndex += state.depth; for (var k = 0; k < 257 - b; k++) state.pixels.push(b2); } if (b < 128) { for (k = 0; k <= b; k++){ state.pixels.push(file.readBits(state.depth,bitIndex,imageDataOffset)); bitIndex += state.depth; } } } }else{ // note: uncompressed data is BYTE aligned, even if state.depth < 8 for (var i = 0; i < state.imageSize; i++){ state.pixels.push(file.readUbyte()) } } if (state.paletteSize){ file.goto(paletteDataOffset); var rgb = []; var bitsPerColorByte = 8; if (state.paletteCompression){ var max = (state.paletteSize-1) * 8; var bitIndex = 0; while (bitIndex < max) { var b = file.readBits(8,bitIndex,paletteDataOffset); bitIndex += 8; if (b > 128) { var b2 = file.readBits(bitsPerColorByte,bitIndex,paletteDataOffset); bitIndex += bitsPerColorByte; for (var k = 0; k < 257 - b; k++) rgb.push(b2); } if (b < 128) { for (k = 0; k <= b; k++){ rgb.push(file.readBits(bitsPerColorByte,bitIndex,paletteDataOffset)); bitIndex += bitsPerColorByte; } } } }else{ for (i = 0; i < state.paletteSize; i++){ rgb.push(file.readUbyte()) } } if (rgb.length>2){ for (i = 0, max = rgb.length; i<max; i+=3){ state.palette.push([rgb[i],rgb[i+1],rgb[i+2]]) } } } img.states.push(state); break; case "ARGB": // zlib compressed // found some info/structure on https://amigaworld.net//modules/newbb/viewtopic.php?viewmode=flat&order=0&topic_id=34625&forum=15&post_id=639101#639062 console.log("decoding ARGB data"); var state = {}; state.rgba = true; state.pixels = []; state.palette = []; for (var offset = 0; offset<10;offset++){ // no idea what this data structure is ... // first DWORD always seem to be 1? state.dummy = file.readUbyte(); //console.log(state.dummy); } var size = chunk.size-offset; var data = new Uint8Array(size); for (var i = 0; i<size; i++){ data[i] = file.readUbyte(); } try{ var a; if (typeof Zlib !== "undefined"){ // running in browser a = new Zlib.Inflate(data).decompress(); }else{ // running in node var zlib = require('zlib'); a = zlib.inflateSync(data); } for (var y = 0; y<img.height; y++){ for (var x = 0; x<img.width; x++){ var pixelIndex = (y*img.width + x) * 4; var color = [a[pixelIndex+1]||0,a[pixelIndex+2]||0,a[pixelIndex+3]||0,(a[pixelIndex]||0)/255]; state.pixels.push(color); } } img.states.push(state); }catch (e) { console.log("invalid zlib structure"); } break; default: console.log("unhandled IFF chunk: " + chunk.name); break; } } return img; } /**************************************************************************************************/ static char *DecodeOS35(unsigned char *buffer, LONG numbytes, LONG bits, struct IconImage *im, enum DecodeType type, LONG mode) { int cop = 0, loop = 0, entries, numbits = 0, mask, curentry = 0; ULONG bitbuf = 0; ULONG byte; //DecodeNew(buffer+10, numi, imf ? dep : 8, im, DECODE_IMAGE, imf) //DecodeNew(buffer+10+numi, nump, 8, im, DECODE_PALETTE, palf) Printf ("DecodeOS35 - mode: %ld\n", mode); Printf ("DecodeOS35 - bits: %ld\n", bits); Printf ("DecodeOS35 - bytes: %ld\n", numbytes); Printf ("DecodeOS35 - colors: %ld\n", im->NumColors); Printf ("Icon Image Dimensions: %ld, %ld\n", im->Width, im->Height); if(type == DECODE_IMAGE) Printf ("DECODE_IMAGE\n"); if(type == DECODE_PALETTE) Printf ("DECODE_PALETTE\n"); //WriteData("Ram Disk:imgdata1.bin", buffer, numbytes); if(!mode) /* no RLE */ cop = numbytes*8/bits; //planar Size if(type == DECODE_PALETTE) entries = im->NumColors*3; else entries = im->Width*im->Height; mask = (1<<bits)-1; /* UnpackByteRun RLE */ while((numbytes || (cop && numbits >= bits)) && (curentry < entries)) { if(!cop) /* RLE */ { if(numbits < 8) { bitbuf = (bitbuf<<8)|*(buffer++); --numbytes; numbits += 8; } byte = (bitbuf>>(numbits-8))&0xFF; numbits -= 8; if(byte <= 127) cop = byte+1; else if(byte > 128) loop = 256-byte+1; else continue; } if(cop) ++loop; if(numbits < bits) { bitbuf = (bitbuf<<8)|*(buffer++); --numbytes; numbits += 8; } byte = (bitbuf>>(numbits-bits))&mask; while(loop && (curentry < entries)) { if(type == DECODE_PALETTE) { /* NOTE: This may not be very fast, but for sure portable */ switch(curentry%3) { case 0: im->Palette[curentry/3].Red = byte; break; case 1: im->Palette[curentry/3].Green = byte; break; case 2: im->Palette[curentry/3].Blue = byte; break; } } else im->ImageData[curentry] = byte; ++curentry; --loop; } if(cop) --cop; numbits -= bits; } //return "DecodeOS35 completed successfully"; return curentry != entries ? "error decoding icon data" : 0; } /**************************************************************************************************/ </pre> ==Examples== <syntaxhighlight lang="c"> </syntaxhighlight> <syntaxhighlight lang="c"> /* Example for changing icon tooltypes. */ #include <proto/exec.h> #include <proto/dos.h> #include <proto/icon.h> #include <workbench/startup.h> #include <stdlib.h> #include <stdio.h> #include <string.h> static STRPTR conwinname = "CON:30/50/500/400/Tooltype parsing/AUTO/CLOSE/WAIT"; static BPTR conwin; static BPTR olddir = (BPTR)-1; static struct DiskObject *dobj; static STRPTR *oldtoolarray, *newtoolarray; static void clean_exit(CONST_STRPTR s); int main(int argc, char **argv) { if (argc) { clean_exit("Application must be started from Wanderer."); /* See dos_readargs.c for start from Shell. */ } else { struct WBStartup *wbmsg = (struct WBStartup *)argv; struct WBArg *wbarg = wbmsg->sm_ArgList; STRPTR *toolarray; LONG toolcnt = 0; LONG idx; /* An application started from Wanderer doesn't have a console window for output. We have to open our own con: window or all output will go to Nirwana. */ conwin = fopen(conwinname, "w"); if (!conwin) { clean_exit("Can't open console window"); } if ( (wbarg->wa_Lock) && (*wbarg->wa_Name) ) { fprintf(conwin, "Trying to open %s\n", wbarg->wa_Name); /* We must enter the directory of the icon */ olddir = CurrentDir(wbarg->wa_Lock); dobj = GetDiskObject(wbarg->wa_Name); if (dobj) { /* Remember the old toolarray, so that we can put it back later. */ oldtoolarray = dobj->do_ToolTypes; /* Count entries */ if (oldtoolarray) { toolarray = oldtoolarray; while (*toolarray) { toolcnt++; toolarray++; } } fprintf(conwin, "Old icon has %d tooltype entries\n", toolcnt); /* Create new toolarray */ newtoolarray = AllocVec(sizeof(STRPTR) * (toolcnt + 3), MEMF_ANY); if (!newtoolarray) { clean_exit("Can't allocate memory for new toolarray"); } /* Add two new entries and copy the pointers to the old values. If w'd want to change the strings we'd have to work with copies of the strings. */ newtoolarray[0] = "START"; for (idx = 0 ; idx < toolcnt; idx++) { newtoolarray[idx+1] = oldtoolarray[idx]; } newtoolarray[toolcnt + 1] = "END"; newtoolarray[toolcnt + 2] = NULL; /* Change toolarray pointer and save icon. */ dobj->do_ToolTypes = newtoolarray; if (!PutDiskObject(wbarg->wa_Name, dobj)) { clean_exit("Can't write Diskobject"); } } else { clean_exit("Can't open DiskObjekt"); } } } clean_exit(NULL); return 0; } static void clean_exit(CONST_STRPTR s) { if (s) { if (conwin) { fprintf(conwin, "%s\n", s); } else { printf("%s\n", s); } } /* Give back allocated resourses */ if (conwin) fclose(conwin); /* Free DiskObject. We have to set back the pointer to the toolarray or we'll get memory corruption. */ if (dobj) { dobj->do_ToolTypes = oldtoolarray; FreeDiskObject(dobj); } FreeVec(newtoolarray); /* Switch back to old directory. It's important that the directory which was active at program start is set when the application is quit. */ if (olddir != (BPTR)-1) { CurrentDir(olddir); olddir = (BPTR)-1; } exit(0); } </syntaxhighlight> <syntaxhighlight lang="c"> </syntaxhighlight> The problem with an SVG based icon is that's there's no place to store the icon data itself. In PNG icons they use an icOn chunk. Classic Icons store icon attributes in the diskobject data, etc. But SVG would have to be a hybrid icon. Classic Amiga Icon File at the beginning. Where the IFF data for a Glow Icon would normally be is instead the beginning of the SVG data. How many images can it store? SVG is a very flexible format because it allows to embed vector, bitmap and text content, and transformations / filters / animations, so you don't even need to define something like dual PNGs (one SVG should be enough to emulate it). SVG allows to define metadata of any kind, that can be used to store the icon attributes (and much more). You can add those tags everywhere (AFAIR), so even at beginning of the [https://www.w3.org/TR/SVG11/metadata.html XML data] (this can be "forced" as a requirement for those new icons, if it's needed). ==Reference== <pre> struct DiskObject *NewDiskObject(ULONG type) struct DiskObject *GetIconTagList(CONST_STRPTR name, const struct TagItem *tags) struct DiskObject *GetDiskObject(CONST_STRPTR name) BOOL PutDiskObject(CONST_STRPTR name, struct DiskObject *icon) void FreeDiskObject(struct DiskObject *diskobj) BOOL AddFreeList(struct FreeList *freelist, APTR mem, unsigned long size) void FreeFreeList(struct FreeList *freelist) UBYTE *FindToolType(const STRPTR *toolTypeArray, const STRPTR typeName) BOOL MatchToolValue(UBYTE *typeString, UBYTE *value) UBYTE *BumpRevision(UBYTE *newname, UBYTE *oldname) struct DiskObject *GetDefDiskObject(LONG type) BOOL PutDefDiskObject(struct DiskObject *icon) struct DiskObject *GetDiskObjectNew(CONST_STRPTR name) BOOL DeleteDiskObject(UBYTE *name) struct DiskObject *DupDiskObjectA(struct DiskObject *icon, struct TagItem *tags) ULONG IconControlA(struct DiskObject *icon, struct TagItem *tags) void DrawIconStateA(struct RastPort *rp, struct DiskObject *icon, STRPTR label, LONG leftEdge, LONG topEdge, ULONG state, struct TagItem *tags) BOOL GetIconRectangleA(struct RastPort *rp, struct DiskObject *icon, STRPTR label, struct Rectangle *rectangle, struct TagItem *tags) BOOL PutIconTagList(CONST_STRPTR name, struct DiskObject *icon, struct TagItem *tags) BOOL LayoutIconA(struct DiskObject *icon, struct Screen *screen, struct TagItem *tags) void ChangeToSelectedIconColor(struct ColorRegister *cr) </pre> {{BookCat}} f33lb902xwqpz8642gbwo49xkxr7a90 4656662 4656657 2026-08-07T16:12:17Z Jeff1138 301139 4656662 wikitext text/x-wiki {{ArosNav}} ==Introduction== * 1980s - OS1.x (4 col) - OS 2/3 (4 col) * 1990s - [http://en.wikipedia.org/wiki/NewIcons NewIcons] (size 36x40 x 32 col) - [http://en.wikipedia.org/wiki/Glowicons GlowIcons] (size 46x46 x 256 col) - * 2000s PowerIcons (24bit) Possibilities for the future * SVG or SVGZ - Haiku [http://www.haiku-os.org/tags/icons_0 HVIF] has a reduced format. There are several formats used by Amiga/AROS computers to display icons for each program/project you want to access from the graphical user interface Workbench. The Classic Icon is the basis for three of the Icon styles supported by AROS. The Amiga Glow Icon is a Classic Icon (Old Icon Format) with OS 3.5 IFF Icon Data attached at the end. The IFF data contains the images that AROS displays. An OS4 icon is a Classic Icon with OS 3.5 Data attached. But unlike a Glow Icon it only has a 'FACE' chunk with no 'IMAG' chunks. It has 2 'ARGB' chunks at the end of the Icon file that are used to display. The AROS Hybrid Icon or ARGB Icon is similar to the OS4 Icon but it has a complete Glow Icon that 2 ARGB chunks are attached to at the end. On AROS icons with different sizes result in misalignment and clutter among icons, already square icons at the same size as Round icons, will look large. Also, folders that have edges or protrusions such as handles will appear smaller, this is why different sizes for Icon Sets. Best to be aware of misalignment issues with icons. Most icons are 46x46. Folder image area is 42x42 but regular icon image area just like other AROS Glow Icons is 38x38 A note about the used data descriptors that are used throughout from here. All elements are in Motorola byte order (highest byte first): <pre> APTR - a memory pointer (usually this gets a boolean meaning on disk) BYTE - a single byte -128..127 UBYTE - an unsigned byte 0..255 WORD - a signed 16 bit value -32768..32767 UWORD - an unsigned 16 bit value 0..65535 LONG - a signed 32 bit value -2147483648..2147483647 ULONG - a unsigned 32 bit value 0..4294967295 </pre> There are lots of elements marked with ???. These are usually filled with values, which have no effect at all. Thus they can normally be ignored. For some values the usual contents is described. === OS1.x/OS2.x format === The OS1.x/OS2.x format is storage of the in-memory structures on disk. This text tries to show which values are important and which are not. <pre> 0x00 UWORD ic_Magic always 0xE310 0x00 UWORD ic_Version always 1 0x04 struct Gadget (described below) 0x30 UBYTE ic_Type 1 DISK a disk 2 DRAWER a directory 3 TOOL a program 4 PROJECT a project file with defined program to start 5 GARBAGE the trashcan 6 DEVICE should never appear 7 KICK a kickstart disk 8 APPICON should never appear 0x31 UBYTE ic_Pad <undefined> 0x32 APTR ic_DefaultTool <boolean> 0x36 APTR ic_ToolTypes <boolean> 0x3A LONG ic_CurrentX X position of icon in drawer/on WorkBench 0x3E LONG ic_CurrentY Y position of icon in drawer/on WorkBench 0x42 APTR ic_DrawerData <boolean> 0x46 APTR ic_ToolWindow <boolean> 0x4A LONG ic_StackSize the stack size for program execution (values < 4096 mean 4096 is used) </pre> This is followed by certain other data structures: <pre> struct DrawerData if ic_DrawerData is not zero (see below) struct Image first image struct Image second image if ga_SelectRender not zero (see below) in gadget structure DefaultTool text if ic_DefaultTool not zero (format see below) ToolTypes texts if ic_ToolTypes not zero (format see below) ToolWindow text if ic_ToolWindow not zero (format see below) this is an extension, which was never implemented struct DrawerData2 if ic_DrawerData is not zero and ga_UserData is 1 (see below) </pre> Now a description of the sub-formats: a) The text storage method (DefaultTool, ToolWindow and ToolTypes): <pre> 0x00 ULONG tx_Size the size of tx_Text including zero byte (tx_Zero) 0x04 ... tx_Text the plain text .... UBYTE tx_Zero the finishing zero byte </pre> This means the text "Hallo" will be encoded as \00\00\00\06Hallo\00. As ToolTypes are an array of texts the encoding is preceded by another ULONG value containing the number of entries. But to make parsing more interesting it is not the number as one would expect, but the number of entries increased by one and multiplied by 4. Thus 10 entries will have 44 as count. b) The Gadget structure: <pre> 0x00 APTR ga_Next <undefined> always 0 0x04 WORD ga_LeftEdge unused ??? 0x06 WORD ga_TopEdge unused ??? 0x08 WORD ga_Width the width of the gadget 0x0A WORD ga_Height the height of the gadget 0x0C UWORD ga_Flags gadget flags bit 2 always set (image 1 is an image ;-) bit 1 if set, we use 2 image-mode bit 0 if set we use backfill mode, else complement mode complement mode: gadget colors are inverted backfill mode: like complement, but region outside (color 0) of image is not inverted As you see, it makes no sense having bit 0 and 1 set. 0x0E UWORD ga_Activation <undefined> 0x10 UWORD ga_GadgetType <undefined> 0x12 APTR ga_GadgetRender <boolean> unused??? always true 0x16 APTR ga_SelectRender <boolean> (true if second image present) 0x1A APTR ga_GadgetText <undefined> always 0 ??? 0x1E LONG ga_MutualExclude <undefined> 0x22 APTR ga_SpecialInfo <undefined> 0x26 UWORD ga_GadgetID <undefined> 0x28 APTR ga_UserData lower 8 bits: 0 for old, 1 for icons >= OS2.x upper 24 bits: undefined </pre> c) The DrawerData structure: This structure is useful for drawers and disks (but there are some icons of other types, which still have these obsolete entries). <pre> 0x00 struct NewWindow (see below) 0x30 LONG dd_CurrentX the current X position of the drawer window contents (this is the relative offset of the drawer drawmap) 0x34 LONG dd_CurrentY the current Y position of the drawer window contents </pre> d) The NewWindow structure used by DrawerData: <pre> 0x00 WORD nw_LeftEdge left edge distance of window 0x02 WORD nw_TopEdge top edge distance of window 0x04 WORD nw_Width the width of the window (outer width) 0x06 WORD nw_Height the height of the window (outer height) 0x08 UBYTE nw_DetailPen always 255 ??? 0x09 UBYTE nw_BlockPen always 255 ??? 0x0A ULONG nw_IDCMPFlags <undefined> 0x0E ULONG nw_Flags <undefined> 0x12 APTR nw_FirstGadget <undefined> 0x16 APTR nw_CheckMark <undefined> 0x1A APTR nw_Title <undefined> 0x1E APTR nw_Screen <undefined> 0x22 APTR nw_BitMap <undefined> 0x26 WORD nw_MinWidth <undefined> often 94, minimum window width 0x28 WORD nw_MinHeight <undefined> often 65, minimum window height 0x2A UWORD nw_MaxWidth <undefined> often 0xFFFF, maximum window width 0x2C UWORD nw_MaxHeight <undefined> often 0xFFFF, maximum window width 0x2E UWORD nw_Type <undefined> </pre> e) The DrawerData2 structure for OS2.x drawers: <pre> 0x00 ULONG dd_Flags flags for drawer display value 0 handle viewmode like parent drawer current setting (OS1.x compatibility mode) bit 0 view icons bit 1 view all files (bit 0 maybe set or unset with this) 0x04 UWORD dd_ViewModes viewmodes of drawer display value 0 show icons (OS1.x compatibility mode) value 1 show icons value 2 show sorted by name value 3 show sorted by date value 4 show sorted by size value 5 show sorted by type </pre> f) And now the last element, the Image structure: <pre> 0x00 WORD im_LeftEdge always 0 ??? 0x00 WORD im_TopEdge always 0 ??? 0x04 WORD im_Width the width of the image 0x06 WORD im_Height the height of the image 0x08 WORD im_Depth the image bitmap depth 0x0A APTR im_ImageData <boolean> always true ??? 0x0E UBYTE im_PlanePick foreground color register index 0x0F UBYTE im_PlaneOnOff background color register index 0x10 APTR im_Next always 0 ??? </pre> This is followed by the image data in planar mode. The width of the image is always rounded to next 16bit boundary. loads an ILBM file to get the chunky image data which consists of index values. The image data is processed by RemapIconImage which maps the index values to a standard 4-color palette. Write_Image then writes the planar data to file. === NewIcon extension === As the original classic icon format is very limited when using more than the 4 or 8 default colors and also when using different palette sets than the default, there have been ideas how to circumvent this. A Shareware author invented NewIcons format, which uses the ToolTypes to store image data, as expanding the original format very surely would have broken compatibility. The NewIcons stuff usually starts with following 2 ToolTypes text (text inside of the "" only): "*** DON'T EDIT THE FOLLOWING LINES!! ***" Afterwards the image data is encoded as ASCII. The lines for first image always start with "IM1=". If present the second image starts with "IM2=". The first line of each image set contains the image information and the palette. <pre> 0x00 UBYTE ni_Transparency "B" transparency on "C" transparency off 0x01 UBYTE ni_Width image width + 0x21 - "}" means width 92 0x02 UBYTE ni_Height image height + 0x21 - "}" means height 92 0x03 UWORD ni_Colors ASCII coded number of palette entries: entries are: ((buf[3]-0x21)<<6)+(buf[4]-0x21) "!'" means 6 entries </pre> Afterwards the encoded palette is stored. Each element has 8 bit and colors are stored in order red, green, blue. The encoded format is described below. The ni_Width and ni_Height maximum values are 93. The maximum color value is theoretically 255. I have seen images with at least 257 stored colors (but less than 256 used). The following lines contain the image data encoded with the same system as the palette. The number of bits used to encode an entry depends of the number of colors (6 colors f.e. need 3 bit). The lines have maximum 127 bytes including the "IM1=" or "IM2=" header. Thus including the zero byte, the string will be 128 byte. En/Decoding algorithm: <pre> Each byte encodes 7bit (except the RLE bytes) Bytes 0x20 to 0x6F represent 7bit value 0x00 to 0x4F Bytes 0xA1 to 0xD0 represent 7bit value 0x50 to 0x7F Bytes 0xD1 to 0xFF are RLE bytes: 0xD1 represents 1*7 zero bits, 0xD2 represents 2*7 zero bits and the last value 0xFF represents 47*7 zero bits. </pre> Opposite to the original icon format, the NewIcons format uses chunky modus to store the image data. The encoding for images and palette stops at the string boundary (127 bytes) with buffer flush (and adding pad bits) and is restarted with next line. === OS3.5 extension === The original inventor of NewIcon format was Phil Vedovatti. And the one responsible for designing the Glow Icons used with Amiga OS 3.5/3.9 was Mat Chaput. The OS3.5 format introduces nearly the same information as in NewIcons, but in a more usable format. The tooltypes are no longer misused, but a new data block is appended at the end of the icon file. This data block is in IFF format. Those files consist of a classic info disk structure (might or might not contain a newicon structure in the tool-types), followed by an IFF icon structure (the actual glowicon bits). A GlowIcon is thus an IFF structure with a ICON identifier which can contain the (newly added) chunks FACE and IMAG. The file may or may not contain multiple IMAG chunks (though a minimal of 1 and maximum of 2 makes sense in this context). It consists of the standard header <pre> 0x00 UBYTE[4] ic_Header set to "FORM" 0x04 ULONG ic_Size size [excluding the first 8 bytes!] 0x08 UBYTE[4] ic_Identifier set to "ICON" </pre> Now Chunks of different data follow. Each chunk consists of 8 header bytes and the data bytes. If the size in header is uneven, then it is automatically padded with 1 byte at the end. Currently 3 chunks are used with following data. Note that IFF generally allows expansion and chunk reordering, so do not rely on any current size information or chunk order, but skip unknown data based on the size information stored in file. 1) <pre> 0x00 UBYTE[4] fc_Header set to "FACE" 0x04 ULONG fc_Size size [excluding the first 8 bytes!] 0x08 UBYTE fc_Width icon width subtracted by 1 0x09 UBYTE fc_Height icon height subtracted by 1 0x0A UBYTE fc_Flags flags bit 0 icon is frameless 0x0B UBYTE fc_Aspect image aspect ratio: upper 4 bits x aspect lower 4 bits y aspect 0x0C UWORD fc_MaxPalBytes maximum number of bytes used in image palettes subtracted by 1 (i.e. if palette 1 has 17 and palette 2 has 45 entries, then this is 45) </pre> 2) Now 2 chunks of this type may come, where first chunk is image 1 and second chunk is image 2. <pre> 0x00 UBYTE[4] im_Header set to "IMAG" 0x04 ULONG im_Size size [excluding the first 8 bytes!] 0x08 UBYTE im_Transparent number of the transparent color 0x09 UBYTE im_NumColors number of colors subtracted by 1 0x0A UBYTE im_Flags bit 0 there exists a transparent color bit 1 a palette data is attached (NOTE, that first image always needs palette data, whereas the second one can reuse the first palette.) 0x0B UBYTE im_ImageFormat storage format of image data value 0 uncompressed value 1 run-length compressed 0x0C UBYTE im_PalFormat storage format of palette data (same as above) 0x0D UBYTE im_Depth the number of bits used to store a pixel 0x0E UWORD im_ImageSize number of bytes used to store image (subtracted by 1) 0x10 UWORD im_PalSize number of bytes used to store palette (subtracted by 1) 0x12 UBYTE[...] the image data .... UBYTE[...] the palette data (if existing) </pre> Now about the run-length compression. This is equal to the run-length method in IFF-ILBM format: The input data is seen as a bit-stream, where each entry has im_Depth bits for image or 8 bits for palette. First comes an 8 bit RLE block with following meaning: <pre> 0x00 .. 0x7F copy the next n entries as they are, where n is "RLE-value"+1 0x80 ignore this, do nothing 0x81 .. 0xFF produce the next entry n times, where n is 256-"RLE-value"+1 (if using signed chars n is "RLE-value"+1) </pre> In uncompressed mode, each byte represents one pixel (even if lower depth is used). When saving Classic Icons we are only concerned with the IFF icon images. The IFF Data starts with "FORM....ICONFACE". Save the ILBM file as the actual number of bitplanes & index values & colormap from the icon data. Once you extract the images & colormap it's easy to write the ILBM. To make it easier ILBM can be uncompressed planar images & colormap. There is information for ILBM format if you search for IFF85. Sometimes Classic Amiga Icons contain OS3.5 IFF Data & ARGB data chunks attached to the end of the file. methods to read the zlib compressed 32bit data. The IFF data should contain two IMAG chunks for images but it could contain one or none. If it contains only one image we only export one image. If it contain no IMAG chunks for images but it contains one or two ARGB chunks attached to the end of the IFF data then it's an OS4 icon which is a Classic Amiga Icons with the OS3.5 Extension without IMAG but ARGB instead. If it contains one or two IMAG & one or two ARGB chunks then it is an AROS ARGB Icon format. The size of the colormap byte array is still not correct but it displays correctly anyhow. I may use a simple PackByteRun algorithm to encode the palette data instead of the image encoder. The colormap is an array of 8 bit chunky bytes compressed using RLE which is the same as for compressed ILBM images. Compressed IMAG image data however is encoded differently. The Glow Icon records the total number of used colors in the IMAG chunks. Whereas ILBM files use the total number of colors by depth which is ( 1<<depth). For depth of 5 numcolors is 32. But total used colors for my sample icon is only 17. So the colormap data was sending 96 not 52. Size in bytes of the colormap data is ( 17 * 3 ). Adding a glow border isn't easy as it involves Edge Detection and parallel offsets and a Gaussian Blur Effect for the glow. To decode the image data for IMAG chunks for Glow Icon Format. The image data decoder and RLE decoder are working Having traced the CybergraphX ReadRGBPixel function. It uses DoPixelFunct which then reverts to do_pixel_funct which is part of Rom/Graphics. ReadPixel only uses RGB values. If a sample pixel that is (255,46,58,78). It's an ARGB 32 bit pixel. Yet ReadRGBPixel returns 3029582 which is 2E3A4E or in decimal it is 46,58,78. So the alpha is missing. It's only RGB. That makes sense because it uses the same function as ReadPixel. Something strange happens when reading alpha pixels (less than 255). The color (12,0,0,0) has an alpha of 12 but ReadRGBPixel returns (146,146,146). So it seems that ReadRGBPixel uses Premultiplied Alpha with the background color (153 in this case). Part of the mystery is solved. Now can supply a sample value for WriteRGBPixel then go from there. After evaluating several alpha pixels in the original image and comparing the resulting values from ReadRGBPixel, worked out the Alpha Blending Formula. If the background color is (153,153,153) and the ARGB pixel is (13,0,0,0) this is the formula: <pre> //Alpha Blending //alpha=13 //factor= 1-[(roundup(alpha/3))/100] = (1 - 0.05) = 0.95 //value = (int)153*(factor) = (145,145,145). </pre> This is the DrawLargeImage function so far. In the screenshot "pixel buffer" is the byte buffer containing the pixel data from the original image which is the small image. Each ARGB pixel in the original image gets mapped to a region of pixels which are 2x2 in this case since pixelateSize=2. IFF Icon Data was missing a single padding byte at the end of IMAG one. 747 bytes should have been 747+1 to make it modulus 2. There was also an extra byte at the end of the Cmap for IMAG two. It was 0x58 in size but the extra byte made it 0x59 === PowerIcons PNG === Workbench (Wanderer) does not read anything directly itself - it relies on icon.library for "file" processing. The loading of PNG Icons does not happen using datatype *system*. It's done through libpng functions. To avoid that both icon.library and png.datatype have libpng statically linked in (double file/mem usage), it's done only for one of them: png.datatype. The png.datatype exposes some extra functions PNG_#?. See workbench/classes/datatypes/png/png.conf and directaccess.c in same directory. In workbench/libs/icon/diskobjPNGio.c you can see how the PNG_ functions are used to read the PNG icon. In there you'll also see a function MakePlanarImage(). It's one function which will certainly slow down things a bit. What is does (in very unoptimized way) is to create a very simple realtime remapped planar version of the PNG image(s) to be used on low color (LUT) screens. <pre> In libpng 1.5, png_ptr and info_ptr are opaque data types, and can't be dereferenced. Replace that code with the following (which works in both libpng 1.2 and 1.5) ... Write(png_get_io_ptr(png_ptr), data, length); ... The reason is that in a (near!) future version of libpng, the details of the png_ptr and info_ptr data structures may change dramatically. Changes are trivial, just grep for the old field name (ie 'io_ptr') in png.h, and use the appropriate accessor function. </pre> merge icon35 and png icons * png data would live in the IFF stream of the icon35 format (IFF type 'PNG ') * 4 color and icon35 image formats would be precomputed by the ilbmtoicon tool * AOS should be able to read and understand this format The easiest way to split PNG icons & retain the icOn chunk is to find the first 'IEND' & second 'IEND' if there is one then calculate filesize1 & filesize2 then read & write binary. You could use another method to get the images but the icOn chunk may be lost unless you locate it just before 'IEND' then save it to .bin file or store it some other way to later write to file. As far as classic Icons you can just read them sequentially. For AROS we can just use IconControl functions but for Windows or an OS other than AROS you need another method to read the icon data. Do OS4 and MorphOS use the same type of PNG icons as us, or a different variation? They use the same format (which PowerIcons originated), which is a plain PNG file named "*.info" with some extra PNG hunks in it to hold some icon data. (PNG is like IFF in that way). Extending the Icon 3.5 to include PNG data, so that (a) our generated ICONs can work on any Amiga system, including OS 1.x to 3.x, and (b) my poor 68000 can choose a planar image from the icon file instead of spending approx 7 seconds per icon converting from ARGB to 4-color planar. Existing PNG support will *not* be changed - so we should continue to be able to enjoy AmigaOS4 and Morphos icons sets on the faster processors. png images with special ic0n chunk embedded inside png. can be 1 or 2 png images. ic0n chunk stores the 'old' data required to fill f.e. a drawerdata structure. it is a taglist that can contain zero or more tags from the following list: <pre> ATTR_DRAWERX, ATTR_DRAWERY, ATTR_DRAWERWIDTH, ATTR_DRAWERHEIGHT, ATTR_DRAWERFLAGS, ATTR_DRAWERFLAGS2, ATTR_DRAWERFLAGS3, ATTR_VIEWMODES, ATTR_VIEWMODES2, ATTR_DD_CURRENTX, ATTR_DD_CURRENTY : ATTR_ICONX, ATTR_ICONY, ATTR_STACKSIZE, ATTR_TYPE, ATTR_FRAMELESS: ATTR_DEFAULTTOOL, ATTR_TOOLTYPE: </pre> Of course, each tag followed by its respective value. <syntaxhighlight lang="c"> void List_Icontype(char *name) { LONG length = 0; struct DiskObject *icon = NULL; Printf("Reading icOn chunk values...\n"); Printf("Icon Filename: %s\n", name); char *iconfile = RemoveFileExtension(name); icon = GetDiskObjectNew(iconfile); if (icon != NULL) { if (icon->do_Type) { LONG type = icon->do_Type; Printf("Icontype: %ld\n", type); } } FreeDiskObject(icon); } LONG List_Icon_Chunk_Deftool(char *name) { LONG length = 0; struct DiskObject *icon = NULL; Printf("Reading icOn chunk values...\n"); Printf("Icon Filename: %s\n", name); char *iconfile = RemoveFileExtension(name); icon = GetDiskObjectNew(iconfile); if (icon != NULL) { if (icon->do_DefaultTool) { Printf("Deftool: %s\n", icon->do_DefaultTool); length = strlen(icon->do_DefaultTool) + 1; } } FreeDiskObject(icon); return length; } LONG List_Icon_Chunk_Tooltype(char *name) { LONG length = 0; struct DiskObject *icon = NULL; Printf("Reading icOn chunk values...\n"); Printf("Icon Filename: %s\n", name); char *iconfile = RemoveFileExtension(name); icon = GetDiskObjectNew(iconfile); if (icon != NULL) { if (icon->do_ToolTypes) { int i = 0; char *tt = NULL; while ((tt = icon->do_ToolTypes[i]) != NULL) { Printf("Tooltype: %s\n", tt); length += strlen(icon->do_ToolTypes[i]) + 1; i++; } } } FreeDiskObject(icon); return length; } void List_Icon_Chunk_Tags(char *name, BPTR file, int curPos, LONG pSize) { ULONG attr; IPTR val = 0; UBYTE *chunkdata; UBYTE Buffer32[4]; LONG len = 0; LONG chunksize = pSize; LONG pOffset = (LONG)curPos; Printf("Reading icOn chunk tags...\n"); Printf("icOn chunk Size: %ld\n", pSize); Printf("icOn chunk Offset: %ld\n", pOffset); //#define ATTR_ICONX 0x80001001 //#define ATTR_ICONY 0x80001002 //#define ATTR_DRAWERX 0x80001003 //#define ATTR_DRAWERY 0x80001004 //#define ATTR_DRAWERWIDTH 0x80001005 //#define ATTR_DRAWERHEIGHT 0x80001006 //#define ATTR_DRAWERFLAGS 0x80001007 //#define ATTR_TOOLWINDOW 0x80001008 //OS4: STRPTR, tool window string, length including the tag, multiple of 8 //#define ATTR_STACKSIZE 0x80001009 //#define ATTR_DEFAULTTOOL 0x8000100a //#define ATTR_TOOLTYPE 0x8000100b //#define ATTR_VIEWMODES 0x8000100c //OS4 PNG use that //#define ATTR_DD_CURRENTX 0x8000100d //OS4 ULONG, drawer view X offset //#define ATTR_DD_CURRENTY 0x8000100e //OS4 ULONG, drawer view Y offset //#define ATTR_TYPE 0x8000100f //OS4 icon type (WBDISK...WBKICK) //#define ATTR_FRAMELESS 0x80001010 //OS4 ULONG, frameless property //#define ATTR_DRAWERFLAGS3 0x80001011 //OS4 ULONG, drawer flags //#define ATTR_VIEWMODES2 0x80001012 //OS4 ULONG, drawer view modes //#define ATTR_DRAWERFLAGS2 0x80001107 //written from AFA to store needed dopus Magellan settings while(pSize >= 4) //(pOffset < chunksize) { /* Read icOn chunk attribute tag */ Seek(file,pOffset,OFFSET_BEGINNING); Read(file,Buffer32, 4); //length = 4; attr = (Buffer32[0] << 24) | (Buffer32[1] << 16) | (Buffer32[2] << 8) | Buffer32[3]; pOffset += 4; //offset + 4 pSize -=4; //size - 4 /* Read icOn chunk value tag */ Seek(file,pOffset,OFFSET_BEGINNING); Read(file,Buffer32, 4); //length = 4; val = (Buffer32[0] << 24) | (Buffer32[1] << 16) | (Buffer32[2] << 8) | Buffer32[3]; pOffset += 4; //offset + 4 pSize -=4; //size - 4 /* Compare icOn chunk attribute tags */ if(attr == 0x80001001) Printf("IconX: %ld\n", val); if(attr == 0x80001002) Printf("IconY: %ld\n", val); if(attr == 0x80001003) Printf("DrawerX: %ld\n", val); if(attr == 0x80001004) Printf("DrawerY: %ld\n", val); if(attr == 0x80001005) Printf("Drawerwidth: %ld\n", val); if(attr == 0x80001006) Printf("Drawerheight: %ld\n", val); if(attr == 0x80001007) Printf("Drawerflag: %ld\n", val); if(attr == 0x80001008) Printf("Toolwin: %ld\n", val); if(attr == 0x80001009) Printf("Stacksize: %ld\n", val); if(attr == 0x80001010) Printf("Frameless: %ld\n", val); if(attr == 0x8000100f) Printf("Icontype: %ld\n", val); //if(attr == 0x8000100a) Printf("Deftool found.\n"); //if(attr == 0x8000100b) Printf("Tooltype found.\n"); if(attr == 0x8000100a) { Printf("Deftool found.\n"); len = List_Icon_Chunk_Deftool(name); pOffset += len; } if(attr == 0x8000100b) { Printf("Tooltype found.\n"); len = List_Icon_Chunk_Tooltype(name); pOffset += len; } } /* while(chunksize >= 4) */ } </syntaxhighlight> <syntaxhighlight lang="c"> </syntaxhighlight> == Handling == Handling of icons by an AppWindow/Menu/Icon. That's how the concept of graphically dealing with files (represented as icon objects) from an already running application was implemented from Kickstart 2.04 on. So selecting icons isn't enough for any application to be aware of it: the user has to do one more action (which is to drag the selected icon(s) towards an AppWindow/Icon or to select an AppMenu). Wanderer only allows to use AppWindows yet. So promote your window as an AppWindow, then listen to the AppMessage and act accordingly. If you want to act on more than one icon at a time, you will need to adapt the code to browse AppMessage->am_ArgList as many times as AppMessage->am_NumArgs ... Our "DefaultIcon" implementation was better (and more like the original) - it would be easy to add default Icons that use pattern matching rather than the less efficient datatype matching. If the icon is associated with a directory (WBDISK, WBDRAWER, WBGARBAGE), it needs a DrawerData structure to go with it. This structure contains an Intuition NewWindow structure [...] Workbench uses it to hold the current window position and size of the window so it will reopen in the same place. for a directory, the icon is stored in a .info file at the same level where the directory name appears (not in the directory itself). The icon type should be set to DRAWER. The icon for a disk should always be stored in a file named disk.info at the root level directory of the disk. The icon type should be set to DISK. (The icon type can be set and the icon imagery edited with the IconEdit program.) So it is clear that an Amiga disk named "foo" contains a file named "disk.info" at the root: here is the imagery of the icon of the disk (seen on the main Workbench window and associated with the name "foo"), and here is also the coordinates of the window to be opened when the user double-clicks on it. If the disk contains a drawer named "bar" with an icon, you can use "C:List foo:" to be able to read the content which should at least include "bar" (which is the drawer itself) and "bar.info" (which contains the drawer icon imagery (seen in the foo window on workbench screen) _and_ the coordinates of the window to be opened when the user double-clicks on this bar icon). Of course it is possible to have disks without icons, and drawers without icons: in such cases, Workbench can provide default ones (and always do for disks). AFAIK Amiga icons are handled like that: Open them doing something like struct DiskObject *icon = GetIconTags(PUT_YOUR_TAGS_HERE); and then you can for example read the coordinates of the icon by printf("Icon X coord. in drawer/on WorkBench: %ldn",icon->do_CurrentX); printf("Icon Y coord. in drawer/on WorkBench: %ldn",icon->do_CurrentY); and if it's the icon of a drawer or of a disk (then the info file contains a DrawerData structure), you can read the coordinates of the window to open when double-clicking on the icon: printf("Left Edge position of drawer's window: %dn",icon->do_DrawerData->dd_NewWindow.LeftEdge); printf("Top Edge position of drawer's window: %dn",icon->do_DrawerData->dd_NewWindow.TopEdge); printf("Drawer's window Width: %dn",icon->do_DrawerData->dd_NewWindow.Width); printf("Drawer's window Height: %dn",icon->do_DrawerData->dd_NewWindow.Height); If it's a drawer (or disk) icon designed for OS2+, it contains Flags and ViewModes in DrawerData structure that store the way icons are shown in the drawer's window: you can read it by something like: <syntaxhighlight lang="c"> switch(icon->do_DrawerData->dd_Flags) { case 0: printf("Default"); break; case 1: printf("Show only icons"); break; case 2: printf("Show all files"); break; case 3: printf("Show all files"); break; default: printf("Only values between 0 an 3 should be found here"); } switch(icon->do_DrawerData->dd_ViewModes) { case 0: printf("Default (inherit from parent)"); break; case 1: printf("View as icons"); break; case 2: printf("View as text, sorted by name"); break; case 3: printf("View as text, sorted by date"); break; case 4: printf("View as text, sorted by size"); break; case 5: printf("View as text, sorted by type"); break; default: printf("Only values between 0 an 5 should be found here"); } </syntaxhighlight> The default icons to specify possible operations for an Icon (thereby filetype) via the default icons tooltypes. The normal Icon behaviour would still be used for its default action but it could also expose specific actions for that file type, e.g. <pre > ICON_ACTION="Preview","SYS:Utiltieis/MultiView" ICON_ACTION="Edit","Extras:Gfx/LunaPaint" </pre > ==Tooltype== from http://utilitybase.com/forum/index.php?action=vthread&forum=2&topic=1252 Be very careful with modifying the tooltypeslist in an icon. # Read in an icon (Icon->GetdiskObject()) # Build a new tooltypeslist # Copy the address of the current tooltypelist to a safe place # Copy the address of the NEW tooltypeslist to the icon # Rewrite the icon (Icon->PutDiskObject()) # Copy the address of the old tooltypeslist from the safe place BACK into the icon # Free the diskobject (Icon->FreeDiskObject()) 6 and 7 are not actually necessary. icon.library keeps track of all the data associated with a loaded icon through a mechanism attached to the 'struct DiskObject' itself, in the private undocumented part of the structure. It does not follow the pointers or assume that they point somewhere meaningful. In essence, this means that you can modify every bit of information in the documented portion of the 'struct DiskObject' without ill effects. But you have to be careful that the information is in itself consistent if you want to write it back to disk. While icon.library does perform some sanity checking, especially icon.library V44 and beyond, there is only so much you can do. Applications generally want to call [http://amigadev.elowar.com/read/ADCD_2.1/Includes_and_Autodocs_3._guide/node034E.html GetDiskObjectNew()] -- rather than GetDiskObject() -- to get disk objects for icons dropped in the window <syntaxhighlight lang="c"> #include <workbench/workbench.h> #include <workbench/icon.h> #include <proto/icon.h> #include <stdio.h> int main(int argc, char **argv) { STRPTR newToolTypes[] = { "AROS=RULES", "Tooltypes are actually free-form text", "Ain't that neat?", NULL }; struct DiskObject *icon = GetIconTags ( "writetooltypes", ICONGETA_FailIfUnavailable, FALSE, TAG_DONE ); if (icon != NULL) { STRPTR *oldToolTypes = icon->do_ToolTypes; icon->do_ToolTypes = newToolTypes; if (!PutIconTags("writetooltypes", icon, TAG_DONE)) { printf("ERROR: Failed to write icon.\n"); } icon->do_ToolTypes = oldToolTypes; FreeDiskObject(icon); } else { printf("ERROR: Failed to open icon for file\n"); return 20; } return 0; } </syntaxhighlight> ==LayoutIcon== Currently, LayoutIcon is unimplemented, and an idea that could save me a lot of RAM for PNG images, when they are rendered on low-color screens. The idea is to use LayoutIcon() to render the icon into the Screen's bitmap layout, and use that as the gadget imagery for the icon, and FreeMem() the PNG or other high-color icon imagery. This is similar to how AOS does things, but with one trick - I 'remember' what image format (and offset and size in the .icon file) was originally there, and when PutDiskObject() is called I carefully avoid scribbling on the image data, preserving the original image. But you need update the images, when a user change the screen depth. In AFA layoutIcon is too unimplement, i add some times before a jump in debugger command when function is called to test.if a program use this function.I see that workbench not use this function.also other programs do not use. But a speedup of AROS iconlib and much less memory usage is possible, when you make a cache, so that all default Icons only load once.getdiskobject give then only a pointer to existing default icon. The problem on AROS is, it load every time the icon in and use new memory. For example if you show 100 jpg files, then 100* the icon def_jpg.info is load.so 100* memory usage and load time usage. As wanderer loads always all icons, even if only icon view is select. ==transparent PNG== graphics.lbrary BltMaskBitMapRastPort is useful <syntaxhighlight lang="c"> static void Change_State(int Reset) { int x; for(x=Levels_Struct[CurrentLevel].Beginning; x<IconCounter; x++) { if(Icons_Struct[x].Icon_OK) { if(Icons_Struct[x].Icon_Status != 0) { if(Reset == 0) { if((Icons_Struct[x].Icon_Status & ICON_ACTIVE) == 0 && Icons_Struct[x].Icon_Status < 4) { // 11000111b Icons_Struct[x].Icon_Status = (Icons_Struct[x].Icon_Status - 1) & 0xC7; } else { Icons_Struct[x].Icon_Status = (Icons_Struct[x].Icon_Status + 1) & 0xC7; } } else { Icons_Struct[x].Icon_Status = 0; } Insert_Icon((Icons_Struct[x].Icon_Status & SELECTED_ICON) ? IDS_SELECTED : IDS_NORMAL, x); } } } } static void Insert_Icon(int Tryb, int IconNumber) { BltBitMapRastPort(BMP_Buffer, Icons_Struct[IconNumber].Icon_PositionX, 0, &RP_DoubleBuffer, //Window_struct->RPort, 0, //Icons_Struct[IconNumber].Icon_PositionX, 0, Icons_Struct[IconNumber].Icon_Width + 1, WindowHeight, 0xC0); DrawIconState(&RP_DoubleBuffer, //Window_struct->RPort, Icon[IconNumber], NULL, 0, //Icons_Struct[IconNumber].Icon_PositionX, Icons_Struct[IconNumber].Icon_PositionY - MovingTable[(Icons_Struct[IconNumber].Icon_Status & 0x07)], Tryb, ICONDRAWA_Frameless, TRUE, ICONDRAWA_EraseBackground, FALSE, TAG_DONE); BltBitMapRastPort(BMP_DoubleBuffer, 0, 0, Window_struct->RPort, Icons_Struct[IconNumber].Icon_PositionX, 0, Icons_Struct[IconNumber].Icon_Width + 1, WindowHeight, 0xC0); } static void Blink_Icon(int IconNumber) { int x, Tryb=IDS_SELECTED; for(x=0; x<8; x++) { Insert_Icon(Tryb, IconNumber); Delay(3); if(Tryb == IDS_NORMAL) Tryb = IDS_SELECTED; else Tryb = IDS_NORMAL; } } </syntaxhighlight> ==Datatype Detection== The icon.library uses the datatype descriptors from sys:devs/datatypes to identify the file type. Then a default icon def_NAME.info is used for a file with a type of NAME. The AROS build-system uses the tool createdtdesc to create datatype descriptors from simple text files. ==Bugs== After icons can be moved, it will be good to be able to snapshot their position. And the position of the window in the drawer icon. But beware that IIRC there is a bug/unimplemented feature somewhere (in icon.library?) that prevents it to store properly DrawerData struct (dd_Flags and dd_NewWindow members) in all cases. So Wanderer suffers of the problem too currently, and you can't both save the "View All Files" state _and_ snapshot the window position of a drawer. # having a database in the dir containing mappings is also inefficient when working with individual files - perhaps more so than matching using deficons/datatypes (which generally scan the first bytes of a file only). What happens in a large directory and the file you are querying is deep within the database? slower performance.. # modern filesystems can store additional metadata with files - e.g. in NTFS pretty much everything is an attribute of some form or other, it wouldnt take much to make it possible to include querying/setting such attributed as part of most amigaos code's exall/exnext dir scanning loops. one scenario is some combination of using file system meta data and our default icons. An application scans a directory of files using the normal AmigaOS routines. we provide a new routine (*) to query a file/locks attributes (which uses packets to speak with the file system handler and query the meta data) which we use to request the data formats attribute. This shouldn't incur any/much IO penalty since the meta data is most likely already cached as part of scanning the dir. if the attribute isn't available we can then use default icons pattern/data matching to identify the file - and optionally then set the attribute if the file system does support meta-data. (*) perhaps this call could be handled in the deficon code itself anyhow, so that existing amigaos code that uses icon.library, etc, would benefit from it without need for change. <pre> function readIFFICON(file){ var index = file.index; var img = {states:[]}; function readChunk(){ var chunk = {}; chunk.name = file.readString(4); chunk.size = file.readDWord(); return chunk; } while (index<file.length-4){ file.goto(index); var chunk = readChunk(); index += chunk.size + 8; if (chunk.size%2 === 1) index++; switch (chunk.name){ case "FACE": img.width = file.readUbyte() + 1; img.height = file.readUbyte() + 1; img.flags = file.readUbyte(); img.aspectRatio = file.readUbyte(); //upper 4 bits:x aspect, lower 4 bits: y aspect img.MaxPaletteSize = file.readWord(); console.log("Icon is " + img.width + "x" + img.height); break; case "IMAG": var endIndex = file.index + chunk.size; var state = {}; state.transparentIndex = file.readUbyte(); state.NumColors = file.readUbyte() + 1; state.flags = file.readUbyte(); state.imageCompression = file.readUbyte(); state.paletteCompression = file.readUbyte(); state.depth = file.readUbyte(); state.imageSize = file.readWord() + 1; state.paletteSize = file.readWord() + 1; state.pixels = []; state.palette = []; var imageDataOffset = file.index; var paletteDataOffset = imageDataOffset + state.imageSize; if (state.imageCompression){ // note: this is BIT aligned, not byte aligned ... // -> RLE control chars are 8 bits, but the data elements are n bits, determined by state.depth var max = (state.imageSize-1) * 8; var bitIndex = 0; while (bitIndex < max) { var b = file.readBits(8,bitIndex,imageDataOffset); bitIndex += 8; if (b > 128) { var b2 = file.readBits(state.depth,bitIndex,imageDataOffset); bitIndex += state.depth; for (var k = 0; k < 257 - b; k++) state.pixels.push(b2); } if (b < 128) { for (k = 0; k <= b; k++){ state.pixels.push(file.readBits(state.depth,bitIndex,imageDataOffset)); bitIndex += state.depth; } } } }else{ // note: uncompressed data is BYTE aligned, even if state.depth < 8 for (var i = 0; i < state.imageSize; i++){ state.pixels.push(file.readUbyte()) } } if (state.paletteSize){ file.goto(paletteDataOffset); var rgb = []; var bitsPerColorByte = 8; if (state.paletteCompression){ var max = (state.paletteSize-1) * 8; var bitIndex = 0; while (bitIndex < max) { var b = file.readBits(8,bitIndex,paletteDataOffset); bitIndex += 8; if (b > 128) { var b2 = file.readBits(bitsPerColorByte,bitIndex,paletteDataOffset); bitIndex += bitsPerColorByte; for (var k = 0; k < 257 - b; k++) rgb.push(b2); } if (b < 128) { for (k = 0; k <= b; k++){ rgb.push(file.readBits(bitsPerColorByte,bitIndex,paletteDataOffset)); bitIndex += bitsPerColorByte; } } } }else{ for (i = 0; i < state.paletteSize; i++){ rgb.push(file.readUbyte()) } } if (rgb.length>2){ for (i = 0, max = rgb.length; i<max; i+=3){ state.palette.push([rgb[i],rgb[i+1],rgb[i+2]]) } } } img.states.push(state); break; case "ARGB": // zlib compressed // found some info/structure on https://amigaworld.net//modules/newbb/viewtopic.php?viewmode=flat&order=0&topic_id=34625&forum=15&post_id=639101#639062 console.log("decoding ARGB data"); var state = {}; state.rgba = true; state.pixels = []; state.palette = []; for (var offset = 0; offset<10;offset++){ // no idea what this data structure is ... // first DWORD always seem to be 1? state.dummy = file.readUbyte(); //console.log(state.dummy); } var size = chunk.size-offset; var data = new Uint8Array(size); for (var i = 0; i<size; i++){ data[i] = file.readUbyte(); } try{ var a; if (typeof Zlib !== "undefined"){ // running in browser a = new Zlib.Inflate(data).decompress(); }else{ // running in node var zlib = require('zlib'); a = zlib.inflateSync(data); } for (var y = 0; y<img.height; y++){ for (var x = 0; x<img.width; x++){ var pixelIndex = (y*img.width + x) * 4; var color = [a[pixelIndex+1]||0,a[pixelIndex+2]||0,a[pixelIndex+3]||0,(a[pixelIndex]||0)/255]; state.pixels.push(color); } } img.states.push(state); }catch (e) { console.log("invalid zlib structure"); } break; default: console.log("unhandled IFF chunk: " + chunk.name); break; } } return img; } /**************************************************************************************************/ static char *DecodeOS35(unsigned char *buffer, LONG numbytes, LONG bits, struct IconImage *im, enum DecodeType type, LONG mode) { int cop = 0, loop = 0, entries, numbits = 0, mask, curentry = 0; ULONG bitbuf = 0; ULONG byte; //DecodeNew(buffer+10, numi, imf ? dep : 8, im, DECODE_IMAGE, imf) //DecodeNew(buffer+10+numi, nump, 8, im, DECODE_PALETTE, palf) Printf ("DecodeOS35 - mode: %ld\n", mode); Printf ("DecodeOS35 - bits: %ld\n", bits); Printf ("DecodeOS35 - bytes: %ld\n", numbytes); Printf ("DecodeOS35 - colors: %ld\n", im->NumColors); Printf ("Icon Image Dimensions: %ld, %ld\n", im->Width, im->Height); if(type == DECODE_IMAGE) Printf ("DECODE_IMAGE\n"); if(type == DECODE_PALETTE) Printf ("DECODE_PALETTE\n"); //WriteData("Ram Disk:imgdata1.bin", buffer, numbytes); if(!mode) /* no RLE */ cop = numbytes*8/bits; //planar Size if(type == DECODE_PALETTE) entries = im->NumColors*3; else entries = im->Width*im->Height; mask = (1<<bits)-1; /* UnpackByteRun RLE */ while((numbytes || (cop && numbits >= bits)) && (curentry < entries)) { if(!cop) /* RLE */ { if(numbits < 8) { bitbuf = (bitbuf<<8)|*(buffer++); --numbytes; numbits += 8; } byte = (bitbuf>>(numbits-8))&0xFF; numbits -= 8; if(byte <= 127) cop = byte+1; else if(byte > 128) loop = 256-byte+1; else continue; } if(cop) ++loop; if(numbits < bits) { bitbuf = (bitbuf<<8)|*(buffer++); --numbytes; numbits += 8; } byte = (bitbuf>>(numbits-bits))&mask; while(loop && (curentry < entries)) { if(type == DECODE_PALETTE) { /* NOTE: This may not be very fast, but for sure portable */ switch(curentry%3) { case 0: im->Palette[curentry/3].Red = byte; break; case 1: im->Palette[curentry/3].Green = byte; break; case 2: im->Palette[curentry/3].Blue = byte; break; } } else im->ImageData[curentry] = byte; ++curentry; --loop; } if(cop) --cop; numbits -= bits; } //return "DecodeOS35 completed successfully"; return curentry != entries ? "error decoding icon data" : 0; } /**************************************************************************************************/ </pre> ==Examples== <syntaxhighlight lang="c"> </syntaxhighlight> <syntaxhighlight lang="c"> /* Example for changing icon tooltypes. */ #include <proto/exec.h> #include <proto/dos.h> #include <proto/icon.h> #include <workbench/startup.h> #include <stdlib.h> #include <stdio.h> #include <string.h> static STRPTR conwinname = "CON:30/50/500/400/Tooltype parsing/AUTO/CLOSE/WAIT"; static BPTR conwin; static BPTR olddir = (BPTR)-1; static struct DiskObject *dobj; static STRPTR *oldtoolarray, *newtoolarray; static void clean_exit(CONST_STRPTR s); int main(int argc, char **argv) { if (argc) { clean_exit("Application must be started from Wanderer."); /* See dos_readargs.c for start from Shell. */ } else { struct WBStartup *wbmsg = (struct WBStartup *)argv; struct WBArg *wbarg = wbmsg->sm_ArgList; STRPTR *toolarray; LONG toolcnt = 0; LONG idx; /* An application started from Wanderer doesn't have a console window for output. We have to open our own con: window or all output will go to Nirwana. */ conwin = fopen(conwinname, "w"); if (!conwin) { clean_exit("Can't open console window"); } if ( (wbarg->wa_Lock) && (*wbarg->wa_Name) ) { fprintf(conwin, "Trying to open %s\n", wbarg->wa_Name); /* We must enter the directory of the icon */ olddir = CurrentDir(wbarg->wa_Lock); dobj = GetDiskObject(wbarg->wa_Name); if (dobj) { /* Remember the old toolarray, so that we can put it back later. */ oldtoolarray = dobj->do_ToolTypes; /* Count entries */ if (oldtoolarray) { toolarray = oldtoolarray; while (*toolarray) { toolcnt++; toolarray++; } } fprintf(conwin, "Old icon has %d tooltype entries\n", toolcnt); /* Create new toolarray */ newtoolarray = AllocVec(sizeof(STRPTR) * (toolcnt + 3), MEMF_ANY); if (!newtoolarray) { clean_exit("Can't allocate memory for new toolarray"); } /* Add two new entries and copy the pointers to the old values. If w'd want to change the strings we'd have to work with copies of the strings. */ newtoolarray[0] = "START"; for (idx = 0 ; idx < toolcnt; idx++) { newtoolarray[idx+1] = oldtoolarray[idx]; } newtoolarray[toolcnt + 1] = "END"; newtoolarray[toolcnt + 2] = NULL; /* Change toolarray pointer and save icon. */ dobj->do_ToolTypes = newtoolarray; if (!PutDiskObject(wbarg->wa_Name, dobj)) { clean_exit("Can't write Diskobject"); } } else { clean_exit("Can't open DiskObjekt"); } } } clean_exit(NULL); return 0; } static void clean_exit(CONST_STRPTR s) { if (s) { if (conwin) { fprintf(conwin, "%s\n", s); } else { printf("%s\n", s); } } /* Give back allocated resourses */ if (conwin) fclose(conwin); /* Free DiskObject. We have to set back the pointer to the toolarray or we'll get memory corruption. */ if (dobj) { dobj->do_ToolTypes = oldtoolarray; FreeDiskObject(dobj); } FreeVec(newtoolarray); /* Switch back to old directory. It's important that the directory which was active at program start is set when the application is quit. */ if (olddir != (BPTR)-1) { CurrentDir(olddir); olddir = (BPTR)-1; } exit(0); } </syntaxhighlight> <syntaxhighlight lang="c"> </syntaxhighlight> The problem with an SVG based icon is that's there's no place to store the icon data itself. In PNG icons they use an icOn chunk. Classic Icons store icon attributes in the diskobject data, etc. But SVG would have to be a hybrid icon. Classic Amiga Icon File at the beginning. Where the IFF data for a Glow Icon would normally be is instead the beginning of the SVG data. How many images can it store? SVG is a very flexible format because it allows to embed vector, bitmap and text content, and transformations / filters / animations, so you don't even need to define something like dual PNGs (one SVG should be enough to emulate it). SVG allows to define metadata of any kind, that can be used to store the icon attributes (and much more). You can add those tags everywhere (AFAIR), so even at beginning of the [https://www.w3.org/TR/SVG11/metadata.html XML data] (this can be "forced" as a requirement for those new icons, if it's needed). ==Reference== <pre> struct DiskObject *NewDiskObject(ULONG type) struct DiskObject *GetIconTagList(CONST_STRPTR name, const struct TagItem *tags) struct DiskObject *GetDiskObject(CONST_STRPTR name) BOOL PutDiskObject(CONST_STRPTR name, struct DiskObject *icon) void FreeDiskObject(struct DiskObject *diskobj) BOOL AddFreeList(struct FreeList *freelist, APTR mem, unsigned long size) void FreeFreeList(struct FreeList *freelist) UBYTE *FindToolType(const STRPTR *toolTypeArray, const STRPTR typeName) BOOL MatchToolValue(UBYTE *typeString, UBYTE *value) UBYTE *BumpRevision(UBYTE *newname, UBYTE *oldname) struct DiskObject *GetDefDiskObject(LONG type) BOOL PutDefDiskObject(struct DiskObject *icon) struct DiskObject *GetDiskObjectNew(CONST_STRPTR name) BOOL DeleteDiskObject(UBYTE *name) struct DiskObject *DupDiskObjectA(struct DiskObject *icon, struct TagItem *tags) ULONG IconControlA(struct DiskObject *icon, struct TagItem *tags) void DrawIconStateA(struct RastPort *rp, struct DiskObject *icon, STRPTR label, LONG leftEdge, LONG topEdge, ULONG state, struct TagItem *tags) BOOL GetIconRectangleA(struct RastPort *rp, struct DiskObject *icon, STRPTR label, struct Rectangle *rectangle, struct TagItem *tags) BOOL PutIconTagList(CONST_STRPTR name, struct DiskObject *icon, struct TagItem *tags) BOOL LayoutIconA(struct DiskObject *icon, struct Screen *screen, struct TagItem *tags) void ChangeToSelectedIconColor(struct ColorRegister *cr) </pre> {{BookCat}} 0dkjo9my6xposzvovhmfvglbllha30z Aros/User/Applications 0 237399 4656742 4656245 2026-08-08T10:25:49Z Jeff1138 301139 4656742 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-->[https://github.com/BlitterStudio/dopus5 Dopus5 Magellan], MarranoFTP, |<!--Amiga OS-->[https://github.com/BlitterStudio/dopus5 Dopus5 Magellan], [http://aminet.net/package/comm/tcp/AmiFTP AmiFTP], AmiTradeCenter, ncFTP, |<!--AmigaOS4-->[https://github.com/BlitterStudio/dopus5 Dopus5 Magellan], |<!--MorphOS-->[https://github.com/BlitterStudio/dopus5 Dopus5 Magellan], [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, [https://github.com/BlitterStudio/dopus5 Dopus5 Magellan], ClassAction, FileMaster, [http://www.amiga.org/forums/showthread.php?t=4897 DirWork 2]*, [https://github.com/RudolphRiedel/DiskMaster2 DiskMaster2 src], |<!--AmigaOS4-->DOpus4, [https://github.com/BlitterStudio/dopus5 Dopus5 Magellan], Filer, AmiDisk |<!--MorphOS-->DOpus4, [https://github.com/BlitterStudio/dopus5 Dopus5 Magellan], |- |<!--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 Custom App Language Editors |<!--AROS-->FlexCat, [https://archives.arosworld.org/index.php?function=browse&cat=utility Flexcat GUI], [], |<!--Amiga OS-->[http://www.geit.de/deu_simplecat.html SimpleCat], FlexCat |<!--AmigaOS4-->[http://aminet.net/package/dev/misc/simplecat SimpleCat], FlexCat |<!--MorphOS-->[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], [https://archives.arosworld.org/?function=showfile&file=game/driving/dethrace-0.10.1.x86_64-aros-v11.zip Carmageddon dethrace 64bit], [], |<!--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, [https://github.com/angree/openttd_amiga_68k openttd amiga_68k], |<!--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}} 2wa5s0t7auntrw8unrugxlhpj0f8sn4 Aros/Developer/SDL 0 239945 4656716 3675671 2026-08-07T22:13:42Z ~2026-43693-23 3619888 /* Input */ 4656716 wikitext text/x-wiki {{ArosNav}} ==Introduction== <pre> SDL_Init SDL_SetVideoMode SDL_Surface SDL_Rect SDL_PollEvent SDL_EventType SDL_FreeSurface SDL_Quit </pre> Many SDL games work by polling (ie reading all the time) the event queue. https://wiki.libsdl.org/SDL_PollEvent The example code shows the ugly. while(1) { SDL_PollEvent(...); } It kills any CPU class. Better main loop would be with SDL_WaitEvent/SDL_WaitEventTimeout https://wiki.libsdl.org/SDL_WaitEvent https://wiki.libsdl.org/SDL_WaitEventTimeout At least, those calls shouldn't eat all the CPU. ===C initialisation of SDL=== <syntaxhighlight lang="c"> </syntaxhighlight> ===C++ initialisation of SDL=== <syntaxhighlight lang="c"> #include <SDL/SDL.h> #include "Application.h" //Extern'd in Application.h; Used as forefront to access everything we create =D Application* pApp; int main(int args, char* argv[]) { //Create the application on the heap for actual use pApp = new Application(); //Initialize the application. If something fails, return -1 (I like -1 for errors) if(pApp->Init() != true) { return -1; } //This should successfully run our application //Should go through Input, Logic, and Rendering pApp->Run(); //This will clean up everything, deallocating dynamically allocated memory //Uninitializing SDL, etc. pApp->Quit(); //Out of habit, I always check to make sure a pointer has a value (other than NULL) //Before I deallocate it. I also ALWAYS set it to NULL immediately after. //Good habit to get into because it is preventative for memory leaks if(pApp) { delete pApp; pApp = NULL; } //Lastly, end the application, returning 0 to indicate that nothing went wrong return 0; } </syntaxhighlight> <syntaxhighlight lang="c"> #ifndef APPLICATION_H_INCLUDED #define APPLICATION_H_INCLUDED #include <SDL/SDL.h> class Application { private: //We'll keep adding here as we go along bool m_bDone; public: Application(); ~Application(); bool Init(); void Run(); void TakeInput(SDL_Event* pEvent); void Update(); void Render(); void Quit(); }; //We'll use this global pointer to access things like the window later on extern Application* pApp; #endif // APPLICATION_H_INCLUDED </syntaxhighlight> <syntaxhighlight lang="c"> #include "Application.h" Application::Application() { //Standard constructor we'll use to initialize variables with default values //The program just started, we certainly are not done yet! m_bDone = false; } Application::~Application() { //Here, we'll deallocate any dynamically allocated memory we may have missed } bool Application::Init() { //Initialize SDL and return false if anything goes wrong //We'll add more initializations here for anything else we use if(SDL_Init(SDL_INIT_EVERYTHING) != 0) { return false; } //Lastly return true to indicate that the initialization was successful return true; } void Application::Run() { //This function implements our loop //Any calls that should be made each frame should be put in this loop //the m_bDone variable will track whether the program is ready to exit while(!m_bDone) { m_bDone = true; } } void Application::TakeInput(SDL_Event* pEvent) { //We'll use this function to take input from the user and act upon it } void Application::Update() { //This is where all the magic happens! //After receiving input, this is where we act on that input //and actually make things happen =D } void Application::Render() { //Here, we will draw our images to the screen } void Application::Quit() { //Uninitialize SDL, we'll also deallocate any memory we dynamically allocate SDL_Quit(); } </syntaxhighlight> ===2D platformer pseudo code=== <pre> game loop while( SDL_PollEvent( &event ) ) { myHero.handle_input(); //If the user has Xed out the window if( event.type == SDL_QUIT ) { //Quit the program quit = true; } } myHero.move( blahbox ); //Set the camera myHero.set_camera(); handle_input() if( event.type == SDL_KEYDOWN ) { if( SDLK_LEFT ) { xForce -= HERO_WIDTH / 2; } if( SDLK_RIGHT ){ xForce += HERO_WIDTH / 2; } } else if( event.type == SDL_KEYUP ) { if( SDLK_LEFT ) { xForce = 0; } if( SDLK_RIGHT ) { xForce = 0; } } move() void Hero::move(SDL_Rect blahbox) { //Move the dot left or right if( xForce != 0 ) { xAcc = xForce / HERO_MASS; } if( xForce == 0 ) { xVel = xAcc = 0; } xVel = xVel + xAcc; box.x = box.x + xVel; //If the dot went too far to the left or right or touched a wall if( ( box.x < 0 ) || ( box.x + HERO_WIDTH > LEVEL_WIDTH ) || check_collision( box, blahbox) ) { //move back box.x = box.x - xVel; } } what i was going for is force is applied when a key is pressed, acceleration = Force / Mass Velocity = Velocity + Acceleration etc... </pre> ===Game Routines=== <pre> /* Here's the include */ #include "SDL.h" SDL_Surface* screen; void startGame() { /* Load my picture */ SDL_Surface* pic = SDL_LoadBMP("mypic.bmp"); /* Here's where I'll draw it */ SDL_Rect destRect; if(pic != NULL) { destRect.x = screen->w/2 - pic->w/2; destRect.y = screen->h/2 - pic->h/2; } /* Here are two rectangles */ /* I initialize rect.x, rect.y, rect.w, and rect.h all at once */ SDL_Rect rect1 = {40, 40, 300, 200}; SDL_Rect rect2 = {200, 100, 160, 160}; /* Start the main loop */ SDL_Event event; Uint8 done = 0; while (!done) { /* Check for events */ while (SDL_PollEvent(&event)) { if(event.type == SDL_QUIT) { done = 1; } if(event.type == SDL_KEYDOWN) { if(event.key.keysym.sym == SDLK_ESCAPE) { done = 1; } } } /* Clear the screen */ SDL_FillRect(screen, NULL, 0x000000); /* Red rectangle */ SDL_FillRect(screen, &rect1, SDL_MapRGB(screen->format, 200, 0, 0)); /* White rectangle */ SDL_FillRect(screen, &rect2, SDL_MapRGB(screen->format, 255, 255, 255)); /* Draw my picture */ SDL_BlitSurface(pic, NULL, screen, &destRect); /* Send all this to the monitor */ SDL_Flip(screen); } /* Free up the picture memory */ SDL_FreeSurface(pic); return; } int main(int argc, char *argv[]) { /* Initialize SDL */ if( SDL_Init(SDL_INIT_VIDEO) < 0 ) return 0; /* Initialize the screen surface */ screen = SDL_SetVideoMode(400, 300, 32, SDL_SWSURFACE); if ( screen == NULL ) return 0; /* Now do whatever we want! */ startGame(); SDL_Quit(); return 0; } </pre> If SDL failed <pre> if( SDL_Init( SDL_INIT_VIDEO ) == -1 ) { fprintf(stderr, "Failed to initialize SDL. [%s]\n", SDL_GetError()); exit(1); } </pre> <pre> SDL_Surface *screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE); if( screen == NULL ) { fprintf(stderr, "Failed to set video mode. [%s]\n", SDL_GetError()); exit(1); } </pre> <pre> SDL_Event evt; bool done = false; while( !done ) { while( SDL_PollEvent( &evt ) ) { switch( evt.type ) { case SDL_QUIT: done = true; break; case SDL_KEYUP: if( evt.key.keysym.sym == SDLK_ESCAPE ) done = true; break; default: break; } } } </pre> <pre> #include <sdl.h> int main( int argc, char **argv) { SDL_Event evt; bool done = false; // initialize SDL if( SDL_Init( SDL_INIT_VIDEO ) == -1 ) { fprintf(stderr, "Failed to initialize SDL. [%s]\n", SDL_GetError()); exit(1); } // create a software surface/window SDL_Surface *screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE); if( screen == NULL ) { fprintf(stderr, "Failed to set video mode. [%s]\n", SDL_GetError()); exit(1); } // main game loop while( !done ) { // check for events generated from SDL while( SDL_PollEvent( &evt ) ) { switch( evt.type ) { case SDL_QUIT: done = true; break; case SDL_KEYUP: if( evt.key.keysym.sym == SDLK_ESCAPE ) done = true; break; default: break; } } } SDL_Quit(); return 0; } </pre> <pre> Uint32 color1 = SDL_MapRGB(screen->format, 0x00, 0x00, 0xFF); Uint32 color2 = SDL_MapRGB(screen->format, 0x00, 0xFF, 0x00); Uint32 currentColor = color1; </pre> <pre> case SDL_KEYUP: if( evt.key.keysym.sym == SDLK_ESCAPE ) done = true; else if( evt.key.keysym.sym == SDLK_SPACE ) { currentColor = ( currentColor == color1 ) ? color2 : color1; SDL_FillRect( screen, NULL, currentColor); SDL_UpdateRect(screen, 0, 0, 0, 0); } break; </pre> <pre> case SDL_KEYDOWN: printf( "KEYDOWN: %c\n", evt.key.keysym.unicode); break; </pre> ===Sound=== <pre> //SDL_Mixer #include <SDL/SDL_mixer.h> // Mix_Chuck* effect1; Mix_Chuck* effect2; Mix_Music* music; Mix_OpenAudio(22050,MIX_DEFAULT_FORMAT,2,4096); music=Mix_LoadMUS("sound.wav"); effect1=Mix_LoadWAV("sound.wav"); effect2=Mix_LoadWAV("sound2.wav"); screen=SDL_SetVideoMode(x,y,res,SDL_SWSURFACE); //in events loop Mix_PlayMusic(music-1); case SDL_KEYDOWN: switch(event.key,keysym.sym) { case SDLK_1: Mix_PlayChannel(-1,effect1,0); case SDLK_1: Mix_PlayChannel(-1,effect2,0); } //close Mix_FreeChuck(effect2); Mix_FreeChuck(effect1); Mix_FreeMusic(music); Mix_CloseAudio; SDL_QUIT(); </pre> ===Animation=== <pre> //This program is made by thecplusplusguy from YouTube for demonstration purposes. //Feel free to read, learn, or modify the source as you wish, LGPL licence, I guess. //http://www.youtube.com/user/thecplusplusguy //keep this header comment for advertisement :) //compile in case of Windows normally, in case of Linux normally as well, so: //g++ particle.cpp -lSDL //Code::blocks: build and run #include <SDL/SDL.h> #include <iostream> #include <vector> //to store the particles (I like std::vector :D) #include <cstdlib> //for the random numbers #include <ctime> class particle{ //represent 1 particle float x,y,xvel,yvel; //position && speed Uint32 endTime; //death time Uint8 color; //color public: particle(float X,float Y,float Xvel,float Yvel,int life,Uint8 Color); void move(); void show(); bool isDead(); //true if the particle dead else false }; particle::particle(float X,float Y,float Xvel,float Yvel,int life,Uint8 Color) { //initialize the variables, nothing new x=X; y=Y; xvel=Xvel; yvel=Yvel; endTime=SDL_GetTicks()+life; //the end time, is the current time + the time, while the particle lives color=Color; } void particle::move() { //move x+=xvel; y+=yvel; //if it is outside of the screen, set it back to the edge of the screen if(x<0) x=0; if(y<0) y=0; if(x>SDL_GetVideoSurface()->w) x=SDL_GetVideoSurface()->w-1; if(y>SDL_GetVideoSurface()->h) y=SDL_GetVideoSurface()->h-1; } void particle::show() { //just set the pixel to the current color at the current position (pixel manipulation tutorial) Uint8* pixels=(Uint8*)SDL_GetVideoSurface()->pixels; Uint8* pixel=pixels+(int)y*SDL_GetVideoSurface()->pitch+(int)x; *pixel=color; } bool particle::isDead() { //read above, what it does return (SDL_GetTicks()>=endTime || x==0 || y==0 || x==SDL_GetVideoSurface()->w-1 || y==SDL_GetVideoSurface()->h-1); } //the particle engine will store all of the particle, and their initialize position class particleEngine{ std::vector<particle*> particles; //this vector represent all of the particle int x,y,maxparticle; public: particleEngine(int maxpart,int X, int Y); ~particleEngine(); //need for deallocate allocated space void refresh(); //move && show the particles }; particleEngine::particleEngine(int maxpart,int X, int Y) { x=X; y=Y; maxparticle=maxpart; for(int i=0;i<maxparticle;i++) //create maxparticle number of particles with random values both for position, velocity, life, color particles.push_back(new particle(x+rand()%6-3,y+rand()%6-3,rand()%10+(float)rand()/(float)RAND_MAX-5,rand()%10+(float)rand()/(float)RAND_MAX-5,500+rand()%1000,rand()%255)); } particleEngine::~particleEngine() { //deallocate all reserved memory for(int i=0;i<maxparticle;i++) delete particles[i]; } void particleEngine::refresh() { for(int i=0;i<maxparticle;i++) { if(particles[i]->isDead()) //if dead { delete particles[i]; //delete the earlier one and create a new particles[i]=new particle(x+rand()%6-3,y+rand()%6-3,rand()%10+(float)rand()/(float)RAND_MAX-5,rand()%10+(float)rand()/(float)RAND_MAX-5,500+rand()%2000,rand()%255); }else{ //else particles[i]->move(); //move && show particles[i]->show(); } } } int main(int argc,char** argv) { //this should be familiar to you SDL_Init(SDL_INIT_EVERYTHING); SDL_Surface* screen; screen=SDL_SetVideoMode(640,480,8,SDL_SWSURFACE); bool running=true; const int FPS=30; //make the FPS bigger, for quicker animation Uint32 start; srand(time(0)); //seed the random number generator particleEngine ps(5000,screen->w/2,screen->h/2); //create the particles while(running) { start=SDL_GetTicks(); SDL_Event event; while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: running=false; break; } } SDL_FillRect(screen,&screen->clip_rect,SDL_MapRGB(screen->format,0x00,0x00,0x00)); //clear the screen //logic ps.refresh(); //refresh the particles SDL_Flip(screen); if(1000/FPS>SDL_GetTicks()-start) SDL_Delay(1000/FPS-(SDL_GetTicks()-start)); } SDL_Quit(); return 0; } </pre> ===References=== [http://www.sdltutorials.com/game-tutorials/ Comprehensive Tutorials] [http://www.gettingclever.com/2008/08/integrating-sdl-with-lua.html SDL OpenGL and LUA] [http://gamedevgeek.com/tutorials/ Tutorials] [http://code.bluedinosaurs.com/c++/C++%20Tutorial/Jonny%20D's%20C++%20Tutorial.zip C++ Tutorial] [http://code.bluedinosaurs.com/tutorials/blending.html Alpha Blending] [http://www.aaroncox.net/tutorials/ Tutorials] [http://gpwiki.org/index.php/SDL:Tutorials:Complete_2D_Engine_Overview 2D Engine] [http://www.meandmark.com/opengl2dbook.html SDL audio input examples] [http://elysianshadows.com/phpBB3/ Programming Forum] <pre> libSDL.a libSDL_gfx.a libSDLGL.a libSDL_image.a libSDL_mixer.a libSDL_net.a libSDL_sound.a libSDL_ttf.a </pre> [http://www.parallelrealities.co.uk/tutorials/ Stepped Tutorials] [http://javilop.com/game-development/tetris-tutorial-in-c-platform-independent-focused-in-game-logic-for-beginners/ Tetris], SDL uses event-based input. All SDL apps are handling events by themselves. Therefore, every SDL app starts a busy loop on AROS, using as much of CPU time as possible. It seems also that the SDL software is badly written and most of the code uses event pooling (instead of waiting for events) and small delays, like [http://www.gamedev.net/community/forums/topic.asp?topic_id=360184 here]. It also seems, many programmers do not care at all if a SDL game consumes 100% of cpu time even in idle state. <pre> st=SDL_GetAppState(); if ((st==SDL_APPACTIVE) || (! st) ) SDL_Delay(1000) else SDL_Delay(0) PollEvents... ... </pre> Colors in SDL are usually stored in Uint32 variables. This type (and others) is defined by SDL so that you can be sure that you get exactly 32 bits on every different platform/OS, rather than the ambiguous 'unsigned int'. On a 32-bit surface, each color component gets 8 bits. If I write a hexidecimal constant like so: 0x50a600ff, and the pixel format is ARGB, then my components would be alpha = 0x50 (80), red = 0xa6 (166), green = 0x00 (0), and blue = 0xff (255). There you can see that color components range from 0 to 255 (256 values). These components can each be stored in Uint8 variables. SDL uses the standard coordinate axes for computer graphics. The point (0, 0) is in the upper left-hand corner of the screen. The x coordinate increases to the right, and the y coordinate increases downward. This does have a small side-effect that the coordinate system is left-handed (angles are measured clockwise). It pays to wrap certain things in your own functions. For example, you can write a function that draws an image to the screen, taking just the surface pointer and coordinates. Found it very easy to wrap both keyboard and joystick handling into one function, so my game accepts either input method for a particular player and the code to use it is nice and clean. ==openGL== OLD STYLE OpenGL 1.1 - Immediate mode: glBegin(), glEnd(), glVertex() etc NEW STYLE OpenGL2 3 4 - [https://en.wikibooks.org/w/index.php?title=Aros/Developer/SDL&action=edit Vertex Arrays ] === OpenGL 2, 3 and 4 - Shaders and co === glColor() - Even if often used with immediate mode, this is ok for setting a constant color for further vertices to draw. glNormal(), glTexCoord() - As with glColor(), although it's quite rare to set these to a constant value. glTranslate(), glLoadMatrix(), glMultMatrix() etc. - These are the way to do transformations. glMatrixMode() - Used to change which matrix to apply changes to. Don't do glFrustum(), glOrtho(), gluPerspective() or similar each frame (unless its arguments change). In most cases,this belongs to your reshape function. NOTE: all of the previous functionality is deprecated, and done quite differently in "modern" OpenGL glEnableClientState(), glVertexPointer() (and equivalent for normals, texcoords, color), glDrawArrays(), glDrawElements() - While deprecated, the "idea" is generally the same (but used functions different) with modern OpenGL. Give OpenGL a pointer to elements, which it will draw. Of course you want to use VBO (upload the data to graphics ram) when possible. You can do this with few #ifdef's if you want to compile your code also for platforms that already support it. GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN - These are still around in every OpenGL (or OpenGL ES) implementation. Use freely. NOTE: all previous functionality (except immediate mode) works with OpenGL ES1. OpenGL ES2 uses shaders extensively, and it's not possible to write code that works both on TinyGL or OpenGL1 and OpenGL ES2 without using lots of #ifdefs or similar, assuming you do something more complex than clear the screen with the specified color. GL_QUADS, GL_QUAD_STRIP, GL_POLYGON - AVOID. Deprecated, and missing from both OpenGL ES1 and ES2. Use indexed GL_TRIANGLES or GL_TRIANGLE_STRIP instead. http://www.amigacoding.de/index.php?topic=456.0 http://www.amigacoding.de/index.php?topic=494.0 VBOs (Vertx Buffer Objects) with texture atlases (create one big texture with all your textures in it uing [http://www.opengl.org/wiki/Array_Texture Texture Arrays]) - use multiple VBOs, one for each texture atlas - shaders use the OpenGL state machine more optimally. Switching between shaders and textures are often more expensive than actual draw calls, so one has to design the code in such a way that this switching is minimised, e.g. perform all the draw calls that need a specific shader and texture before switching to another shader and/or texture. http://forum.unity3d.com/threads/63149-After-playing-minecraft... lighting shadows reflections bump/parallax mapping === OpenGL 1 - old === AVIOD below <syntaxhighlight lang="c"> //pcguy #include <iostream> #include <SDL/SDL.h> #include <GL/gl.h> #include <GL/glu.h> void init() { glClearColor(0.0,0.0,0.0,1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0,640.0/480.0,1.0,500.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void display() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES); glVertex3f(0.0,2.0,-5.0); glVertex3f(-2.0,-2.0,-5.0); glVertex3f(2.0,-2.0,-5.0); glEnd(); } int main() { SDL_Init(SDL_INIT_EVERYTHING); SDL_Surface* screen=SDL_SetVideoMode(640,480,32,SDL_SWSURFACE|SDL_OPENGL); bool running=true; Uint32 start; SDL_Event event; init(); while(running) { start=SDL_GetTicks(); while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: running=false; break; } } display(); SDL_GL_SwapBuffers(); if(1000/30>(SDL_GetTicks()-start)) SDL_Delay(1000/30-(SDL_GetTicks()-start)); } SDL_Quit(); return 0; } </syntaxhighlight> <pre> int main( int argc, char **argv) { // graphics properties const int width = 640; // width of the game window const int height = 480; // height of the game window const float fov = 45.0f; // field of view (degrees) const float nearClip = 1.0f; // near clip plane (don't set to zero) const float farClip = 100.0f; // far clip plane // initialize SDL if( SDL_Init( SDL_INIT_VIDEO ) == -1 ) { fprintf(stderr, "Failed to initialize SDL. [%s]\n", SDL_GetError()); exit(1); } // set desired OpenGL attributes prior to selecting a video mode SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 ); // use 16 bits for depth buffer SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); // enable double buffering // create an OpenGL surface/window SDL_Surface *screen = SDL_SetVideoMode(width, height, 32, SDL_OPENGL); if( screen == NULL ) { fprintf(stderr, "Failed to set video mode. [%s]\n", SDL_GetError()); exit(1); } // initialize OpenGL if( SetupOpenGL( width, height, fov, nearClip, farClip) == -1 ) { fprintf( stderr, "Failed to setup OpenGL.\n" ); exit(1); } // main game loop bool done = false; while( !done ) { RenderScene(); if( ProcessInput() ) done = true; } SDL_Quit(); return 0; } </pre> <pre> int SetupOpenGL( int width, int height, float fov, float nearClip, float farClip ) { glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); float ar = (GLfloat)width / height; // display aspect ratio // setup projection matrix glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(fov, ar, nearClip, farClip); // setup model view matrix glMatrixMode(GL_MODELVIEW); glLoadIdentity(); // setup depth buffer glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); // misc. GL settings glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glShadeModel(GL_SMOOTH); glViewport( 0, 0, width, height ); return 0; } </pre> ====Render==== <pre> void RenderScene( void ) { // render everything for the current frame glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); // move off center so the quad is visible glTranslatef(-1.0f, 0.0f, -5.0f); // draw quad as red glColor3f( 1.0f, 0.0, 0.0 ); // render the quad glBegin(GL_QUADS); glVertex3f(-1.0f, 1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 0.0f); glVertex3f( 1.0f,-1.0f, 0.0f); glVertex3f(-1.0f,-1.0f, 0.0f); glEnd(); // update display SDL_GL_SwapBuffers(); } </pre> ====Input==== <pre> bool ProcessInput( void ) { // runs the input processing loop // returns true if any input has requested the application to exit SDL_Event evt; bool exitFlag = false; // check for events generated from SDL while( SDL_PollEvent( &evt ) ) { switch( evt.type ) { case SDL_QUIT: exitFlag = true; break; case SDL_KEYUP: if( evt.key.keysym.sym == SDLK_ESCAPE ) exitFlag = true; break; default: break; } } return exitFlag; } </pre> <pre> #include <windows.h> #include <gl\gl.h> #include <gl\glu.h> #include <sdl.h> #include <sdl_opengl.h> // function prototypes int SetupOpenGL( int width, int height, float fov, float nearClip, float farClip ); void RenderScene( void ); bool ProcessInput( void ); int main( int argc, char **argv) { // graphics properties const int width = 640; // width of the game window const int height = 480; // height of the game window const float fov = 45.0f; // field of view (degrees) const float nearClip = 1.0f; // near clip plane (don't set to zero) const float farClip = 500.0f; // far clip plane // initialize SDL if( SDL_Init( SDL_INIT_VIDEO ) == -1 ) { fprintf(stderr, "Failed to initialize SDL. [%s]\n", SDL_GetError()); exit(1); } // set desired OpenGL attributes prior to selecting a video mode SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 34 ); // use 16 bits for depth buffer SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); // enable double buffering // create an OpenGL surface/window SDL_Surface *screen = SDL_SetVideoMode(width, height, 32, SDL_OPENGL); if( screen == NULL ) { fprintf(stderr, "Failed to set video mode. [%s]\n", SDL_GetError()); exit(1); } // initialize OpenGL if( SetupOpenGL( width, height, fov, nearClip, farClip) == -1 ) { fprintf( stderr, "Failed to setup OpenGL.\n" ); exit(1); } // main game loop bool done = false; while( !done ) { RenderScene(); if( ProcessInput() ) done = true; } SDL_Quit(); return 0; } int SetupOpenGL( int width, int height, float fov, float nearClip, float farClip ) { glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); float ar = (GLfloat)width / height; // display aspect ratio // setup projection matrix glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(fov, ar, nearClip, farClip); // setup model view matrix glMatrixMode(GL_MODELVIEW); glLoadIdentity(); // setup depth buffer glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); // misc. GL settings glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glShadeModel(GL_SMOOTH); glViewport( 0, 0, width, height ); return 0; } void RenderScene( void ) { // render everything for the current frame glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); // move off center so the quad is visible glTranslatef(-1.0f, 0.0f, -5.0f); // draw quad as red glColor3f( 1.0f, 0.0, 0.0 ); // render the quad glBegin(GL_QUADS); glVertex3f(-1.0f, 1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 0.0f); glVertex3f( 1.0f,-1.0f, 0.0f); glVertex3f(-1.0f,-1.0f, 0.0f); glEnd(); // update display SDL_GL_SwapBuffers(); } bool ProcessInput( void ) { // runs the input processing loop // returns true if any input has requested the application to exit SDL_Event evt; bool exitFlag = false; // check for events generated from SDL while( SDL_PollEvent( &evt ) ) { switch( evt.type ) { case SDL_QUIT: exitFlag = true; break; case SDL_KEYUP: if( evt.key.keysym.sym == SDLK_ESCAPE ) exitFlag = true; break; default: break; } } return exitFlag; } </pre> ====Lighting==== <pre> // // // glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); //position of light source float pos[]={-2.0,2.0,3.0,1.0}; glLightfv(GL_LIGHT0,GL_POSITION,pos); //diffused float dif[]={1.0,1.0,1.0,1.0}; glLightfv(GL_LIGHT0,GL_DIFFUSE,dif); //ambient light float amb[]={0.2,0.2,0.2,1.0}; glLightfv(GL_LIGHT0,GL_AMBIENT,amb); </pre> ====Animation==== <pre> //http://www.youtube.com/user/thecplusplusguy //load animation main.cpp #include "functions.h" #include "objloader.h" #include "text.h" float angle=0.0; int cube; objloader obj; bool mousein=false; coordinate spherecenter(0.0,0.0,0.0); coordinate raystart(0.0,0.0,0.0); text* tex; std::vector<unsigned int> frames; int curframe=0; void init() { glClearColor(0.5,0.5,0.5,1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45,640.0/480.0,1.0,500.0); glMatrixMode(GL_MODELVIEW); glEnable(GL_DEPTH_TEST); cube=obj.load("test10.obj"); std::vector<unsigned int> chars; char tmp[40]; for(int i=0;i<26;i++) { sprintf(tmp,"font/%d.obj",i); unsigned int tmp2=obj.load(tmp); chars.push_back(tmp2); } tex=new text(0.9,0.8,chars); // cube=loadObject("test.obj"); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); float col[]={1.0,1.0,1.0,1.0}; glLightfv(GL_LIGHT0,GL_DIFFUSE,col); initskybox(); loadAnimation(frames,"anim/anim",250,obj); } coordinate p1(-5.0,5.0,-5.0); coordinate p2(5.0,5.0,-5.0); coordinate p3(5.0,-5.0,-5.0); coordinate p4(-5.0,-5.0,-5.0); /* */ void display() { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glLoadIdentity(); Control(0.2,0.2,mousein); drawSkybox(50.0); UpdateCamera(); float pos[]={-1.0,1.0,-2.0,1.0}; glLightfv(GL_LIGHT0,GL_POSITION,pos); // glTranslatef(0.0,0.0,-4.0); // glRotatef(angle,1,1,1); glDisable(GL_LIGHTING); // if(raysphere(spherecenter.x,spherecenter.y,spherecenter.z,0.0,0.0,1.0,raystart.x, raystart.y,raystart.z,1.0)) if(rayplane(0.0,0.0,1.0,raystart.x,raystart.y,raystart.z,0.0,0.0,-1.0,p1,p2,p3,p4)) glColor3f(1.0,0.0,0.0); else glColor3f(1.0,1.0,1.0); //xs+t*xd glBegin(GL_LINES); glVertex3f(raystart.x,raystart.y,raystart.z); glVertex3f(raystart.x+100*0,raystart.y+100*0,raystart.z+100*-1); glEnd(); glBegin(GL_QUADS); glVertex3f(-5.0,5.0,-5.0); glVertex3f(5.0,5.0,-5.0); glVertex3f(5.0,-5.0,-5.0); glVertex3f(-5.0,-5.0,-5.0); glColor3f(0,0,0); glVertex3f(-10.0,0.0,-10.0); glVertex3f(-10.0,-5.0,10.0); glVertex3f(10.0,-5.0,10.0); glVertex3f(10.0,0.0,-10.0); glEnd(); glEnable(GL_LIGHTING); glCallList(cube); tex->drawText(coordinate(10,0,0),coordinate(angle,0,0),"HELLO\nWORLD\nFROM\nOPENGL"); glTranslatef(-20,0,0); glCallList(frames[curframe]); curframe++; if(curframe>249) curframe=0; std::cout << curframe << std::endl; glColor3f(1.0,1.0,1.0); } coordinate p5(-10.0,0,-10.0); coordinate p6(-10.0,-5.0,10.0); coordinate p7(10.0,-5.0,10.0); coordinate p8(10.0,0,-10.0); int main() { SDL_Init(SDL_INIT_EVERYTHING); SDL_Surface* screen=SDL_SetVideoMode(640,480,32,SDL_SWSURFACE|SDL_OPENGL); bool running=true; Uint32 start; SDL_Event event; init(); bool b[4]={0,0,0,0}; while(running) { start=SDL_GetTicks(); while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: running=false; break; case SDL_MOUSEBUTTONDOWN: mousein=true; SDL_ShowCursor(SDL_DISABLE); break; case SDL_KEYDOWN: if(event.key.keysym.sym==SDLK_p) { mousein=false; SDL_ShowCursor(SDL_ENABLE); break; } if(event.key.keysym.sym==SDLK_ESCAPE) { running=false; break; } switch(event.key.keysym.sym) { case SDLK_UP: b[0]=1; break; case SDLK_LEFT: b[1]=1; break; case SDLK_DOWN: b[2]=1; break; case SDLK_RIGHT: b[3]=1; break; } break; case SDL_KEYUP: switch(event.key.keysym.sym) { case SDLK_UP: b[0]=0; break; case SDLK_LEFT: b[1]=0; break; case SDLK_DOWN: b[2]=0; break; case SDLK_RIGHT: b[3]=0; break; } break; } } if(b[0]) raystart.y+=0.3; if(b[1]) raystart.x-=0.3; if(b[2]) raystart.y-=0.3; if(b[3]) raystart.x+=0.3; display(); SDL_GL_SwapBuffers(); angle+=0.5; if(angle>360) angle-=360; coordinate cameraPos=camPos(); if(spheresphere(cameraPos,2.0,coordinate(0,0,0),1.0)) std::cout << "collision\n"; sphereplane(cameraPos,coordinate(0,0,1),p1,p2,p3,p4,2.0); sphereplane(cameraPos,coordinate(0,0.9701425,0.242535625),p5,p6,p7,p8,2.0); moveTo(cameraPos); if(1000/30>(SDL_GetTicks()-start)) SDL_Delay(1000/30-(SDL_GetTicks()-start)); } SDL_Quit(); killskybox(); delete tex; return 0; } </pre> ====Collision==== <pre> //http://www.youtube.com/user/thecplusplusguy //watch the video for explonation //ray-sphere and ray-plane collision detection. //if you find a bug, let me know #include "functions.h" #include "objloader.h" float angle=0.0; int cube; objloader obj; bool mousein=false; coordinate spherecenter(0.0,0.0,0.0); coordinate raystart(0.0,0.0,0.0); void init() { glClearColor(0.5,0.5,0.5,1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45,640.0/480.0,1.0,500.0); glMatrixMode(GL_MODELVIEW); glEnable(GL_DEPTH_TEST); cube=obj.load("test10.obj"); // cube=loadObject("test.obj"); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); float col[]={1.0,1.0,1.0,1.0}; glLightfv(GL_LIGHT0,GL_DIFFUSE,col); initskybox(); } coordinate p1(-5.0,5.0,-5.0); coordinate p2(5.0,5.0,-5.0); coordinate p3(5.0,-5.0,-5.0); coordinate p4(-5.0,-5.0,-5.0); /* */ void display() { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glLoadIdentity(); Control(0.2,0.2,mousein); drawSkybox(50.0); UpdateCamera(); float pos[]={-1.0,1.0,-2.0,1.0}; glLightfv(GL_LIGHT0,GL_POSITION,pos); // glTranslatef(0.0,0.0,-4.0); // glRotatef(angle,1,1,1); glDisable(GL_LIGHTING); // if(raysphere(spherecenter.x,spherecenter.y,spherecenter.z,0.0,0.0,1.0,raystart.x, raystart.y,raystart.z,1.0)) if(rayplane(0.0,0.0,1.0,raystart.x,raystart.y,raystart.z,0.0,0.0,-1.0,p1,p2,p3,p4)) glColor3f(1.0,0.0,0.0); else glColor3f(1.0,1.0,1.0); //xs+t*xd glBegin(GL_LINES); glVertex3f(raystart.x,raystart.y,raystart.z); glVertex3f(raystart.x+100*0,raystart.y+100*0,raystart.z+100*-1); glEnd(); glBegin(GL_QUADS); glVertex3f(-5.0,5.0,-5.0); glVertex3f(5.0,5.0,-5.0); glVertex3f(5.0,-5.0,-5.0); glVertex3f(-5.0,-5.0,-5.0); glEnd(); glEnable(GL_LIGHTING); glCallList(cube); glColor3f(1.0,1.0,1.0); } int main() { SDL_Init(SDL_INIT_EVERYTHING); SDL_Surface* screen=SDL_SetVideoMode(640,480,32,SDL_SWSURFACE|SDL_OPENGL); bool running=true; Uint32 start; SDL_Event event; init(); bool b[4]={0,0,0,0}; while(running) { start=SDL_GetTicks(); while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: running=false; break; case SDL_MOUSEBUTTONDOWN: mousein=true; SDL_ShowCursor(SDL_DISABLE); break; case SDL_KEYDOWN: if(event.key.keysym.sym==SDLK_p) { mousein=false; SDL_ShowCursor(SDL_ENABLE); break; } if(event.key.keysym.sym==SDLK_ESCAPE) { running=false; break; } switch(event.key.keysym.sym) { case SDLK_UP: b[0]=1; break; case SDLK_LEFT: b[1]=1; break; case SDLK_DOWN: b[2]=1; break; case SDLK_RIGHT: b[3]=1; break; } break; case SDL_KEYUP: switch(event.key.keysym.sym) { case SDLK_UP: b[0]=0; break; case SDLK_LEFT: b[1]=0; break; case SDLK_DOWN: b[2]=0; break; case SDLK_RIGHT: b[3]=0; break; } break; } } if(b[0]) raystart.y+=0.3; if(b[1]) raystart.x-=0.3; if(b[2]) raystart.y-=0.3; if(b[3]) raystart.x+=0.3; display(); SDL_GL_SwapBuffers(); angle+=0.5; if(angle>360) angle-=360; if(1000/30>(SDL_GetTicks()-start)) SDL_Delay(1000/30-(SDL_GetTicks()-start)); } SDL_Quit(); killskybox(); return 0; } </pre> n004tfwtu6q8qcya1gtg7hj6x1shoqv Personal Finance/Other 0 241370 4656722 4656280 2026-08-08T01:00:21Z JackBot 396820 Formatting, [[Special:UncategorizedPages]] 4656722 wikitext text/x-wiki ''There are many ways to reduce everyday expenses without sacrificing quality of life. The following are some simple suggestions for saving money in different areas of daily living.'' ==== '''Entertainment''' ==== Try out cheaper entertainment. Instead of going out to a restaurant, why not a picnic? It will be much cheaper and healthier. Only go to the movies on discount days or at a cheaper theatre. Consider a streaming service instead of a full cable package. Many services now offer movies, shows, and even live TV for a lower monthly cost than cable. You may not need cable at all. Bicycle rides are cheaper than drives. Hosting a get together at home is often cheaper than going out to a bar with friends. Get in the habit of visiting your local parks and being friendly with the people there. Get to know your neighbours. Overcome social stigmas and stereotypes if you have to, and meet people locally instead of spending money on bars and clubs, along with the hangover that often follows. ==== '''Spirituality''' ==== Try to attend a place of worship close to your home, ideally within walking distance. If you cannot get along with the people at a place of worship near you because of race, culture, or other personal differences, and instead drive or rely on rides to somewhere across town just to attend services, you may be missing the point of worship in the first place. Do the things that matter to you, even if that means attending alone or waiting until you find a community that fits. This approach can also save money that might otherwise go toward alcohol, cigarettes, comfort food, or related medical costs down the road. ==== '''Share''' ==== Carpool to work. Once your children have outgrown their clothes, keep the ones in good condition and pass them on to family members. Accept gently used, still presentable children's clothing offered by relatives and friends. The same applies to strollers and car seats. ==== '''Re-gift''' ==== Received a gift you do not need? Give it to someone else instead of throwing it away. If you do not have a friend to pass it to, leave it somewhere visible, such as your porch or a community area, where a neighbour might pick it up. You might end up making a new friend in the process. {{BookCat}} ref2ggaei9f9bxldlxe2ja7fade62e8 History of Western Theatre: 17th Century to Now/Late German 18th 0 242952 4656676 4529365 2026-08-07T18:12:24Z Neojacob 363908 formatting 4656676 wikitext text/x-wiki =Johann Wolfgang von Goethe= [[File:Goethe.jpg|thumb|Goethe was the dominant playwright of late 18th century German theatre. 1787 portrait of the author by Johann Heinrich Wilhelm Tischbein (1751-1829)]] Late 18th century German theatre was led by the towering figure of Johann Wolfgang von Goethe (1749–1832) with such plays as "Götz von Berlichingen" (1773), "Clavigo" (1775), and "Torquato Tasso" (1790). Götz von Berlichingen "was taken from the autobiography of Gottfried von Berlinchengen (1480-1562). This production, rather a series of skillfully arranged scenes than a genuine drama, aroused Germany. Although the end does not agree with the historical facts, it is, nevertheless, a true picture of German manhood and German life in the era of the Reformation" (Moore, 1900 p 112). “The real Götz was 82 when he died in 1562, long after Maximilian’s death in 1519 and 37 years after the Peasant Uprising (1525); the figures of Adelheid, Lerse and Weislingen were invented out of whole cloth, Sickingen and Maria were never married, Götz’ son, Carl, had in fact many siblings, and the importance of Elizabeth and Georg to the play are nowhere reflected in the knight’s biography, which barely mentions them” (Duncan, 1999 p 94). "In Gotz von Berlichingen, with which the productive period of Storm and Stress begins, Goethe depicts the conflict between independence and diplomacy; he endeavours to vindicate the rights of the individual against institutional government. This titanism, or zeal to put things right single-handed, is a characteristic of the time. It appears in its intellectual manifestation in Faust, the earliest draft of which belongs to the years 1773-75, and in its social manifestation in Schiller’s The Robbers (1781), the last undiluted outpouring of Storm and Stress” (Waterhouse, 1928 p 55). The dialogue is “remarkable for its vivid natural tone, its bite, and its varied adaptation to character...We are told that [Göetz himself is] great and noble, that he is sturdy and loves his freedom as his life; he is genuinely kind and paternal in the best feudal condition, he defends his own rights and those of the poor against their arrogant, grasping overlords secular and ecclesiastical, [but yet he defends] vociferous and even turbulent men engaged in feuds which...appear petty” (Peacock, 1959a pp 18-21). The historical Göetz “was important as the champion of the...law of survival of the fittest which had permitted knights of the Holy Roman Empire...to wage predatory wars against each other. At the Diet of Worms (1521), Emperor Maximilian abolished [it], a decision welcomed by the bishops and princes as a means of strengthening their power. To men like Göetz, however, for whom plunder was a way of life, its abolition seemed an intolerable infringement of their ancient freedom. Accordingly, they allied themselves with the peasantry in common struggle against spiritual and temporal despotism...History is also brought alive by the engaging picture of warmth, idealism and bluntness in the hero’s character...He is shown as loyal to the emperor, only quarreling with the corruption of the empire...He confronts his judges with a forthright common sense” (Prudhoe, 1973 pp 33-35). Goethe "avoided all poetical circumlocutions; the picture was to be the very thing itself and thus he sounded in our ears the tone of a remote age in a degree illusory enough for those at least who had never learned from historical monuments the very language in which our ancestors themselves spoke. Most movingly has lie expressed the old German cordiality: the situations which are sketched swiftly with a few rapid strokes are irresistibly powerful; the whole conveys a great historical meaning, for it represents the conflict between a declining and a coming age; between a century of rude but vigorous independence, and one of political tameness" (Schlegel, 1846 pp 514-515). “In Götz, Goethe takes the career of one of the worst robber barons of the fifteenth century, a man who made the slow awakenings of a sense of order that were beginning to show themselves in the rest of Germany utterly impossible in his own neighbourhood and for many hundreds of miles round. Goethe makes of him a splendid disciple of liberty” (Ford, 1947 pp 499-500). Götz “is opposed in his striving for independence by the Bishop of Bamberg, a prelate loving power and luxury, who wins over to his side by the lure of such things, and the wiles of the pampered and seductive Adelheid, the irresolute Weislingen, the friend of Gotz’s youth, who had seemed at one point disposed to find his happiness in a draughty hill-castle with Gotz’s sister, the gentle Marie. The Bambergers stand for all the degenerate influences that are undermining the old German freedom, and it is characteristic of Gotz that he accepts even the leadership of a party of peasants in the Peasant Revolt against his own class—unlike Martin Luther, whose social conservatism at this crisis left such a deep mark on German history. It is an extraordinarily vivid picture that Goethe evokes for us of all classes of society, from the emperor down to peasants and gypsies, in a Germany that he felt, and made his readers feel, to be moved by vital forces akin to those of his own day” (Bruford, 1949 p 79). "Among all Goethe’s masculine creations [Götz] stands alone, the only one who did not use the world, but served it...It is curious that Adelheid...is the only feminine character of the proud passionate class that Goethe ever drew and that Maria, much more like his other characters in type, is about the faintest and poorest of them. With all his unmistakable wealth and inimitable grace in producing women’s characters, each as distinct from the other as Adelheid is from Maria, they are all, Adelheid only excepted, of the dependent, tender, worshipping class" (Hutton, 1903 p 38). The play "is a somewhat chaotic performance, obviously written in imitation of Shakespeare. It violates, whether purposely or not, every law of dramatic construction. It is a touching and poetical story, displaying psychological insight and vigorous characterization. But it takes a nimble fancy to keep up with the perpetual changes of scene; and even the tendency and moral of the piece are open to criticism. Goethe enlists the reader's sympathies in behalf of the law-breaker, whose sturdy manhood and stubborn independence bring him into conflict with the state. Gotz, in spite of his personal merits, represents the wild and disorderly individualism of the Middle Ages, at war with the forces of order and social progress, represented by the emperor and the free cities. Therefore it is scarcely proper to apostrophize him as the martyr of a noble cause. In 'Gotz' Goethe deals, secondarily, with faithlessness as a psychological problem. He practically assigns to himself the part of the villain, Weisslingen, who from sheer weakness, 'possessing no resolution either for good or for ill', breaks the heart of a noble young girl. But Weisslingen is faithless not because of any sinister delight in breaking hearts, but because he lacks the courage to be true, when he falls under the spell of a more dazzling and more powerful charmer. The latter, Adelaide von Walldorf, is the only conventionally wicked stock character of the drama to be found in all Goethe's writings" (Boyesen, 1892 pp 17-18). “The emphasis on the prosaic aspects of shakespearian diction and structure shows that the play is not only a statement in favor of Shakespeare but also a rejection of the orderly elegance of French neoclassical form for German drama” (Brown, 1990 p 53). The play “is Shakespearean only in so far as it attempts to present a great character by throwing light on that character from every possible side. And in doing so, Goethe took, one might say, unfair advantage of the Shakespearean method of constantly changing place and time and he introduced contrasting figures regardless of their economy in the action as a whole” (Robertson, 1912 p 12). “The lack of an organized thread of action and a uniform plot, often cited as the play’s most significant weakness, is more than balanced by the powerful authenticity of the characters, the successful portrayal of a complete social-historical reality, and the new vital language that changed German theater forever” (Bangerter, 1986 p 738). Clavigo is based on an episode in the life of the journalist, José Clavijo y Fajardo (1726-1806), and Pierre Beaumarchais (1732-1799), the dramatist. The subject of Goethe’s play was taken from Beaumarchais’ auto-biography, describing an incident when Clavijo broke off his engagement to Beaumarchais' sister as described in the play, except that Clavijo was not killed by Beaumarchais, who nevertheless caused him to lose his post after appealing to the Spanish king. Clavijo died in a context unrelated to the play’s action after the French dramatist’s death. In the play, according to his friend, Carlos, “Clavigo has ‘strength of thought’ and ‘burgeoning imagination’...Carlos is a clear-thinking philosopher who sees through the cant of bourgeois morality. He analyzes Clavigo’s dilemma with masterly logic...is known to us only by the way he thinks. He does practically nothing in the play. The apparatus of debate having being set up, one of the speakers [Clavigo] proves wanting” (Prudhoe, 1973 pp 39-41). Many critics are biased in preferring plays with strong male protagonists, and underestimate a study of a weak or vacillating character such as Clavigo and a conventional Marie, but she maintains interest as a prototypical picture of abandoned womanhood, as shown in Soren Kierkegaard's analysis of the psychology of the abandoned woman in his philosophical work, "Either/or" (1843). Peacock (1959a) showed the same bias, in that he found Clavigo “a distasteful spectacle of weakness”, preferring instead Carlos, “a strong and brilliant personality rising to power in elevated circles...Beaumarchais is drawn without subtlety and indeed in some scenes is coarse...The other characters...are all slight, including Marie herself, the wilting object of Clavigo’s affections...Carlos’ feelings about Clavigo’s folly in sacrificing a great future with Marie are reasonable and eloquently expressed...It is not the usual conflict of right and wrong...it is...[a] philosophical dilemma as to different values” (pp 26-28). “Instead of the broad, vague fines, which too often obscure the picture in [Götz von Berlichingen]...we have here miniature-like portraits...One has but to compare Clavigo with Weisslingen, or the two Maries with each other, to turn, above all, to the magnificent figure of Don Carlos, the subtlest that Goethe had yet drawn, to realise the advance. The dialogue between Clavigo and Don Carlos- especially in the fourth act- belongs to the most poignantly modern that the dramatic literature of the eighteenth century has to show” (Robertson, 1912 p 20). In Torquato Tasso, "the sanctuary is endangered by an inhabitant who, becoming impatient, is unwilling to abide by its laws and twice offends them. By drawing his sword, Tasso breaks the rule of inviolability; and by attempting to embrace the Princess he implicitly threatens the sisterly chasteness of the sacral virgin. The point is this: Tasso's drama is possible only within such a framework as that provided by the basic paradigm. In the outside world neither of his transgressions would amount to a violation, and there would be no real dilemma. Antonio might kill him in a duel; the Princess might slap his face or succumb to his blandishments. But there would be no dramatic conflict. Tasso, in short, is a creature of the sanctuary, and his story is possible only against its background" (Ziolkowski, 1974 p 83). “There was but one ending to the embittered conflicts that are here unrolled, conflicts unillumined by any spark of consolation, and that is the ending which history itself offered; had the doors of the madhouse closed on Tasso instead of the poet leaving him clinging distractedly to a forlorn and elusive hope, Goethe’s drama would have gained infinitely in strength...In spite of Goethe’s careful and often subtly ingenious use of his Italian sources, there is little that is historical about his Tasso...It is enough to say that in this poem, Goethe has produced the most wonderful drama of a sensitive poet’s conflicts that the literature of the world has to show; he has sounded depths which poetry had not before attempted to sound” (Robertson, 1912 pp 54-56). “Its treatment of life’s central ethical question, culture and wisdom, humanism and civilization, idealism and reality, is part of one of the most profoundly moving portrayals of suffering in all German literature” (Bangerter, 1986 p 741). The main character “is a convincing poet, one of the few poets in dramatic literature in whom we can sec the creative process at work. The highly specialized talents of the poet, as pure poet, are best cultivated in tranquility, but a poet too is a man and a citizen, and his character will suffer if he does not mix with men and play his part in society, he will fear and mistrust men through ignorance of them. This is what has happened to Tasso. He lives wholly for his art, he is all imagination and sensitive perception, but the preoccupation with his own and imagined emotions, one of the conditions of his greatness as a poet, has left him no opportunity to mature as a man among men. His patrons, the Duke of Ferrara and his sister the princess, understand this, and desire nothing more than to make him, for his own good, more at home in the real world, from which he cannot be shielded for ever, but their well-meant efforts to bring him together with Antonio, who has all the qualities he lacks, fail lamentably, leading to die reverse of the intended effect. He loses all sense of reality and self-control, and forgets himself so far as to take the princess into his arms. What has happened in the play has not of itself unbalanced his mind it has merely revealed and intensified a long-existing instability, one with which Goethe makes us feel, any genuine poet is threatened. His theme is the misfortune of being a poet, the occupational disease to which German poets, arch-romantics in an ill-adjusted society, seem to have been quite peculiarly subject” (Bruford, 1949 pp 88-89). Tasso "is represented as an impulsive and warm-hearted man who is violently swayed by his emotions, while the cool-headed man of the world, Antonio, represents the opposite type...Antonio, the adroit and sagacious diplomat, is an unattractive character as compared with the noble and generous Tasso, who errs from inability to restrain his passionate adoration of the Princess Leonora. The world is apt to sympathize more with generous folly than with far-seeing sagacity and nicely-adjusted calculation" (Boyesen, 1892 pp 30-31). “Tasso's great danger lies in his subjectivity, his inwardness. ‘His eye barely lingers on this earth,’ we are told, early in the play. Yet his introversion is not of the arrogant sort; he is diffident about himself and his poetry, and can speak with great charm and insight. All too often, however, he reads his own hopes and fears into others' words; there is a great deal of talking past the other person in the drama. At times his suspicions are paranoiac; at others, especially toward the end of the action, he loses all touch with the world around him. He is of course no mere neurotic; if we feel at some points that he is close to insanity, we also have a sense that in a differently constituted group, things might have developed less cruelly for him. The others bear part of the blame. Successful in practical affairs, Antonio is a frustrated poet; his situation is the reverse of Tasso's…A fatal defect of most poetic treatments of the poet is that we only hear about the protagonist's genius; it is not demonstrated. In Tasso, we experience it: passages like the lines on the Golden Age, Tasso's desperate plan to go, disguised as a pilgrim, to visit his sister, and above all the final metaphor of the shipwreck, are completely convincing. Nowhere is Tasso more moving than in his response to the Duke's advice that he live more sanely and cautiously” (Hatfield, 1964 pp 59-61). The play has been described as "a penetrating study of a too introspective mind" (Wilson, 1937 p 128) and “impregnated with moral philosophy and with judgments of value...It is the most eloquent play in the whole of dramatic literature...commanding an enveloping form which controls everything, and within which all the characters move...[The] central problem [is] how to subordinate the fulfillment of individual desires and ideals, however precious and good, to a civilized social order...The superb mastery of statement, the crystal-clear and limpidly defining language, the wonderful authority and the descriptive analyses of behavior, of men and affairs, all show that the play is a document of a philosophical victory of Goethe’s own...[There is a] feeling of dramatic tension of ideas that exists throughout...[a work] unique in character and form...a remarkable comprehensiveness and detail in the moral analysis of the situation and its delicate, precise, and serene statement...Tasso is...a prey to his imagination...wrapped up in his own thoughts and fancies and fails to care sufficiently about his obligations...to society and the principles of manners and decorum by which it maintains its existence and balances its interests...[When the two ladies crown him with the laurel wreath], a profound humility in his creative being and a still more sublime sense of an ideal never to be attained make him draw back...In a platonic exchange with the woman he loves...he evokes a paradise. The princess, while hinting that his love is reciprocated, gently and realistically reminds him that the golden age is...held...only by the exercise of virtue and the subjugation of licentious desires...What follows will show a double failure of Tasso: a psychological one, his character not being equal to the demands of an ethical social code, and a philosophical one, his view of life being overcharged with dreamy idealism and inadequate to life’s problems...It is in this mood of agreeable surrender to an idealistic love...that he meets Antonio...this man of completely opposite temperament...[After Tasso draws his sword and is taken prisoner], a natural antipathy to the man...reinforced by a latent envy of his rank, his prestige, and his public and social importance...leads...to a violent outbreak of his sense of inferiority, accompanied by a growing hostility to his surroundings...Amidst the charms and sentiment, the quick intelligence...the princess declares her love but cannot allow herself to yield to it, who inflames both Tasso’s passions and the emotional optimism which drives him to his first ill-judged collision with Antonio...We feel too much zeal in her wish to influence Tasso and a lack of a more natural charity and tolerance...Leonore...attempts to conduct an intrigue of her own...stealing him for herself...pleasure-loving, light-hearted, and shrewd” (Peacock, 1959a pp 96-119). “Our first impression is one of brilliance mingled with modesty...Throughout the play he shows a sense of dissatisfaction with his own achievements which suggests man’s universal striving for perfection...Even in self-pity we detect the genuine artist's refusal to rest content with his work...Though the duke is his patron and friend, it is clear that he regards Tasso as his ‘possession’ and to some extent only tolerates his whims for the sake of the glory he brings to Ferrara...Even Leonora Sanvitale, who loves him, shows the same selfish quality in her affection...The elegance of her...imagination does not conceal the cold self-seeking of her heart...Tasso is surrounded by a world only superficially attuned to his poetry and...ultimately proves too passionate a creature to live within its framework...He constantly misinterprets the intentions of those who seek to help him” (Prudhoe, 1973 pp 175-181). =="Goetz von Berlichingen"== [[File:Götz von Berlichingen.jpeg|thumb|Goetz von Berlichingen (1480-1562) fought amid controversies in German states. Drawing of the warrior by Emil Eugen Sache (1828-1887)]] Time: 16th century. Place: Germany. Text at https://archive.org/details/in.ernet.dli.2015.91829 https://archive.org/details/dli.ministry.12094 http://oll.libertyfund.org/groups/51 In violent conflict with the bishop of Bamberg who captured one of his vassals, Goetz of Berlichingen seizes one of the bishop's men, Adalbert Weislingen, once a friend. He is ready to release Adalbert provided the prisoner promises never to fight against him again, a promise readily assented to. When Adalbert asks to marry Goetz' sister, Maria, he joyfully consents. In joy, Adalbert shakes his hand so hard that he tears off his artificial right arm made of steel. However, once freed, Adalbert renews his alliance with the bishop and marries instead Adelaide of Walldorf. Moreover, he convinces Emperor Maximilian to fight Goetz as the enemy of peace. Abandoned by the traitor, Maria accepts Friedreich of Sickengen as her husband, who proposes to fight on Goetz' behalf. When the imperial troops chase Goetz from his castle to Heilbronn and the emperor's commissioner is ready to arrest him as a rebel, Friedreich's troops save him. Goetz returns safely back to his castle, where the emperor orders him to remain. But when the peasants revolt against their masters and Goetz is proposed as their leader, he accepts, though only in hope of containing their disordered rage. He cannot and abandons them when they burn Miltenberg just as the imperial troops close in. The nobles burn alive, break on wheels, and tear apart the rebel leaders. After learning of Goetz' imprisonment at Weislingen castle, his wife, Elizabeth, sends Maria to Adalbert, now commissioner, to beg for her brother's life. As a result, a sickly Adalbert tears up Goetz' death sentence before being poisoned to death by Adelaide's adulterous squire, who, stricken with remorse, confesses his crime and drowns himself. After learning of Adelaide's adultery and murder, judges of a secret tribunal send out an avenger carrying a rope and sword. Sent back to his wife, Goetz feels the end near. "Are you looking for Goetz? He has been gone for a long time," he declares. After learning of the death of one his favorite companions, he warns: "Close your hearts tighter than your doors: the days of treachery approach." Soon, murderers reach his home and Goetz is fatally stricken while crying out: "Liberty! Liberty!" before his wife's face. "Only up there, where you are," she responds. =="Clavigo"== [[File:Friedrich Weber (1813-1882), Clavigo, Stahlstich nach Bendel, D2421-8.jpg|thumb|Clavigo seeks to escape from the despairing Marie while her brother, Beaumarchais, ruminates revenge. Steel engraving by Friedrich Weber (1813-1882)]] Time: 1770s. Place: Madrid, Spain. Text at https://archive.org/details/tragedyoffaustcl00goetuoft Bored of his relation with Marie Beaumarchais and considering her a clog for future advancements, Clavigo abandons her after being promoted as the king's archivist, though she had facilitated the obtaining of this post by teaching him French. Yet he has qualms about leaving her, which his friend, Carlos, tries to dispel by saying there will be time enough to marry after achieving a higher social station. Though her older sister, Sophie, tries to uplift her spirits, Marie remains despondent. "What does my fate matter?" she asks, "what does it matter that a young girl's heart is torn apart, that she is consumed with sorrow and that her unhappy youth tires itself in tears?" She hates Clavigo on seeing him with another woman, but arms herself with only a dagger of the mind. She is both anxious and happy after receiving her brother's letter, stating: "If you are innocent, vengeance, the most terrible vengeance will strike the traitor." Beaumarchais asks Clavigo whether he has any cause of complaint against her sister. He has none, but yet refuses to sign a letter admitting his guilt. When Beaumarchais assures him that he will hound him till he signs, Clavigo yields on one condition. "Promise me not to use it before I have a chance to persuade Marie that my heart is changed and full of remorse, before I speak to her sister to intercede on my behalf to my loved one," he pleads. Beaumarchais reluctantly agrees. Marie shivers on hearing that Clavigo has spoken to Sophie. "Your heart speaks for Clavigo more than you know," Sophie assures her. "If you do not possess the courage to see him again, it is because you ardently wish him to come back." Sophie's husband, Guilbert, points out that whether her brother kills Clavigo or is killed by him, he is lost either way, since Clavigo's death would be avenged. One day, Marie cries out as she hears Clavigo's voice. He avers that nothing has really changed, that he loves her and is certain that she loves him. Marie is unable to speak, but through Sophie lets him know he is forgiven. However, left alone, Clavigo begins to doubt the soundness of his judgment. Carlos reminds him that many women of high rank are willing to ensnare him and that no man at court would approve of such a misalliance. He convinces him to hide while he finds a way to have Beaumarchais arrested. Though outwardly happier, Marie is still anxious, suffers from heart palpitations, and feels she does not deserve such a man as Clavigo. Beaumarchais receives a letter from the French ambassador in Spain, informing him that Clavigo had lodged a complaint against him for threatening him with violence. He, Marie, Sophie, and Guilbert all believe he should escape before the authorities arrest him. At the news of Clavigo's double treachery and her brother's danger, Marie is seized with violent palpitations and dies. Stricken with remorse, Clavigo interrupts the funeral procession to see his dead love one last time, but is attacked by Beaumarchais. They fight with swords until the vengeful brother stabs him. When Carlos arrives, the dying Clavigo beseeches him to forego avenging his death as Beaumarchais escapes. =="Torquato Tasso"== [[File:Torquato Tasso based upon a painting by Allori 1575.jpg|thumb|Torquato Tasso (1544-1595) was an epic poet embroiled in subtle love-relations at court. Etching of the author based on a painting by Alessandro Allori (1535-1607)]] Time: 16th century. Place: Belriguardo, Italy. Text at http://archive.org/details/dramaticworksofg00goet https://archive.org/details/dli.ministry.12094 https://archive.org/details/in.ernet.dli.2015.91829 http://oll.libertyfund.org/groups/51 On a lawn ornamented with the busts of epic poets, Leonora d'Este, princess and sister to Alphonse, duke of Ferrare, and a second Leonora, countess of Scandiano, both devoted to poetry, weave garlands and place crowns on the head of Virgil and Ariosto. Whatever the subject, the princess loves to follow "the dialogue of noble spirits", to which the countess assents: "After so many grave exchanges, the ear and intimate sense taste a soft repose to a poet's rhymes, who spread in our soul in suave songs the emotion of exquisite feelings." The court poet, Torquato Tasso, presents to the duke his epic poem: "Jerusalem delivered". As a reward for his efforts, the princess removes the wreath from Virgil's bust and places it on Torquato's head, who accepts it while feeling unworthy of that honor. "It consumes my hair," he cries out. Torquato questions the princess about certain rumors of a possible marriage for her, which she, to his joy, denies. "Each of my days belongs to you," he swears, transported. In the duke's palace, knowing it is her wish, Torquato approaches the secretary of state, Antonio, with a friendlier face than before, but he is coldly received. Humiliated by his insolence, the poet draws his sword on him. Antonio scorns to fight, reminding him where they are. The duke has no choice but to approve Antonio's behavior, whereby Torquato sadly yields his sword and removes the wreath from his head. The princess and countess agree that the latter should take him to Rome and Florence along with her husband, but Antonio disapproves of that idea. Informed of their plan by the countess, Torquato also disapproves. To soften the impact of their quarrel, the countess reports that Antonio never denigrates him, to which Torquato responds: "He is never so evil as in his praises, never so harmful as in his compliments." Yet to determine whether he has a rival for the princess'love, Torquato pretends to need a leave of absence from the duke for completing another poem. To the poet's disgust, Antonio accepts, as does the duke. While taking leave of him, Torquato dismisses his patron's solicitude: "Rest is what rests me least," he comments. While taking leave of the princess, in a sort of delirium, Torquato embraces her. She pushes him away. "He has lost his mind. Stop him," the duke cries out to Antonio. As the poet is seized, the duke turns away from him. =Gotthold Ephraim Lessing= [[File:Gotthold Ephraim Lessing Kunstsammlung Uni Leipzig.jpg|thumb|Gotthold Ephraim Lessing wrote of social conflicts arising from people of different social ranks. Portrait of the author by Anton Graff (1736-1813)]] Gotthold Ephraim Lessing (1729-1781) continued premier work from early to late 18th century Germany, particularly for "Emilia Galotti" (1772), "Minna von Barnhelm" (1767), and "Nathan der Weise" (Nathan the wise, 1779). The source of Emilia Galotti is an anecdote described by Livy (64 BC-17 AD) in his chronicle of ancient Roman history on the subject of Virginia (465 BC–449 BC), killed by her father, Virginius, to prevent her from becoming a slave. The story was previously adapted for the theatre by the combined collaboration of John Webster (1580-1634) and Thomas Heywood (1570-1641) under the title of "Appius and Virginia" (1625). Lessing "stripped it of its ancient coloring, and made it represent the court of one of the contemporary Italian princes...The characters are well drawn; the worthy old father, rough and impetuous; the honest, manly lover; the charming, modest girl, who in her timidity is the most resolute of her sex; the profligate prince, whose mind is open to the higher interests of refinement, but who never restrains his wishes, because he thinks himself subject to no law; even the less prominent characters are graphically presented, and the course of the action springs...from the nature of the characters. The plot is developed without awkward halts or gaps" (Moore, 1900 pp 94-95). "The incidents which Lessing devised to advance the action and to develop the characters were effective and novel in the 18th century. The prince shows his impulsive love for Emilia Galotti by granting a request to a woman because she, too, is named Emilia. Later, he is ready to sign a death warrant without looking at it, so absorbed is he in his new passion, much of the exposition is given by having a painter bring to the prince a portrait of Orsina, his mistress,and one of Emilia. To develop character and action by introducing incidents not closely connected with the plot is a method of modem playwrights but was a striking novelty in the 18th century. To make each act a unit ending with a distinct climax, as Lessing does, was also an important factor in the dramatic technique of the 18th century" (Stuart, 1960 p 466). "In some of the characters of 'Emilia Galotti' there is high imaginative power, as in the prince of Guastalla and his chamberlain, Marinelli, who weaves the intrigue from which Emilia escapes by death. The diction is at once refined and vigorous, and there are scenes in which some of the deepest passions in human nature are sounded with perfect art" (Bates, 1903 vol 10 German drama p 54). "The characters are drawn with clear, sharp outlines, well contrasted. The weak vacillating prince, eager to profit by Marinelli's villanies, yet afraid to meet the consequences- prone to crime, yet throwing the blame on others- signing a death warrant with the same levity as if it were a billet doux- is capitally studied" (Lewes, 1896 p 214). "The play is all fire and force, and shows, too, a power of subtle characterization for which we have scarcely been prepared by any previous work of Lessing^s. The prince’s character is a particularly fine example of this subtlety of conception- a man with many engaging qualities- love of art, refined sentiment, quick impressionability, yet at bottom utterly worthless, and capable of sacrificing anything rather than the least of his caprices. Odoardo, too, the father of Emilia, witli his sternness, rectitude, and fiery energy, is an admirably conceived character, and so is the worldly and foolish mother. Of Emilia herself it is, however, difficult to form any consistent view. In the beginning of the play she is a very Desdemona in her childlike innocence of heart. Towards the end, after her bridegroom has been murdered almost before her eyes, she entreats her father to slay her- why? Not because she has violence to fear at the hands of the prince to whose castle she has been borne, with what designs she well knows, but because she has doubts of her own steadfastness" (Rolleston, 1889 p 139). Marinelli “fills us with loathing and contempt, for he exercises his ingenuity for the basest of purposes; and yet his villainy is not of a common type, for he does not practice it for gain or for its own sake, but from a mistaken sense of devotion to the Prince. He is, indeed, without personal scruples; but if he had them, it is clear they would be overcome by the estimate of his courtly duties, which to us seems so strange, but is common enough in the palaces of despots. Appiani is less boldly drawn; but ho also is a distinct type- a young, somewhat melancholy man, apt to be superstitious, but passionate and proud. Whenever Odoardo appears, we feel ourselves in the presence of restless vigour; we are confronted by a man who knows not how to yield, and who will push to his goal, no matter what may be the obstacles, or fall in the effort. In Claudia we have the living image of those feeble nature which will not frankly look facts in the face, which push aside what is disagreeable, and, when the evil hour comes, meet it only with piteous shrieks and vague charges that ought in the first instance to be urged against themselves. Orsina, who has some qualities in common with Marwood in ‘Miss Sara Sampson’, impresses us with a sense of vehement power. In emotion she knows no mean. If she loves, her love absorbs her whole being; her hatred stops at nothing short of death. Not only are these characters boldly conceived, there is no pause in the interest of the play, we pass from scene to scene with fresh and growing curiosity. And the dialogue, although thoroughly natural, is strong and terse never dwelling too long on a single idea, sometimes rushing forward like a foaming torrent that sweeps before it every obstruction to its progress. Everywhere there is the stir, the excitement of intensely concentrated life...But...we are never made to feel that Emilia's ruin, if she lives, is inevitable. The prince, with all his faults, is not the kind of man who would owe a pleasure to an act of personal violence; he is too delicate, too refined for that. But, it may be answered, there is danger from the nature of Emilia herself and this reply is justified by the astonishing speech in which she warns her father that she may be unable to resist temptation” (Sime, 1879 vol 2 pp 119-120). "Her father used to be, for her and for practically everybody else, a model of rough-hewn integrity and strength of principle. He has now lost control of himself and the situation, being unable to prevent what he must view as an abduction for the most illicit purposes, or worse, he has turned against his daughter or abandoned her. Her mother has revealed herself as a woman of tireless social ambition, unswervingly blind to the pitfalls of the road she would travel. Only at the last moment- too late- is she aware of the crisis her ambition and folly have in part engineered" (Ryder, 1972 p 341). The play made Schopenhauer squirm in his seat as no other (Parerga and Paralipomena, 1851), because the sight of virtue subverting herself makes anyone uncomfortable. For some, the play “is almost too terribly harrowing to be supportable by a modern audience” (Ford, 1947 p 489). Brown (1971 pp 123-130) summarized opinions of various critics in regard to whether Emilia was sincere in telling her father that she might accept the prince as a lover or whether it is merely a ploy to goad him into killing her, rather than be subject to the prince's power. The unwillingness of Odoardo to kill the prince for Appiani's murder pushes her towards this drastic extremity. To other critics, the motivation to commit suicide is insufficient unless we accept her statement that she would have eventually submitted herself to become the prince's whore. "Emilia sees her virtue less threatened by the power of the prince than her own willingness to be seduced. She is not afraid of a weak will which would allow her to give in to the power of the prince, but rather her own drive, her own senses, which can no longer be controlled under such sensual surroundings" (Fischer-Lichte, 2002 p 158). "Marriage having been impossible for her on the death of her betrothed, and religion...denied her by Marinelli's intrigue, she was left open to temptation she could not hope to resist" (Bostock, 1951 p 71). "Examination of the text of the second act reveals careful and adequate- although subtle- preparation for Emilia's candor about her sensual nature...Emilia's narration of her encounter with the prince in church...[indicates that she is] stirred by the bold declaration of passion for the personage behind her...Emilia's prayer for deafness clearly anticipates her later demand for death...A genuine dilemma confronts the prince. If he punishes Odoardo for murder, then he compounds his own guilt before the next higher court, which is God's own tribunal. If, on the other hand, he confesses his own implication in the catastrophe, he may possibly suffer the fate of his ancient counterpart, Appius" (Cowen, 1969 pp 13-17). An additional viewpoint is that suicide arises partly from guilt feelings of her lover's murder. Emilia “replied nothing when the prince spoke to her in church...While telling her mother of the meeting in church, however, her confusion and fright make her forget what actually happened. She indistinctly remembers feeling a touch of joy in spite of her fear and indignation, and she remembers her being strongly tempted to say something to the prince. Hence, when talking to her mother, she believes she really answered him...Thus by telling her mother that she spoke to the prince, she subtly, though unconsciously, confesses her weakness for him, and the passage is another of those fine psychological touches of which the play is full” (Von Klenze, 1891 pp 215-216). Emilia “recognizes the undermining effect of the dissolute life she had witnessed as a guest in the Grimaldi home and remembers too her own conflicting emotions attendant upon the prince's remarks to her. Recalling this, she is fearful of her own latent passions, of which she has but just become aware. Brought up as she had been, to believe that death was preferable to a life of ignominy, she chooses death because she is not absolutely sure that she can resist all seductive forces. There is no escape from the trap that has been set by Marinelli and the prince. She can show that she is a free human being, an individual in her own right only if she chooses death...Claudia is a very interesting figure because she affords so realistic a view into the actual life of a woman of the time...Despite his love, her husband tyrannizes over her, so that whatever spirit she may have had has long since been crushed. What may seem the result of a foolish superficiality- but only in terms of the final outcome- is her withholding of information from her husband. In so far as her silence was a self-defense mechanism designed to avoid unnecessary unpleasantness in the household, however, it is understandable. When she sees her daughter run into the house, disturbed and frightened, and after she hears what has happened, her first reaction is a feeling of relief that her husband cannot hear the disturbing news because he would blame her for it” (Schreiber, 1948 pp 225-226). Minna von Barnhelm "is Germany’s first national comedy it embodies as no comedy had attempted to do before in German literature, the events, the ideas, and the atmosphere of its time; it was, as Goethe well said, the truest product of the Seven Years’ War. Neither, however, the motives nor the situations of the drama are specifically German; it abounds in analogies to the European comedy of the earlier eighteenth century, from Farquhar’s The Beaux' Stratagem to Voltaire’s L'Écossaise" (Robertson, 1911 p 126). "Minna von Barnhelm" “is the best of his plays; it is brisk in action, lively in incident, and ingeniously contrived throughout” (Matthews, 1903b p 13). The play "provides an appealing romance in the behavior of the spirited heroine who woos her lover when his loss of position and lack of means prevent him from taking the initiative" (Gassner, 1954a p 320), "The whole is embodied in scenes, partly mirthful, partly affecting" (Moore, 1900 p 93). It is "an extraordinary play which fits into no accepted category and defies rigid classification. It has few literary ancestors, either in plot or spirit. It springs almost entirely from Lessing’s own experiences and critical standards...One does not at first grasp the full meaning 'Minna von Barnhelm' or even the main outlines of its plot...The complicated antecedent action gives a body to the comic misunderstandings between Minna and Tellheim by indicating that political forces underlie the apparent triviality of the situation. Tellheim is meant to represent the Prussian officer at his best, charitable, loyal, and courageous; Minna is the Saxon landowner, emotional and impulsive, but practical and shrewd. Minna oscillates between sentimentally thanking heaven that she has found her constant lover and mischievously planning a trick to make him reveal his true feelings to her. After the long and important scene between them in the fourth act, at the end of which they agree to part, Tellheim is informed that Minna has been disinherited and is therefore no longer rich. The fifth act is taken up with Tellheim’s reaction to this news, his decision to seek a fortune for them both, and his pleasure at being able to take care of Minna when he learns that the generous king has taken him back into favor. Minna has the fun of seeing how Tellheim would feel about her poverty, whether he is poor or rich himself, before she admits that her story of being disinherited is all a fiction and that she has invented it to overcome his conscientious scruples about marrying her" (Perry, 1939 pp 292-293). "The plot deals with problems of a society grown accustomed to war but now confronted with peacetime by focusing on those of a Prussian officer, Major von Tellheim, and his Saxon fiancee, Minna von Barnhelm. Tellheim, dismissed from the Prussian army in dishonor due to suspicions that he had mishandled money, taken bribes, and conspired with the enemy Saxons during the war, avoids his fiancée and his friends because of his disgrace. Minna seeks him out and, upon hearing of his misfortune, offers him her own fortune and insists that their marriage take place as planned; he refuses on grounds of honor...This sense of honor has been damaged by the accusations leveled against him, even though he knows that they are untrue. The damaged sense of honor precludes handouts from anyone, even from those whom he has helped in the past...The ring trick Portia plays on Bassiano, a small episode in Shakespeare's fifth act of 'The merchant of Venice' (1597), becomes in 'Minna von Barnhelm' the comic backbone of the entire plot. The two ring tricks bear a marked resemblance to one another. Each man has received a ring from his fiancée; and each man, contrary to oaths and apparently contrary to constancy, allows the ring to leave his hand. In each case the woman obtains the ring, and in each case she fully utilizes the situation to berate the man for his supposed inconstancy. A major discrepancy occurs at this point. Portia ends the game with an admission of the trick upon Bassiano's promise to be faithful in the future, and general laughter ensues. Lessing's Minna, however, continues the trick to a point where the comedy nearly becomes tragedy. Unlike Bassiano, Tellheim is so blinded by upsetting circumstances that he neither recognizes the truth nor gains insight into his fault. When the game is finally brought to an end with the arrival of Minna's uncle and Minna's hasty explanation, Tellheim's confusion is akin to despair...Why doesn't Tellheim follow Lessing's prescriptions for the educational goal of comedy by gaining insight into his exaggerated and ludicrous sense of honor? And why does Lessing have to resort to a fortuitous coincidence (which he elsewhere deplores) in order to resolve the conflict he creates in the drama?...The dilemma cannot be resolved without the 'deus ex machina' device of full restoration of his honor and his fortune, since without both he is not Minna's equal" (Aikin, 1987 pp 48-53). “Minna is reluctant to accept her lot and is no longer capable of waiting quietly on the chance that good luck may bring Tellheim her way again...Once Minna sees Tellheim, she refuses to accept any of his reasons for breaking their engagement. To her he is still the honorable man, though his honesty has been questioned by the authorities; he is still the desirable husband, though he has lost his worldly possessions and is entirely without funds or prospects of any. His wounds she dismisses just as lightly. Minna loved a man who had proved in times of success that he had sympathy with the oppressed, that he was generous and kind. Quite rationally, she values such attributes above wealth and social rank. However, she is still in possession of both and it is Tellheim who cannot continue with their alliance because, in accordance with bourgeois canons, he must not be dependent on his wife for money and social rank, though the aristocratic code would allow such conduct. Only when Minna's intrigue begins and she falsely informs him that for his sake she has left behind all that he considers of social importance does he spring into action...It is Minna's individuality which distinguishes her as a heroine in the development of German drama, it is this which explains her failure to understand that Tellheim's convictions have their foundation in the mores of the day. She refuses to realize that Tellheim, the discharged officer for whom the king can find no adequate post, has a good deal of justification if he refuses to become the husband of a very wealthy heiress. With pride in himself as an individual he could only smart under the disdain of the group that had risen because of its wealth and therefore placed a high value on money. She does not perceive that this social ostracism, this social isolation, could never secure happiness in their union. It is this failure of Minna's to understand a man like Tellheim, in spite of her great love for him, which explains her light and almost flippant rebuttals of all his arguments...Franziska likewise transcends literary convention. She is still the traditional confidante of the heroine, but she also becomes in a very natural manner her playmate and companion throughout life. The daughter of the miller on one of the estates belonging to Minna, she was brought up with her mistress and presumably received the same education. Lessing's acceptance of the class distinctions of his time is evident, however, in the difference between the refinement and culture of Minna and the simple shrewdness of Franziska. She can see through Riccault at once and hardly needs his explanation as to the use he would make of the money received from Minna. Though Franziska is far more aware of the wiles and evils of the world than is the elegant Minna, she is a refreshing ‘Naturkind’, with wit, common sense, kindness and sympathy (Schreiber, 1948 pp 216-218). “Tellheim’s generosity amounts to a resistance to this spirit. He will accept no gifts, and he even thwarts the legitimate repayment of money owed him. His aversion to being indebted to anyone seems part of a desire to undo the guilt that has forced him into exile. He is not technically guilty, but the fact that he feels tainted by an act he did not commit makes him a fitting prototype for the modern subject of conscience and thus an ideal subject of comedy, whose conciliatory spirit acknowledges original sin while mitigating the hold it has over the individual” (Calhoon, 2013 p 63). Tellheim's "respect for what he calls his honour often verges on the absurd, for his honour in any true sense of the term is not, in the smallest degree, injured. He has been guilty of no wrong; he is incapable of a mean act; he is merely misunderstood. And although it would be affectation in any one to deny that he feels keenly an unjust charge, yet a man of the very highest type of manliness would not allow such an accusation to crush him to the earth. Much less would he allow it to stand between his enduring happiness and that of one who is dearer to him than himself. He would call to mind that a human spirit is degraded only by its own act, and after doing everything in his power to clear his reputation, await the result in proud silence. Tellheim, however, is so overcome by the injustice done to him that his judgments of men and things are utterly warped, the deepest sources of his feeling poisoned. But in spite of this weakness, how admirable a character he is! Absolutely fearless, he is tender and sympathetic towards weakness and misery; and there are no limits to his power of self-sacrifice. Even his honour gives way when Minna appeals to a higher principle" (Sime, 1879 vol 1 p 235). The play "is always called a comedy. Tellheim is comic, not because he is a Prussian officer with a high sense of honour, nor because his ideas are conspicuously false, for they are not. Any man who had been discharged from the Forces, not exactly in disgrace, but in disfavour, and had no means of support, might feel unworthy to marry a girl he loved and respected, and any man might feel ashamed to be dependent on his wife, although that may be less obvious today than it was even a generation ago. Tellheim, however, is bent on sacrificing the happiness of two lives to these scruples, and the mistaken chivalry with which he treats Minna is really masculine conceit. He carries things to the verge of tragedy, and Minna does likewise in her not unnatural pique" (Bostock, 1951 p 70). One perceived fault in the play “is that the audience is kept in ignorance of Tellheim's disgrace until he has been pardoned...and the details are communicated through the medium of dauntingly legalistic jargon...It is curious that so many authorities should still refer to Tellheim as a Prussian when Just indicates that his master is a native of Kurland [who fought for the Prussian cause,...a predominantly Latvian-speaking duchy...While the overwhelming majority of critics state or imply that Tellheim bears no responsibility for his financial misfortune, it can hardly be overlooked that by his own admission he has knowingly disobeyed military orders passed to him by his superiors...But we feel we know enough of him to detect the operation of a high-minded humanitarianism in what he has done” (Durrani, 1989 pp 639-640). "It is only after Minna deceives him into thinking that she has been disinherited by her uncle that he experiences a change of heart and recommits himself to their marriage, regardless of the social consequences. [Erlin (2001)'s] claim is that the conditions of possibility for Tellheim's change of heart are inextricably intertwined with the urban setting in which this transformation takes place. "Of central importance in this context is the notion, common in late eighteenth-century discussions of Berlin, of the city as a site of social detachment, of liberation from existing social conventions and norms" (Bostock, 1951 p 22). "The salient historical fact is that here at last, and for the first time, genuine German life was brought on the stage with captivating art. The characters are no longer bookish types speaking a conventional language, but real men and women, each with a distinct individuality, and all talking naturally under easily supposable conditions. In the motives and situations some concession is made to theatric convention, but broadly speaking the comedy is without caricature in the direction of farce, and the sentiment never degenerates into mawkishness. But dramatic realism, lively movement, and technical skill offer no guarantee of immortality. Multitudes of good realistic plays have been quickly forgotten, just because they were too faithful to the life of their epoch in its trivial and quotidian aspects. The perennial charm of Minna von Barnhelm is due to the fact that the reader or spectator feels in it the pulse-throb, not only of human nature, but of human nature in a great and critical epoch. Peace had come after seven years of bitter internecine conflict, men were asking how the wounds were to be healed and what the Prussian triumph might portend for Germany. Lessing answers with a pleasant and tactful work of art. The stiff-backed Prussian officer Tellheim is brought to his knees by the sprightly Saxon Minna, and the Saxon victory is so managed as to convey, without any preaching, a salutary lesson of laughter, peace, hope, and mutual understanding" (Thomas, 1909 pp 231-232). “In addition to Minna and Tellheim, there are many other vivid characters…for example Tellheim’s humorous, loyal servant, Just, who is constantly jousting with the greedy, prying innkeeper...Riccault de la Marlinière is introduced in the play to serve as a foil both to the uprightness of Major von Tellheim and as a warning against the pernicious influence of the francophiles among Lessing’s countrymen” (Rudowsky, 1986 p 1205). In Nathan the wise, The three principal characters- Nathan, Saladin and the Knight Templar- represent Judaism, Islam and Christianity and the lesson to be deduced from the plot is simply that the test of the true religion lies in deeds and works, and not in the mere profession. The finest passage in the work is the story of the rings, which is that of the Jew Melchisedech, as told by Boccaccio in the third tale [of the first day] of the Decameron" (Taylor, 1879 p 221). "Saladin spares Curd’s life because of a family resemblance, a universal appeal. Curd saves Recha’s life out of feelings of general humanity. Nathan raises Recha despite the fact that Christians had murdered his wife and sons. All these as well as Nathan's fable and Recha’s triple appurtenance of Christian, Jew, and Muslim, point in the same direction in that human concerns as a whole supersede concerns of state and religion" (Brown, 1971 p 158-161). "Saladin is a noble and ideal nature. With these not one of the characters that represent Christianity can be compared, not one of them portrays the Christian spirit in its purity. The patriarch is just the opposite of our ideal of a Christian man; he is the fanatic and pious bigot who would like to drive everybody by fire and sword into conformity with his own views. The Templar is a true, noble and heroic character, but gloomy, and religiously indifferent. Strict justice demands a Christian character worthy to stand by the side of Nathan and Saladin. Although the scene is in Jerusalem and the time that of the crusades, the ideas of humanity and toleration by which the chief characters are controlled belong wholly to the time of the poet, and express his generosity and liberality" (Moore, 1900 p 97). "With the old Jewish merchant, Lessing illustrates that the intelligence prized by his own increasingly meritocratic society can be had not only through the university but also through the "school of experience. Here at long last was a frontal assault on the common bourgeois perception that the merchant was intellectually inferior. Far from being drained of sensitivity and creativity by the quest for commercial success, Nathan has learned to act in a 'mature and moderate', even 'noble' fashion through interpersonal contacts, many of which have been trading contacts. This demeanor is evident in his private role as father and in his public role as counselor/philosopher. The definition cited above suggests a model worthy of emulation...An 18th century audience would have been jarred in its expectations to observe Nathan the Jew acting as a guide to the Christian Recha even as Nathan the merchant, not Nathan the lawyer or Nathan the privy councillor, acts as a guide to the prince" (Van Cleve, 1986 p 133). “Through his portrayal of Nathan, Lessing advanced the notion that Christianity was not a sine qua non for strength of character. The character of Nathan is contrasted with that of the Christian patriarch of Jerusalem. In the figure of the patriarch, Lessing parodied Goeze's contention that orthodox Christianity was the only path of spiritual well-being...Nathan's wealth is of commercial origin and is positively valuated: the bourgeois can give generously, because he is always earning. The productivity and security of the middle-class merchant is contrasted with the desperate situation of the feudal ruler: Saladin is portrayed as an aristocratic spendthrift who is incompetent at handling money. Saladin's humanity and moral virtue are subject to the limitations of the material conditions and the economic realities that drive the society. Lack of money impedes the ruler from doing good. The pursuit of material interests is viewed as playing a positive role in the society. Nathan's wealth is the justified result of his wisdom: it is at once an expression and confirmation of that wisdom” (Erspamer, 1997 pp 34-37). A weakness in the play's construction appears when “in the patriarch, we have a character who does absolutely nothing to develop the plot” (Sime, 1879 vol 2 pp 250-251). "The insolence and intolerance of the orthodoxy of Lessing’s day are indeed portrayed with a polemical emphasis in the character of the patriarch but the drama contains worthier representatives of Christianity than this ecclesiastic, and the famous parable of the Three Rings goes rather to show how well a man may serve God in any religion, than how little he can place his faith in one. But, unquestionably, one of the means by which Lessing in this play tries to combat intolerance and folly, is the weaning of men’s minds from the contemplation of earthly things in the light of theological assumptions. The evil attending this attitude of mind is exhibited in different forms, as it makes itself manifest in different types of character. We perceive it in Recha as a useless and aimless enthusiasm, in the Templar as a cold spiritual pride, in the patriarch as a furious bigotry which has killed every sentiment of charity and rectitude...It is Nathan’s part to humanize the ideas both of the Templar and of Recha, and the reader will note how admirably here, as elsewhere, Lessing has fused the intellectual with the aesthetic interest of his drama" (Rolleston, 1889 pp 181-183). “The effects of all the [play's] disclosures is to underscore the brotherhood of man, and the play ends on a note of triumphal humanism” (Rudowsky, 1986 p 1211). “On examination it will be found that all the versions of the story [of the ring] belong to one or the other of two types, which are represented by the two earliest forms of the story preserved to us. The oldest version, that of the Spanish Jew Salomo ben Verga, tells of two rings or jewels only, which were in outward appearance exactly alike, and there is no question of one being genuine and the other false, but only of the relative value of the two. In the absence of the father it is found impossible to decide the question, and thus the decision between Christianity and Judaism is simply avoided. In Li Dis dou vrai aniel, a French poem of the end of the twelfth century, three rings appear, and to the original or genuine ring is attributed a marvelous healing power by which it may be recognized, and following which a decision is arrived at among the three religions, in this case in favor of Christianity, although there were not wanting later narrators so bold as to hint that the true ring was possessed by Judaism. The version of Etienne de Bourbon, the versions of the Cento Novelle, the three versions of the Gesta Romanorum, all belong to one or the other of two” (Carruth, 1901 p 1007). Various opinions have been offered on the fable of the three rings in the matter of the religion of love and tolerance. "The growth of this religion of love may be so checked in the spiritual life of man that scarcely any trace of it shall appear, while, on the other hand, the religion of law may, under proper circumstances, produce the most disinterested love. Thus we have the patriarch who is all the more despicable for knowing the command of love disregarding it, yet we see Nathan, in spite of the great obstacles which birth, education and environment laid upon him, crossing the narrow boundaries of his own faith and arriving at the genuine religion of love. It is not a comparison of two religions but of two men...True tolerance is quite opposed to mere indifference and proceeds from a firm conviction of the truth of one's own faith; it consists in the fact that we recognize in others the moral principle of their convictions and the historical right of certain symbols and rites. But he who thinks that the true essence of religion inheres in these symbols and rites alone will be just as intolerant as he who denies their origin, their significance, and their justification. Lessing cannot therefore be justly reproached with having made Christianity inferior to Islamism and Judaism, nor does any blame attach to him for having left it undecided which of the three religions is in possession of the ring” (Primer, pp 356-357). Various opinions have also been expressed on the way in which tolerance appears. "To weaken the link between toleration and disapproval, to satisfy rationalist scepticism about the truth-claims of revelation, to smooth relations among proponents of different religions, and to avoid stirring up enmities like those that devastated Europe in the sixteenth and seventeenth centuries, it is tempting to seek a common ground on which proponents of different religions can agree. Enlightenment thinkers found this common ground in natural religion and natural morality. 'By natural religion', wrote the English deist Matthew Tindal, 'I understand the belief of the existence of a God, and the sense and practice of those duties which result from the knowledge, we, by our reason, have of him, and his perfections; and of ourselves, and or own imperfections; and of the relation we stand in to him, and to our fellow-creatures; so that the religion of nature takes in every thing that is founded on the reason and nature of things.' Yet this common ground has proved unstable. For many people nowadays, the assumptions that Tindal thought self-evident have been undermined by moral and cognitive relativism. Moreover, what purports to be a neutral standpoint, intended to promote tolerance, has developed into a secular agnosticism that is hostile to religion as such. The toleration offered by such an agnosticism tends to sidestep judgement, either by interpreting other people's beliefs as being only superficially different but fundamentally the same as one's own, or by denying that any judgements of truth or value are legitimate" (Robertson, 1998 pp 108-109). "What is the philosophy embodied in his character Lessing wished to preach from the stage? It is thought of toleration, sectarian charity; not the toleration arising from contempt of those of a different creed, nor the toleration arising from mutual concession, political toleration necessary for mankind that they may be able to live side in the same body politic; neither is it that toleration from a spirit of justice and intelligence, it is the 'love' of the New Testament...[shown] by the character of Recha, the perfected product of such education" (Gruener, 1892 p 85). “In Daja, Lessing portrayed for the first time since the comedies of his youth a woman who has more petty faults than virtues...There is more here than just the comic maid-servant...What differentiates her...is her kindness, her devotion to her ward and in a way also her devotion to Nathan, whose consideration and generosity she knows well, but whom she nevertheless distrusts because he is not of her faith. Following the bidding of the Patriarch rather than of her own heart, she betrays Nathan only because she fears that the good fortune Recha might gain by marrying the templar may be lost to her mistress...Sittah is the woman of rationalism brought to the highest degree of development...She rationalizes and can therefore accept things which are repugnant to the idealistic Saladin. Thus, she has to persuade him to test Nathan...Lessing endows Recha with the sentimental traits characteristic of the time...She possesses a good share of Minna's analytical faculties and her humor. This is evident in her first meeting with the Templar. At other times she is like a precocious child. Thus she firmly believes that an angel took her on his wings out of the burning house, though Nathan's prosaic explanations finally convince her that her savior was a man” (Schreiber, 1948 pp 229-232). "Lessing preaches a tolerance born not of the rationalist's contempt, or the statesman’s indifference, but of love and emulation...Every religion- so the teaching runs- is to be judged by its fruits rather than by its proofs" (Thomas, 1909 p 272). “There is criticism of the ideal of hermithood implicit in Lessing's portrayal of Al-Hafi. He is admirable in his honesty, his hatred of delusion and pretense, and in his humanitarian impulses. His only solution however, has a negative, unfruitful aspect. He has not the strength, as Nathan implies, to be human among men; he can love his fellow-men only when he is away from them” (Fitzell, 1961 pp 40-41). “Major Tellheim, Odoardo Gallotti, and Nathan: humanity and wisdom were never more intimately combined with the romantic element of manly honour than in these characters; and no more modern poet,- I say none, has represented this grace, of manliness in the way Lessing has done. And what charming daughters has this severe father! What a charm dwells in Minna, Emilia, and Recha! Who, besides Shakespere, has conceived the nature of females in such graceful softness, such noble simplicity, smiling cheerfulness, and holy purity, as Lessing? We are amazed at the lovely miracle of poetical creation, and we feel as if we could hold sweet converse with these creations, so natural and real do they seem. Lessing was our first modern poet, the first who effected a reconciliation between poetical ideals and actual life, who dared to bring upon the stage heroes in modern garb, heroes of today. Till his time the manly virtue of the old Romans had been known only from its representations in the French comedy. Lessing showed in his Tellheim and his Odoardo that there might be heroes and men of honour even in our every-day prosaic world” (Menzel, 1840 vol 3, pp 277-278). =="Emilia Galotti"== [[File:Emilia_Galotti_(acto_quinto,_escena_VIII).jpg|thumb|Emilia induces her father to stab her to death rather than submit to the prince's whim. 1800 edition of the play]] Time: 18th century. Place: Italy. Text at http://www.gutenberg.org/ebooks/33435 https://archive.org/details/dli.granth.14779 https://archive.org/stream/germantheatre00lessgoog https://archive.org/details/dli.bengal.10689.15332 https://archive.org/details/in.ernet.dli.2015.510631 https://archive.org/details/in.ernet.dli.2015.94839 The painter, Conti, presents to the prince a portrait of Emilia Galotti. The prince is quite struck with it. Conti nevertheless says the work left him dissatisfied, but only to a certain extent. "I am happy with my dissatisfaction," he says. What is lost from the eye to the brush makes him prouder than what he achieved. Marinelli, the court chamberlain, tells the prince the pictured woman is to be married this very day to Count Appiani, at which the prince tosses the painting violently aside. The prince first accosts Emilia at church and is all the more impressed. A frightened Emilia reveals her conversation with the prince to her mother, Claudia, then, calmer, considers she has nothing to fear. Marinelli proposes to Count Appiani an errand he may have the honor of doing for the prince, but the count rudely sends him away. Marinelli forms a second plan: to ambush the wedding party with his men on the way to church and then pretend a rescue with a second group of men. But Appiani shoots one of his men and is fatally shot by another. Nevertheless, Marinelli continues with his plan, ushering inside the prince's country mansion the badly shaken mother and daughter separated from each other. Emilia is dismayed on seeing the prince and wonders where her mother is. "Never think you need anyone's protection rather than mine," the prince assures her. Marinelli confronts Claudia, who wishes to know where her daughter is. Claudia recognizes Marinelli as the man who had quarreled with the count and also the last one mentioned on the count's dying lips in a tone which makes her deeply suspicious for their safety, yet he guides her towards her daughter. Countess Orsina arrives to meet the prince, but he refuses to see her. She guesses correctly the prince's infatuation with Emilia, approaches Marinelli as if to whisper a secret, then shouts: "The prince is a murderer. Tomorrow I'll shout it in the market-place." She goes over to Odoardo, Emilia's father, and hands him a dagger. Odoardo has every intention of removing his his daughter from the prince's mansion, but the prince refuses, as he considers her an important witness of the bloody conflict, proposing instead the house of another of his chancellors. Left alone with his daughter, Odoardo considers her suspiciously calm. He shows her the dagger and says he meant to stab the prince and Marinelli with it. When Emilia asks for the dagger, he refuses to give it to her. Reflecting on the old Roman tale of Virginius, Emilia declares: "There was once a father, who, to save his daughter from disgrace, stabbed her through the heart with the first dagger he could find and thus gave her life a second time, but all such deeds are from days long past. There are no such fathers now." Odoardo proves her wrong, to the prince's horror and dismay as he discovers her corpse. Frustrated at all points, the prince angrily dismisses Marinelli from his employ. =="Minna von Barnhelm"== [[File:Gerda_Lundequist_in_Minna_von_Barnhelm_at_Dramatiska_teatern_1906_-_SMV_-_GL153.tif|thumb|Minna von Barhelm, played by Gerda Lundequist (1871-1959) at the Dramatiska Teatern, Sweden, 1906, weaves plots to capture her lover despite his poverty]] Time: 1760s. Place: Germany. Text at http://www.gutenberg.org/ebooks/2663 https://archive.org/details/dramaticworksge00lessgoog https://archive.org/stream/greatplaysfrench00corn https://archive.org/details/minnavonbarnhei00buchgoog https://archive.org/details/in.ernet.dli.2015.95812 In the aftermath of the Seven Years War (1756-1763), a discharged Prussian officer, Major von Tellheim, has had difficulty in paying for his room, so that the innkeeper offers it to a Saxon gentlewoman who has just arrived, Minna von Barhelm, and gives him a poorer one. As a consequence, Tellheim wants to leave the inn. To pay the dept, he pawns his ring but yet refuses money owed him by the widow of his dead captain. The ring is purchased by the innkeeper and recognized on his finger by Minna as the one she once gave Tellheim, the lover she has been searching after receiving from him only a single letter since his discharge from the army. When Tellheim enters her room, she is disappointed to find his poverty prevents him from marrying her. To help ease his financial distress, Tellheim's former sergeant, Werner, pretends to deliver money to him on the part of the widow he has just dismissed and so is quickly found out. While waiting for Tellheim's visit, a French knight informs Minna that the king has been made aware of Tellheim's merit so that his fortunes will likely improve. In view of his losses at gaming, Minna gives the knight money to be invested for both of them at cards. The knight promises her share even if he has to cheat. Tellheim reminds Minna that he lost money to the government as a result of paying from his own pocket a contribution to the war that was never levied in her district, which government officials disbelieved belonged to him. "Minna von Barnhelm deserves an irreprochable husband," he asserts. "It is a worthless love which does not scruple to expose its object to scorn. He is a worthless man who is not ashamed to owe a woman all his good fortune, whose blind tenderness-" She interrupts by handing him a ring, not, as he thinks, the ring he once gave her, but the one she first gave him, only seeming to free him from their engagement. To his astonishment, he learns from her maid, Franziska, that her uncle, Count von Bruchsal, has disinherited her for refusing a husband of his choice. To avoid appearing as a deceiver, Tellheim requests Werner's help, but this is rendered unnecessary by the delivery of the king's letter stating that Tellhaim will receive the money owed him for his contribution to the war. Overjoyed, Tellheim declares that he will quit the army and marry her, but she draws back her hand, reminding him that "it is a worthless love which does not scruple to expose its object to scorn". "Equality is the only sure bond of love," she adds. "The happy Mina only wished to live for the happy Tellheim." To win her, he prepares to tear up the king's letter until Minna prevents him while yet declaring: "She is a worthless creature who is not ashamed to owe her whole happiness to the blind tenderness of a man." When he discovers that she bought his pawned ring, he angrily concludes that she releases him until she makes known that the ring he possesses was meant for his finger and that her poverty was a fiction meant to test him. Werner is also made happy by Franziska's hand in marriage and his departure to the war in Persia. "In ten years' time," he declares, "you will be a general's wife or a widow." =="Nathan the Wise"== [[File:Fotothek df pk 0000018 024 Paul Wegener in der Titelrolle, Agathe Poschmann als Recha, Kai Möller als Sulta.jpg|thumb|Nathan the Wise (on the right) succeeds in gaining the approval of the ruling sultan, Saladin, played in 1945 by Paul Wegener (1874-1948) and Kai Möller, respectively]] Time: 12th century. Place: Jerusalem. Text at http://www.gutenberg.org/ebooks/3820 http://www.gutenberg.org/ebooks/33435 http://www.fullbooks.com/Nathan-the-Wise.html https://archive.org/details/dli.bengal.10689.15332 https://archive.org/details/in.ernet.dli.2015.510631 https://archive.org/details/in.ernet.dli.2015.94839 While Nathan was away at Babylon, a fire broke out at his house. Daja, Christian confidante to his daughter, Recha, informs him that a knight templar of the third crusade, Curd de Stauffen, recently released by Saladin, the sultan, because of his resemblance to his brother, dead twenty years ago, saved his daughter from the fire. Nathan receives a visit from Al-Hafi, dervish and Saladin's treasurer, hired because, having known mendacity, he is able all the more to provide for beggars in the city. Meanwhile, a lay friar, Bonafides, asks the templar to carry a letter on the part of the patriarch of Jerusalem to King Philip of France concerning Saladin's war tactics against him, but he refuses to act as a spy. Friar Bonafides then asks him to consider murdering Saladin. Since Curd owes Saladin his life, he considers such an act infamous. The sultan being out of funds, his sister, Sittah, suggests that Al-Hafi may borrow from Nathan. To this, the dervish comments: "He never lends, so that he always has the means to give." Nathan meets Curd to thank him for saving his house. But after being harassed by his daughter's thanks, the knight dismisses speaking to him, aside from saying that he wearied of his life after deciding to save a mere Jewess. "Great and abominable!" Nathan comments on Curd's feat. Nevertheless, in gratitude, he kisses the burnt spot on the knight's coat. When Al-Hafi discovers that Saladin requests to see Nathan, he informs Nathan that it is for the purpose of a loan, even worse that Nathan will become his treasurer and thereby lose all his money, so that they should leave together for India. Instead, Nathan goes to Saladin while Curd goes to Nathan's house to find Recha. The young couple are pleased with one another, his leaving early not being a bad sign, according to Daja. "The water is boiling, but he does not want it to spill over," she comments. When Saladin meets Nathan, he asks his opinion as to what is the best religion. Nathan answers him with the following fable: a man once possessed a ring and gave it to the son he loved most, who, notwithstanding order of birth, was to be the leader of his house after his death, and so on from one generation to the next until the ring came into the hands of a father who could not decide which son he loved most, and so he asked an artist to make two other rings, exactly the same as the original, saying to each son it is the true ring, whereby quarrels ensued and it was impossible to recognize the true one. Asked about what the brothers should do, a judge declares he heard the ring belongs to the brother who is most loved. The brothers stand mute. "You cannot answer?" asks he, "then all three of you are tricked tricksters. None of the rings is authentic." Nathan offers him the money he knows Saladin needs. On his way back, Curd asks Nathan for his daughter's hand in marriage. Nathan invites him to his house. "No," says the knight, "there lies fire." Alone with Curd, Daja confides to him that Recha, unknown to herself, is Nathan's adopted daughter born of Christian parents. Curd then questions the doctrine of the church in such a case to the patriarch, who answers that the Jew should be burnt to death even if he did not raise the child in the Jewish tradition but only taught about God in general. The patriarch would like to find that Jew. Knowing of this threat, Benafides confides to Nathan he was the messenger who gave him Recha eighteen years ago, beseeching him to keep that secret for the sake of his safety. Despite the patriarch's opinion, Curd asks Nathan a second time for his daughter's hand. Nathan answers he now must ask that question to her brother. Meanwhile, Daja reveals to Recha her true origin. Recha admits to Sittah that she fears losing her father while on her way to plead for Saladin's intercession in the matter. Nathan discloses to everyone that in a prayer-book obtained from Benafides he learned that Recha is Curd's brother. From the knight's resemblance to his brother, Saladin correctly deduces that he himself is the uncle of Curd and Recha, so that Recha is at the same time a Christian, a Jewess, and an Arab. =Friedrich von Schiller= [[File:Friedrich Schiller.jpg|thumb|Friedrich Schiller depicted the misfortunes of Mary Stuart, jailed by the queen of England to prevent her from obtaining the crown. Drawing of the author based on a painting by Anton Graff (1736-1813)]] Also remembered with Goethe as a powerful dramatist is Friedrich von Schiller (1759-1805) for "Maria Stuart" (Mary Stuart, 1800). In Mary Stuart “Schiller...invents the fanatical Mortimer, the love between Lord Leicester and Mary, and the meeting of the queens” (Simons, 1981 p 116). The play "is, for the most part, painted in the rather drab colours that suggest the tragedy of common life; it deals with passions that are at times the reverse of heroic, and it brings the two queens, Mary and Elizabeth, into a situation that leaves an unpleasant memory with us" (Robertson, 1913 p 120). "Although criticized by some as being sententious, the sententious element of the play, an instance of abstract moralizing, emerges naturally from the dialogue” (Guthrie, 2009 p 137). "The attempt of the young Catholic convert, Mortimer, who is in love with her, to effect her escape, Leicester’s vacillating sympathy for her, even the culminating scene in the garden of Fotheringay, in which she seals her own fate by her angry remonstrances with Elizabeth- all these are but semblances of a dramatic conflict where none exists. But, on the other band, Schiller has embodied in this tragedy an idea that was deeply rooted in the ethics of the German classical age namely, that of moral regeneration and purification through suffering. This is the significance of the long and harrowing fifth act, in which Marie is lifted up by her religion to a peace of soul she has not known before; the expiation on the scaffold becomes for her a triumph of her better self" (Robertson, 1911 p 173). "Careful consideration of the plot reveals that it would not be much affected by the removal of Mortimer altogether. The subplot of which Mortimer is the center is almost entirely without consequence. Elisabeth's attempt to employ him to murder Maria is merely the repetition of a motif already explicit. Although the conspiracy of which Mortimer is the head precipitates the catastrophe of the attempted assassination of Elisabeth, this happens without Mortimer's knowledge or approval and thus does not require him as a character" (Sammons, 1973 p 155). In contrast, Thomas (1909) pointed out the use of Mortimer in the play. "To write a Catholic or a Protestant play about her would have been comparatively easy- the thing has been done many times in many languages- but Schiller wished to make a human drama, the interest of which would not depend on any possible conclusion as to the legal and political merits of Queen Mary's case. The great difficulty was that, if the action was to and with her death, her long-past misdeeds could not be represented, but only narrated. Thus she would appear all along as a doomed prisoner awaiting her fate- a pathetic rather than a tragic situation. In some way it was necessary to make her fate seem the consequence, not of acts done long ago, but of acts seen by the spectator. To attain this end Schiller had recourse to two inventions: first, Mary’s attempt to escape with the amorous fanatic Mortimer, involving her co-responsibility for his attempt on the life of Queen Elizabeth; secondly, a personal encounter of the two queens, resulting in a mortal insult to Elizabeth. By these devices, and by making Mary a beautiful young woman still capable of engaging the chivalrous but unsteady devotion of Leicester, Schiller shifted the issue, so to speak, from the sphere of politics and religion to that of love and jealousy. And he succeeded perfectly in making Mary’s death appear as the consequence of her own passionate error" (p 302). The play “is a tragedy of sombre and mournful feelings with an air of a looking backward on objects of remorse, around on imprisonment, and forward on the grave. Its object is undoubtedly attained. We are forced to pardon and to love the heroine; she is beautiful and miserable, and lofty-minded and her crimes, however dark, have been expiated by long years of weeping and woe. Considering also that they were the fruit not of calculation, but of passion acting on a heart not dead, though blinded for a time, to their enormity, they seem less hateful than the cold premeditated villainy of which she is the victim. Elizabeth is selfish, heartless, envious; she violates no law, but she has no virtue, and she lives triumphant: her arid, artificial character serves by contrast to heighten our sympathy with her warm-hearted, forlorn, ill-fated rival...There is also Mortimer, a fierce, impetuous, impassioned lover driven onward chiefly by the heat of his blood, but still interesting by his vehemence and unbounded daring” (Carlyle, 1845 pp 152-153). “Mary submits with patience to Paulett's reproaches for her guilt, because she feels they are merited; but she is doomed to be punished for crimes, which according to Schiller's authorities, she never did commit, and to be tried by judges who have no legal right to pronounce sentence on free personal rights, nor those of her process, to be infringed” (Palleske, 1860, vol 2, p 336). The play "is a magnificent study of two women, with Mary infinitely the finer character. Human, even sinful, intensely feminine, always courageous, she is represented at the end as having triumphed over earthly desires, whilst Elizabeth is shown as a shrewd politician, vain, spiteful, but with a streak of undeniable greatness. The play is not historically accurate, particularly as regards Leicester. Nor is it so severely simple as the works of Goethe’s later period. But there are no irrelevancies and the events are determined by the characters. Elizabeth’s hesitancy is wonderfully portrayed and there are few better scenes in drama than the one between the two women" (Wilson, 1937 p 132). “Whereas Mary is rooted in the world of sense, Elizabeth is grounded in reason. She stands for civilization, order, self-discipline. Unlike Mary, she undergoes no change in character during the drama” (Simons, 1981 p 123). While Kord (1994) complained that the two rival queens show women's inability to rule, Lokke (1990) argued that "for Schiller, pathos is the essence of the tragic, a pathos born of the conflict between body and soul, which for Schiller is the inevitable and painful tension between the physical and the moral...In order to fulfill his poetic aims, Schiller transforms the historical Mary, who, at death, was forty-four years of age, grey-haired and physically broken from eighteen years of captivity, into a ravishing beauty of twenty-five...Schiller's Mary rises to the moral challenge of death and violence at the hands of others despite her sex; Schiller the tragedian transcends his own previously expressed misogynistic stereotypes which would limit woman's spiritual strengths and capacities...Mary forgives her betrayer Leicester and her executioner Elizabeth and accepts her death as the will of God" (pp 128-129). Mary Stuart's "errors are represented as the result of youthful inexperience, and she lives to repent them bitterly. Of that which condemns her to death before the law she is really innocent, being only incriminated by the false witness of a former servant...The more Mary's character was exalted, the more her rival must be degraded. Everything in the outward course of the play turns on the incident of the signing of the death-warrant by Elizabeth. It is not human sympathy that makes her hesitate, but only fear of reproach. The group of statesmen around her is finely drawn; Burleigh is hard and unfeeling, desiring Mary's death for reasons of state policy; Leicester is miserably weak and faithless, loving Mary and wishing to save her, yet without sufficient courage for the deed, and at the last only concerned about his own safety. Jealousy and wounded pride finally persuade Elizabeth to the fatal step. In the scene with Mary in the garden of Fotheringay she feels herself lowered in Leicester's eyes, and this determines her. Under pretence of yielding to the importunities of the people, she signs the death-warrant, but in a form which will shield herself and throw the blame on her secretary" (Bates, 1903 vol 10 German drama pp 128-129). "Burleigh is the opportunist in politics, the realist in the bad sense, who subordinates justice to the national interest. But he is carefully subordinated to Elizabeth who listens to his advice only when it suits her purpose...Leicester is selfish, ruthless where his interests are involved (witness his treacherous treatment of Mortimer), faithless to the woman he loves as soon as his fidelity is exposed to the slightest strain, and eternally anxious about his position and prestige at court” (Garland, 1949 pp 213-214). "Throughout the play 'blood guilt pursues Mary' because of her role in letting her lover, Darnley, murder Rizzio, a deed that indirectly leads her to an England prison. She first must conquer this blood-guilt to defend herself effectively against Queen Elizabeth. She rejects Mortimer’s offer of killing the English queen to preserve her ‘pride and conscience’. She obtains a sort of spiritual freedom from murder, which Elizabeth does not, 'always the politician, the slave of circumstance and expediency...vindictive and unprincipled'” (Prudhoe, 1973 pp 133-136). Other critics emphasize how both show shrewd attempts at manipulation of each other and men and Queen Elizabeth's greater ability to fight down her emotions for her subjects' perceived good. "Mary poses a genuine threat to Elizabeth. To be sure, she was not directly responsible for Babington and Parry's attempt to assassinate Elizabeth. Nevertheless, she is clearly guilty of creating an atmosphere in which such crimes are all but inevitable. She has refused to sign...a public refutation of her claim to the British throne. She will later admit that she has been in contact with any foreign power willing to help free her from prison (V,7). Meanwhile she is aware that Leicester sympathizes with her at Elizabeth's court and has just sent Mortimer to him with her letter and picture...In act three we find Mary attempting to mask her true feelings. Caught off guard by the news of Elizabeth's approach, she is consumed with hatred just when she needs her composure most...At this point rhetoric becomes sophistry, a calculated emotional appeal designed to manipulate Elizabeth, not to reveal essential truth...Elizabeth refuses to fall into the trap. She cannot forget that Mary has been directly or indirectly responsible for repeated attempts to murder her and overthrow the government. When Elizabeth stoops to personal insult, however, Mary can no longer contain herself...Act V begins with a reversal of the play's beginning, as Mary's royal possessions are carried back on stage. At that time the visual language of the theater suggested that Mary was being stripped of the symbols of monarchy to confront her mortal human essence...Now the accumulation of visually magnificent wealth contributes to the impression that she has accepted her impending death with heroic dignity; the royal pomp crowns individual achievement, not the accident of birth...Mary claims that God enables her to redeem her sinful past through her final sacrifice...[But] her final speech to Leicester confirms the impression that she is not to be trusted...She not only humiliates her former admirer, but in doing so confirms what he had struggled so desperately to deny, namely, his continued love for her and his involvement in a treacherous plot to help her escape from prison. Thus exposed, Leicester has no choice but to flee the country in fear for his life...If she is 'reconciled to herself', then only in the sense that she remains vindictive and manipulative until the end. While Mary conceals her plans under the semblance of honesty, Elizabeth makes no secret of the fact that she lives in a world governed by appearance rather than reality...The pope has excommunicated her, the French are plotting against her, and the Spanish Armada threatens invasion (IV,10). Even worse, Elizabeth's own advisors betray her: the discovery of a letter from Mary to Leicester severely compromises his position, and he saves himself only by revealing Mortimer's treachery. Moreover, Elizabeth realizes that her authority depends completely on the willingness of the English subjects to grant that authority (IV,10). As Mary pointed out in the first act, the English have changed queens and religions four times in recent years; Elizabeth's position as queen is tenuous at best...Convinced that she must kill Mary, she is equally convinced that she has no moral or legal right to execute her fellow queen...Elizabeth's solution is both politically pragmatic and morally despicable: she secretly decides to kill Mary, and then banishes or orders the execution of those loyal servants who carry out her will...In the end Elizabeth stands isolated and exposed, but still in power and in control of herself" (Kontje, 1992 pp 91-96). =="Mary Stuart"== [[File:Mary Queen of Scots in captivity.jpg|thumb|In prison for many years, Mary Queen of Scots prepares for her execution. Posthumous portrait by an anonymous artist]] Time: 1580s. Place: Fotheringay and London, England. Text at http://www.gutenberg.org/ebooks/6791 https://archive.org/details/in.ernet.dli.2015.36544 https://library.oapen.org/handle/20.500.12657/43007 By order of Queen Elizabeth of England, Mary Stuart is held prisoner in Fotheringay castle. To counter this, Mortimer is the agent of a mission from the cardinal of Lorraine in the faction of the Guises to liberate Mary Stuart and let her reign as Catholic queen of England. Mary receives a death sentence by an English tribunal for her part in the Babington plot, but Queen Elizabeth, her cousin, hesitates to put her to death. She negotiates with France in the matter of a possible husband in the duke of Anjou. On one hand, the queen wishes her dead, on the other she is fearful of executing a crowned head. "The part that I take in her death must be forever doubtful," she says to Mortimer. She wants him to execute Mary secretly. Mortimer gives to the earl of Leicester a letter from Mary, as the one most likely to save her. The proposed marriage betwen Mary and Catherine de Medici's son is certain to make the earl lose favor at court. Mortimer reveals that he has accomplices to free her, and, at the same time, Elizabeth's order of death. Leicester tries to convince the queen to see Mary, as if by accident hunting in the park near Fotheringay castle. The two queens confront each other. "Do not profane the Tudor blood flowing in my veins as well as yours," Mary begs her. Had Elizabeth declared Mary as heir to the throne, none of this would have happened. But to Elizabeth, this is not a viable option. "Your family is papism," Elizabeth declares. "I renounce all my possessions of this realm," Mary assures her. In anger, they trade insults as to Mary's known lovers and Elizabeth's secret ones. Eventually, Mary makes known she considers herself Elizabeth's queen. Alone with her, Mortimer counsels Mary to hope for nothing from Leicester. Instead, he declares in a frenzy his love for her. Guards enter quickly to seize him as a result of a rumor that Elizabeth has been assassinated on her way to London. However, one of Mortimer's accomplices, acting alone, failed in his task. Mortimer's friends flee, but he remains to "die on her coffin" if need be. Meanwhile, the marriage plan with the duke of Anjou is annulled. Mortimer says to Leicester that Burleigh, Lord Treasurer of the realm, has found a letter in Mary's cell, mentioning the portrait Leicester received from her. Leicester commands his guards to seize Mortimer as a traitor. In despair, Mortimer stabs himself to death. Before the queen and Burleigh, Leicester defends himself by revealing Mortimer's treachery. Elizabeth is greatly surprised and wishes Mary dead. Burleigh suggests that Leicester should be Mary's executioner. Moreover, the people, in rage and fearful for their queen's safety, demand Mary's death, but she hesitates again, yet gives to Davison, her secretary of state, the order of execution. He insists on hearing from her mouth what is her will. "Act according to your prudence," she answers. He is frightened and wishes to hear more explicit orders. "Do your duty," she counters. Burleigh takes from the confused Davison the death-warrant. In her death-march, Mary is firm, serenely declaring: "I feel again the crown on my head and noble pride in my soul." In prison, one of Mary's accusers in the Babington plot admits he lied, so that a new inquiry must be made. The queen and Lord Shrewsbury ask Davison to restore the death-warrant. When he cannot, the queen accuses him of treachery. "You have treacherously overstepped the bounds of your commission," she declares, ordering him to be conducted to the tower. However, Shrewsbury, together with Burleigh and Leicester, intervenes on his behalf to avoid this injustice. =Jakob Michael Reinhold Lenz= [[File:JacobMichaelReinholdLenz1751-1792Pfenniger.jpg|thumb|JMR Lenz drew a somber picture of the nobility's ingratitude towards their progeny's tutors. Drawing of the author by Johann Konrad Pfenninger (1747-1792]] Also of note in this period: Jakob Michael Reinhold Lenz (1751-1792) for the middle-class drama, "Der Hofmeister" (The tutor, 1778). Lenz also wrote a lesser drama: "The soldiers" (1776) in which Marie is betrothed to Stolzius, a cloth-merchant, but subjugated by Baron Desportes who flirts with her and then abandons her when his debts run too high. To prevent Marie from interacting with her son and helping to recover her reputation, Countess de la Roche offers to keep her as her daughter's companion, but when she discovers her flirting late at night with Lieutenant Murray, she dismisses her. As a result, Marie runs away to find Desportes, but is intercepted by his game-keeper. Stolzius enters into Murray's service. When he overhears Desportes say that the girl is fair game for his game-keeper, Stolzius poisons his soup and his own. Marie is left without means and alone and is eventually discovered begging on the road by her father. In The Tutor, Lenz “handles with equal consistency the major’s tirades, the cranky homilies of the schoolmaster, the energetic preaching of the privy councillor, the rumbustious slang of the students, the school-girlish effusions of Gustchen with her sudden descents into the idiom of the hobbledehoy, and the mincing speech of Rehaar" (Yuill, 1972 p 14). “The title figure is trapped between his physicality and society’s contradictory expectations...His very name means ‘runner’, which suggests a lack of control as well as the frenetic pace of the action. The belief that social circumstances, instincts, and events themselves determine human happiness was a radical departure from enlightenment philosophy with its naïve faith in the ultimate power of reason...Major von Berg and his wife...act as though they are ‘from the mountain’, lofty lords of all they survey. The woman is arrogant and supercilious, her French affectations serve only to accentuate her superficiality and stupidity. The major’s one redeeming feature is his dogged devotion to his compromised daughter; otherwise, he conforms to the type of the old braggart soldier whose greatest source of pride is his unthinking obedience to his sovereign” (Van Cleve, 1986 pp 1163-1164). "Läuffer...emasculates himself, Fritz von Berg, his absent and inattentive boyfriend, also rushes to take the blame for the attempted suicide...In the world Lenz depicts, our fates are so closely interwoven that it is hard to evade responsibility to others. Characters who sidestep the demands of accountability are immediately exposed and made to face the implications of their refusal to be responsible for their decisions" (Leidner, 1994 p 60). “The affair which the tutor Läuffer has with Gustchen is an exercise in lack of involvement. Indeed, relevant here is the fact that the later castration is not the reaction one would expect from a desperate betrayed lover nor is it meant to be seen as a direct result of social injustice- it can be sceen as a parody of pietistic attitudes to sexual relationships. Count Vermouth is never seriously considered by Gustchen...and the fiancé, Fritz, Gustchen’s Romeo, is indeed a figure who is not taken seriously by those around him, mocked (and indeed parodied) as he is from the beginning by his father” (Guthrie, 1993 pp 13-14). “The tutor’s progressive self-alienation is commented on throughout the play, but perhaps the most telling comment is made immediately after the castration has taken place. On this occasion, the tutor’s general countenance prompts Wenzeslaus to remark that he looked as if he had killed someone“ (O'Regan, 1997 p 38). In the Läuffer-Gustchen episodes, “the complete absence of any deep personal commitment on either side is emphasized when the seduction is discovered; the couple do not think of eloping but flee the house separately and make no further attempt to see each other...For both of them, flight involves the renunciation of material comfort and for both it amounts to a failure to take responsibility for their own actions...Moreover, both of them succeed in finding adoptive parents:...Märthe and Wenzeslaus” (Osborne, 1975 p 111). “If one takes the play on its own terms, noting Lenz’ allusions to the fate of Abélard and Héloïse and to Romeo’s rival, count Paris, the play is wholly consistent in its inner logic and makes the point it sets out to make. The plot action and the odd collection of characters complement one another in a complex web of remarkable precision, and the ruinous effects of an outmoded system are not forgotten in the artifice of the happy ending” (Harris, 1990 p 171). "At no time is Läuffer given the liberty to confront his master directly, nor is he allowed to emerge victoriously in the contest which develops between them...His sullen displeasure toward his position, disguised as hypocritical subservience, suggests that private tutorship cannot be advantageous either for the pupil or for the tutor...A second scene in the Hofmeister where gestures are more revealing than discourse is IV.V, which depicts Gustchen's reunion with her father after her near-suicide. In this encounter, the major employs his usual blustering, boisterous and often irrational speech. Gustchen has just been saved from drowning, is reclining on the stage ostensibly still recovering from her nearly fatal leap into the pond, and she must now listen to her father's ranting...[The] attitude expressed by the words of this father toward his daughter is highly ambivalent. On the one hand, his words reveal the major to contain elements of the bourgeois drama's father-figure whose primary concern is the protection and safekeeping of his daughter's virtue. On the other hand, the major is a distortion of the supportive and genteel father familiar from 'Miss Sara Sampson', or the more volatile but equally devoted father of 'Emilia Galotti'. The major is a Storm and Stress father, head of a family riddled with inconsistencies, whose members are caught in the intolerable ambivalence of its several roles. His tangled emotions are quite clearly expressed by his words: simultaneously, he reaches out for and rejects his daughter, demonstrating the familial turmoil expressed in Storm and Stress drama. We cannot, however, ignore his gestures. Except in one instance where the major threatens to return to the pond and reiterates the verbal assault by swinging Gustchen in that direction, his gestures reveal tenderness and concern. First of all, it is he who has saved his daughter from drowning. He then carries her onto the stage and, at the end of the scene, away from it, kneels beside her, wrings his hands when he realizes she has fainted, and finally presses her against his heart...The old authoritarian patriarchal order [appears to be] still intact, with a forgiving father sustaining and controlling his errant but repentant daughter...[But depicted in the final scene] is the absence of the biological father of the child the major is holding in his arms. The child's father, a victim of self-castration, is condemned to spend his days in enforced unproductivity, permanently excluded from a natural relationship with his child" (Madland, 1984 pp 551-552). Läuffer “is the passive product of a modest education, he is financially dependent on his parents, and he finds himself pushed into a vocation chosen by others. Out of a combination of romantic longing and sexual desire he falls in love with the girl placed in his charge...His situation is against him, though this can only be a valid complaint if he has done everything in his power to overcome it. But he has done nothing. His passivity is further discredited by its association with the feeble arguments put up in his defence by his father. Weakness of character, not misfortune or lack of social privilege, is at the root of his predicament. Under the circumstances, the Privy Councillor, whose arguments con- cern this particular case, not general principles, is right to condemn tutorship, and the Pastor is wrong to defend it, although the institution bears no inherent flaws...Lenz wishes us to see Gustchen’s fate differently from that of the tutor. She first appears to be harebrained, but she is shown to be an even greater victim of her circumstances than Läuffer. Being caught in the rivalry between her parents, she has no natural relationship with either. Her mother is jealous of the Count’s attentions to Gustchen and hates her daughter for them, while her father’s feelings are equally strong in the opposite way. The arrangements he makes for her private education isolate her, and she is cast back upon her imagination and her sentimental books. This leads to a perpetuation of the childish role-playing that she has practised, innocently enough, with Fritz but which becomes a fateful exercise when she teaches it to Läuffer. While she is eventually forced to abandon play-acting by the drastic reality of her circumstances, which draw forth genuine emotions of horror, remorse, and despair, Läuffer, who has been forced by the demands of his job into role-playing, learns how to bring posturing to an advanced but ultimately disastrous level. The pair fatefully alludes to the roles of Heloise and Abelard before their flight from the major’s home. Though drastic, Läuffer’s self-castration, after the tragic consequences of the affair unfold, is little more than a clueless abandonment to the model of Abelard. The castration theme, grotesque and ambiguous though it is, is best explained in terms of the foolishness and weakness of Läuffer as Lenz depicts him. The asceticism affirmed in the ‘catechism’ and the supplements, and the praise for the act expressed by the celibate Wenzeslaus, give no grounds for believing that Lenz himself was at all in favour of this particular solution to the problem of uncontrolled sexual desire...Dire poverty and the trauma of childbirth while estranged from her family, with only a blind old woman to help her, bring her to the depths of humiliation and despair” (Pope, 2003 pp 131-133). =="The tutor"== [[File:Bürgerkinder zur Biedermeierzeit (um 1820).jpg|thumb|Early 19th century lithograph of a German tutor at work]] Time 1770s. Place: Prussia and Saxony. Text at ? Privy Councillor Von Berg wonders why his brother, a major, is about to hire a tutor for his son and daughter. The major assures him he will tell the tutor what to do in due course. "In other words, you'll be a tutor to your tutor," the councillor responds. Despite these criticisms, the major hires Läuffer for 400 thalers, though his wife promised him 450. He warns him not to take liberties with his daughter, Gustchen, for otherwise "a bullet through the head and no nonsense!" Gustchen loves her cousin, the councillor's son, Fritz, and they promise to remain true to each other despite his departure for the university for three years. Von Berg discovers their love, but finds the matter childish. In course of time, Läuffer's father, a pastor, tells the councillor that he is scandalized about his son's drop in salary to a paltry 100 ducats. The major justifies the decrease by saying that his son does not accomplish much as a tutor and his position is compromised by a loss of freedom, since "freedom is man's element as water to a fish". His salary eventually drops even lower to 60 ducats. At the university, Frïtz and his friend, Pätus, live under difficult circumstances. Their coffee tastes like barley, which Pätus throws out the window, drenching their landlady. Pätus is later seen to act strangely by neighboring women, three huge dogs chasing him and he in a wolf-skin coat in blazing summer heat. Back home, the tutor's salary drops to 40 ducats. With her lover away, Gustchen wastes away, the major blaming his wife and her stepmother for "strictness and cruelties". In seeking to protect Pätus from being pursued for debts, Fritz is thrown into prison in his place and seemingly abandoned. Yet Pätus returns to his friend, but is forced away by him before the creditors arrive. On beholding his daughter's health deteriorate, the major himself starts to waste away. Suddenly, his wife rushes in to say that the tutor has taken Gustchen away, at which the major, berserk with more than a father's worry and hate, runs off in pursuit. His friend, Count Vermouth, traces the fleeing and desperate Läuffer to a village school, where a schoolmaster, Wenzeslaus, protects him from discovery. With no news from his daughter for over a year, the major's ravings increase. She lives in a hovel inside the woods with Martha, a blind old woman, but wishes to return home. The major follows his brother's directions towards Wenzeslaus' schoolhouse, where, in a fit of madness, he shoots Läuffer in the arm. When interrogated, Läuffer is unable to reveal the whereabouts of his daughter. She is groping among the bushes nearby. Under the impression that her father died of grief for her sake, she dives into a pond, but is saved from drowning by her pursuing father. Meanwhile, Pätus is still in debt, notably to a poor musician named Rehaar, who blames him for attempting to seduce his daughter. Insulted, Pätus slaps his face, much to Fritz' disapproval, who intends to fight his friend on the musician's behalf. In the schoolhouse, Läffner gives a coin to the begging Martha; then, looking down at her arms, faints after discovering Gustchen's baby. In the woods, Pätus, unable to fight against his friend, throws down his sword, but Rehaar draws his and stabs him in the arm. His sword is knocked away by Fritz. To avoid more violence, Pätus offers to marry Rehaar's daughter, a proposal accepted by Rehaar. Meanwhile, stricken with guilt, a bed-ridden Läuffer reveals to Wenzeslaus he has castrated himself, at which the philosophic Wenzeslaus laughs in approval. "A second Origen!" he exclaims. Meanwhile, Fritz, also guilt-stricken, learns of Gustchen's dishonor and thinks she has drowned. Rehaar's daughter is taken up by Councillor Von Burg and makes friends with Gustchen. After three years, Fritz is able to return home thanks to a lottery ticket won by Pätus. Despite his handicap, Läuffner falls in love with a girl named Lise, much to Wenzeslaus' disapproval. On learning he is a eunuch, she appears indifferent. Fritz becomes reunited with Gustchen, Pätus with his wife, and Pätus' father with his son and mother, Martha. =August Wilhelm Iffland= [[File:Iffland_after_Johann_Heinrich_Schröder.jpg|thumb|August Wilhelm Iffland showed how brothers can be manipulated against each other. Painting of the author by Johann Heinrich Schröder (1757-1812)]] Another notable drama includes "Die Mündel" (The ward, also known as The nephews, 1784) by August Wilhelm Iffland (1759-1816). Iffland “became in his plays the advocate and avenger of the duped and oppressed” (Jordan, 1990 p 83). “Iffland introduced on the stage all possible political misery, but as he never failed to throw the blame off the masters, and upon the shoulders of the servants, the censors were not offended by them” (Menzel, 1840 vol 2, p 174). "In Iffland we find declared advocates for freedom, honest Germans fighting for their rights, cabals yielding, and the homely citizen triumphing over the powerful minister. Yet Iffland is always loyal enough to represent princes as completely irresponsible; he always makes them make good the harm their evil servants have done" (Menzel, 1840 vol 4, p 86). =="The ward"== Time: 1780s. Place: Germany. Text at https://archive.org/details/lawyersadramain00ldgoog https://archive.org/details/bub_gb_6GMHAAAAQAAJ Chancellor Fleiffel advises Ludwig Bach, a suitor for his daughter’s hand, that his guardian, Drave, should give an account of his guardianship to him and his older brother, Philipp, liable to defame Ludwig because of his liberal spending habits. Philipp is motivated to do so because a clause in their dead father’s will states that should one of the two brothers be proven to be a prodigal, the other would become his tutor, heir to his fortune, from which a large sum of the inheritance was handed over to Johan Frederick Rose, a banker, to invest. A tutor was deemed necessary because an uncle of the wards was declared insane by the chancellor himself, unjustly so, though the uncle has recently escaped from his captors. In particular, Chancellor Fleiffel encourages Ludwig to request an inventory of Drave’s possessions. Drave complains to his wife that the chancellor is at him again to pay Ludwig’s debts. He refuses to pay. He also refuses to bring him his accounts, given that the chancellor requests money for himself as payment of a loan to Ludwig given at exorbitant interest. His wife informs him that Ludwig is loved by their daughter, Augusta. Although surprised and hurt by Augusta’s lack of confidence in informing him of this, he promises to accede to her wishes. When Chancellor Fleiffel’s son, Samuel, a city counselor, comes over, Drave requests him to forbear henceforth from visiting his house in view of the counselor’s interest in marrying his daughter. At this curt refusal, Counselor Samuel leaves angrily. Mother and daughter next receive the visit of Philipp, who, to their surprise, declares his love of Augusta. In an afflicted tone of voice, Augusta reveals she loves his brother. Chancellor Fleiffel smiles when his clerk informs him that Drave gave security for the sum of money invested by Johan on behalf of his wards. To plague Drave even more for his accusations against him, the chancellor convinced Ludwig to protest against his tutor for an illegally drawn-up inventory of his goods. Meanwhile, Philipp informs Drave that he bribed his uncle’s captors to free their prisoner and sent men to meet him, but they missed him and so the old man is gone he knows not where. When Phillipp meets Ludwig, the brothers coldly agree that a reconciliation is necessary. After his brother leaves, Ludwig flirts with Drave’s servant, Lisette, and kisses her as Augusta enters to witness the scene. Afflicted by such a sight, she grieves even more to hear of her lover’s cynicism at the existence of true love. When Ludwig informs Drave of his intention to marry, the father is overjoyed until he discovers that the woman Ludwig wants to marry is not his daughter but the chancellor’s. The afflicted Drave receives even worse news from Johan Rose, ruined after the bankruptcy of a bank in Amsterdam, so that Drave must now compensate for the loss of his wards’ fortune with his own money. While a magistrate examines Drave’s properties, his daughter asks to see Samuel, begging him to take pity on her father by allowing him to pay gradually, not all at once. But he declines to help and matters deteriorate further when Drave strikes the magistrate for his insolence and is arrested. Ludwig is shocked after Samuel informs him that seals are put on Drave’s property. He wants to reverse such a drastic step, but Samuel tells him he cannot, all the more so because that step will help his case with Augusta. “Reduced to poverty, she must thank me for my protection,” Samuel says. “I will procure her a situation with my aunt at Bonn.” Ludwig refuses to accept such a business, as does his brother who directly confronts Chancellor Fleiffel, who informs him that the plaintiff against Drave is his brother. Philipp wants to provide bail for the prisoner, but cannot, since he is under age. He accuses the chancellor of unjustly taking away his uncle and is arrested in turn. As Philipp is led away by constables while calling for his brother, he tosses him a pocket-book, but the chancellor intercepts it. Distressed at the turn of events, Ludwig promises to restore the Drave’s fortune once he comes of age in two years, but fails to console Mrs Drave, who tears the paper containing his promises and astonishes him by revealing that her husband gave security for his sake. She also casts doubt on his assertion that Philipp intended to accuse him of being a prodigal to become his tutor. A shaken Ludwig confronts Samuel and demands to see Philipp’s papers, particularly the pocket-book. The counselor yields some of them and tries to secure others, but Ludwig discovers the trick and, after discovering a confession by the bribed doctor who falsely declared his uncle as being insane, draws his sword to force him to write to his father. “Tell him the family will make some discoveries,” he commands. “I will have him in my power to prevent his schemes and dictate my will to him.” As both men leave, Mrs Drave and Augusta are surprised by the visit of a bewildered man asking for charity, Uncle Bach released from bondage, as Ludwig discovers. The chancellor arrives as Mrs Drave embraces her husband, freed from prison by a warrant on his part, extorted by Ludwig’s threats. But the chancellor has discovered Uncle Bach’s whereabouts and promises to send Drave back to prison. However, Phillip arrives to say that he has convinced the minister to suspend all activities on the basis of written proof of the chancellor’s crimes. Keen on forwarding his daughter’s happiness, Drave encourages Ludwig to persevere as her suitor. =August von Kotzebue= [[File:August von Kotzebue3.jpg|thumb|August von Kotzebue showed how an estranged couple come together at the end because of their children. Engraving of the author by an unknown artist, 1790]] August von Kotzebue (1761-1819) is one of the originators of melodrama, achieving distinction with "Menschenhass und Reue" (The stranger, more precisely Misanthropy and repentance, 1789). “What a curious play this is, and how it triumphs over law and custom, and the actors, and the audience, and the critics, and the writer himself! For he was but ill suited to the noble task of teaching a humanity above the letter. He has made a young woman quit, for a villain, not only her husband, but her children too. The villain bribed her with promises of having more money to spend, and she is persuaded to be unfaithful by the paltry device of a forged letter, which pretends to convict her husband of infidelity. Her husband too, by her own confession, was far superior to the seducer in every respect. In short, it was out of vanity and mortification that she became faithless; out of narrowness of heart, and not any overflowing of it; out of antipathy to the man she had just been loving, and not out of sympathy with him she proposed to love: and yet notwithstanding this most gross of all the cases of infidelity, her penitence restores her in all our eyes” (Hunt, 1894 edition pp 175). “Accounts of its public reception [to the play] almost aways focus on the favorable impression made by the final scene of reconciliation, clearly indicating that the key ingredient of the play was forgiveness and redemption, enduring features of New Testament Christian theology and ecclesiastical practice” (Stites, 2002 p 35). Audiences “perceived the complicated plots with separated lovers and families, fantastic familial interrelationships, and the pervasive, all-powerful manipulative factor of chance as a pleasant escalation of dramatic tension. In Kotzebue’s work, they saw their own views vindicated” (Riley, 1986b p 1089). “The audience is moved the inclusion of instances of repentance, magnanimity, and forgiveness. The characters are placed in a seemingly hopeless situation, but the apparent catastrophe is transfigured into personal happiness” (Larkin, 1990 p 149). Carlyle was indiscriminately critical of Kotzebue because of his popularity: "Kotzebue, lifted up on the hollow balloon of popular applause, thought wings had been given him that he might ascend to the Immortals: gay he rose, soaring, sailing, as with supreme dominion; but in the rarer azure deep, his windbag burst asunder, or the arrows of keen archers pierced it" (1889 edition p 48). "The first period of Kotzebue's writing (during the years 1785 until roughly 1798) is marked by a conservative defence of the sentimental and gentile nobility as a spiritual force in social affairs. Like the Stürmer und Dränger, he is severely critical of the narrow bourgeois world, and admires the aristocracy for their tone and bearing...Although Kotzebue increasingly attacked the nobility, he treats deficiencies among members of the bourgeoisie in a similar manner. Bittermann, the agent of the count in Misanthropy and Repentance, might serve as an example. Kotzebue, politically speaking, took no class stand. He was satisfied with the existence of class differences, as long as they were flexible enough. He criticized unworthy actions by all classes and sought an adjustment of privilege and responsibility commensurate with the character and abilities of the individual" (Kahn, 1952 pp 635-637). =="Misanthropy and repentance"== [[File:AugustWilhelmIfflandBittermann.jpg|thumb|1932 drawing of Solomon played by August Wilhelm Iffland (1759-1814) at Goethe-Nationalmuseum]] Time: 1780s. Place: Germany. Text at http://www.gutenberg.org/ebooks/20217 http://catalog.hathitrust.org/Record/100592978 https://archive.org/details/germantheatre03thomgoog A poor old man, Tobias, is an object of charity for Mrs Haller, manager in the house of Count Wintersen. One day, a man living in the premises of Wintersen's grounds, known only as "the stranger" beholds Tobias pray. The stranger's servant, Francis, says fo this activity: "Hope is the nurse of life." "And her cradle is the grave," the stranger retorts. He gives Tobias money to buy his son's release from the army. "Yes, I must envy those who, with the will, have the power to do good," Francis reflects. When the count returns to his house, he sees someone unfamiliar to him and asks Solomon, his steward: "Who is that ape in the corner?" Solomon answers: "Ape!— Oh! that is— with respect to your excellency be it spoken— the son of my body, by name, Peter." As the count, Peter, and his little son walk on the grounds, a bridge breaks under the son, plunging him into the river, but he is saved from drowning by the stranger, who refuses to be thanked. Later, the count's brother, Baron Steinfort, confesses to his sister that he loves Mrs Haller. Curious to know more of her past, the countess interrogates Mrs Haller, who asks whether she had ever heard of Countess Waldbourg. The countess replies: "I think I heard, at the neighboring court, of such a creature. She plunged an honorable husband into misery. She ran away with a villain." That is indeed Mrs Haller. When the baron comes over to the stranger's house to thank him for the rescue, he discovers that the stranger is Charles, an old dear friend of his. Charles lived happily with his wife for awhile, then a false friend stole her away from him. Since then, he has lived alone, separated from her and two children. Steinfort invites him to supper, but more importantly avers: "You shall sue on my behalf to Mrs. Haller. You have the talent of persuasion." But as soon as Mrs Haller sees the stranger, she shrieks and swoons. The baron proposes "to reunite two lovely souls". To facilitate his marriage with another woman, Mrs Haller offers him a written acknowledgment of her guilt, but he tears up the paper. On his side, he offers her money, which she also declines. She refuses jewels as well as other objects of many painful memories. As they start to walk away separately, she encounters her son and he his daughter. The estranged husband and wife look back at each other, approach, and embrace. {{BookCat}} m1x289tuxyaaswai0519njzwuo9b6xy International Postage Meter Stamp Catalog/Luxembourg 0 260525 4656610 4630037 2026-08-07T14:33:14Z Л.П. Джепко 98013 /* {{font|color=blue|GROUP E: Open, horizontal frank, without outer frame}} */ typo 4656610 wikitext text/x-wiki =Luxembourg= {{font/top|size=3}} * The first meter was installed in 1925. * All stamps are inscribed “LUXEMBOURG” or, during German occupation in 1940s, “LUXEMBURG”. * The stamps are grouped by appearance and function: :: A - horizontal rectangle with truncated corners :: B - rectangle with simulated perforation outer frame :: C - rectangle with ornamental, Greek style outer border :: D - rectangle with straight outer frame :: E - open, horizontal frank, without outer frame :: PO - special stamps generated only by post office machines :: OO - special stamps generated only for official government mail {{font/end}} ---- <br> ---- =={{font|color=blue|GROUP A: Horizontal rectangle with truncated corners}}== <br> ---- ===={{font|color=blue|Sub-group AA: Inscribed “LUXEMBOURG”}}==== ---- <br> [[File: Luxembourg stamp type AA1.jpg|left|550px]] '''AA1. Hasler “D106” ''' (FV-8), 1925. : Frank with inner box around value figures. : Value figures large, outlined. : M#s 101-107. : TM: nil : Values: [[File:MeterCat 5 spaces.jpg|12px]] 5c, 10, 25, 35, 50, 75, 1 fr, 1.25, 1.50, 1.75, 2, 3, 5 [[File:MeterCat 5 spaces.jpg|12px]][$10] : Values: [[File:MeterCat 5 spaces.jpg|12px]] 20c, 30, 40, 60, 70, 4 fr, 10 [[File:MeterCat 5 spaces.jpg|12px]][$20] [[File: Luxembourg stamp type AA2.jpg|left|220px]] '''AA2. Timbrographe''' (LV-9), 1929. : Nearly identical to Type AA1 but M# 201 only. : TM: nil : Values: [[File:MeterCat 5 spaces.jpg|12px]] 40c, 50, 70, 75, 1 fr [[File:MeterCat 5 spaces.jpg|12px]][$100] : Values: [[File:MeterCat 5 spaces.jpg|12px]] 5c, 10, 20, 30, 1.25 fr, 1.75, 2, 3 [[File:MeterCat 5 spaces.jpg|12px]][$200] [[File: Luxembourg stamp type AA3.jpg|left|440px]] <br> '''AA3. Hasler “F22” ''' (MV), 1928. : Frank is wider than Types AA1 and 2, and the inner box around the value figures is not as tall. : M#s 101 up. : With “fr.” at left and “c.” at right of value figures. : TM: DC, SC or nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0oo [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]oo [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]0oo [[File: Luxembourg stamp type AA4.jpg|left|560px]] '''AA4. Hasler “F22” ''' (MV). : Frank is large like Type AA3 but corners are rounded rather than diagonal. : With “FRS” at left and “CTS.” at right of value figures. : M# 113 seen. : TM: nil with date only : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0oo [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]oo [[File: Luxembourg stamp type AA5A.jpg|left|390px]] [[File: Luxembourg stamp type AA5B.jpg|left|420px]] <br><br> '''AA5. Hasler “F88” ''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$20] : As Type AA3 but without inner box around value figures. : Frank variable in size. : Spacing variable between TM and frank from very wide to very narrow. ::::::::::::::::::::: '''A'''. “fr.” at left and “c.” at right of value figures ::::::::::::::::::::: '''B'''. “Fr.” at left and “c” at right of value figures : TM: DC, SC, or nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ✳0oo [[File:MeterCat 5 spaces.jpg|12px]] ✳00oo [[File:MeterCat 5 spaces.jpg|12px]]◇0oo (121) ::::::::::::::::::::: '''a'''. Meter number at left of TM as well as at bottom of frank (137) [[File: Luxembourg stamp type AA6.jpg|left|375px]] <br> '''AA6. Hasler “F66” ''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$10] : Very similar to Type AA5 but the value figures are not as tall, 4.5 to 5 mm compared to 6 mm. : M#s 139 and 140 seen. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ✳00oo [[File: Luxembourg stamp type AA7.jpg|left|240px]] '''AA7. Francotyp "A" ''' (MV), 1933 or earlier. [[File:MeterCat 5 spaces.jpg|12px]][Quite scarce, value unknown] : Similar to Type AA3 but meter number in 300 series. : The value figures are angular. : One seen, M# 301, without town mark. : V/F: [[File:MeterCat 5 spaces.jpg|12px]] 000 (or possibly [[File:MeterCat 5-point asterisk.jpg|12px]]00) ---- ===={{font|color=blue|Sub-group AB: Inscribed “LUXEMBURG” (German occupation stamps)}}==== ---- <br> [[File: Luxembourg stamp type AB1.jpg|left|230px]] '''AB1. Hasler “D106” ''' (FV-6), 1941. [[File:MeterCat 5 spaces.jpg|12px]][$25] : Provisional design. : As Type AA1, but country name modified by insertion of large “U” in place of “OU”. : M# 101 only. : TM: nil : Values: [[File:MeterCat 5 spaces.jpg|12px]] 1, 3, 8, 10, 12, 25 [[File: Luxembourg stamp type AB2A.jpg|left|280px]] '''AB2. Hasler “D106” ''' (FV-6). : Value figures with large “RM.” suffix inside large rectangle. ::::::::::::::: '''A'''. Meter number 102 [[File:MeterCat 5 spaces.jpg|12px]][$15] ::::::::::::::: '''B'''. Meter number 103 or 105 [[File:MeterCat 5 spaces.jpg|12px]][$25] : TM: nil : Values: [[File:MeterCat 5 spaces.jpg|12px]] 0,02,[[File:MeterCat 5 spaces.jpg|10px]]0,03,[[File:MeterCat 5 spaces.jpg|10px]]0,04,[[File:MeterCat 5 spaces.jpg|10px]]0,06,[[File:MeterCat 5 spaces.jpg|10px]]0,08,[[File:MeterCat 5 spaces.jpg|10px]]0,12,[[File:MeterCat 5 spaces.jpg|10px]]0,25 '''NOTES''': * Value 0,20 may also have been used but this is not verified. * Meter 106 exists but is known only as a proof. Values: 0,05, 0,06, 0,08, 0,24, 0,30, 0,40 {{font|color=green|size=3|'''NOTE''': Meter Type AA2 (Timbrographe M# 201) was modified for use under German occupation and equipped with values 0,03, 0,06, 0,08, 0,12, 0,15, 0,25, 0,30, and 0,40. No examples have been reported, and the exact appearance of the stamp is uncertain.}} [[File: Luxembourg stamp type AB3A.jpg|left|320px]] [[File: Luxembourg stamp type AB3B.jpg|left|330px]] <br><br> '''AB3. Hasler “F22” ''' (MV), 1928. [[File:MeterCat 5 spaces.jpg|12px]][$25] : As Type AA3. : M#s 106, 108-113 reported. ::::::::::::::::: '''A'''. “Rm” at left and “Pf.” at right of value figures ::::::::::::::::: '''B'''. “RM.” at left and “Rpf.” at right of value figures : TM: nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]oo [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]0oo ::::::::::::::::: '''a'''. With date but not town mark at far left (113) [[File: Luxembourg stamp type AB4A.jpg|left|400px]] [[File: Luxembourg stamp type AB4C.jpg|left|290px]] <br><br> '''AB4. Hasler “F88” ''' (MV). : As Type AA4. :::::::::::::::::::: '''A'''. With large “RM.” left of value figures (118) [[File:MeterCat 5 spaces.jpg|12px]][$25] :::::::::::::::::::: '''B'''. With “RM.” at left and “Pf.” at right (112) [[File:MeterCat 5 spaces.jpg|12px]][Rare, value unknown] :::::::::::::::::::: '''C'''. Value figures alone at center (115) [[File:MeterCat 5 spaces.jpg|12px]][$15] :::::::::::::::::: TM: SC or nil :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]] ✳00 [[File:MeterCat 5 spaces.jpg|12px]] ✳0oo ---- =={{font|color=blue|GROUP B: Rectangle with simulated perforation outer frame}}== <br> ---- ---- ===={{font|color=blue|Sub-group BA: Frank with crown and coat of arms in center}}==== ---- <br> [[File: Luxembourg stamp type BA1.jpg|left|520px]] '''BA1. Hasler “F22” ''' (MV), 1925. [[File:MeterCat 5 spaces.jpg|12px]][$150] : Nearly square frank with crown and coat of arms inside oval with “LUXEMBOURG” curved around them. : Value figures at bottom between “Fr.” and “Cts”. : M# 113 below frank. : TM: BIC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]00 ---- ===={{font|color=blue|Sub-group BB: Horizontal frank with inner box, inscribed “LUXEMBOURG”}}==== ---- <br> [[File: Luxembourg stamp type BB1.jpg|left|585px]] '''BB1. Francotyp “C” ''' (MV). : Horizontal frank with large inner box around value figures and straight ornamental lines at sides and bottom between outer frame and inner box. : With or without S# high between TM and frank. : M# 301 up, with or without “F” prefix, breaks ornamental lines at bottom center. : TM: SC, DC, nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]00 (O) [[File:MeterCat 5 spaces.jpg|12px]]000 (A,G) [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]000 (A) [[File:MeterCat 5 spaces.jpg|12px]] ◆000 (G) [[File:MeterCat 5 spaces.jpg|12px]] ◆0.00 (G) ::::::::::::::::::::::::::::: '''a'''. Date boxed ::::::::::::::::::::::::::::: '''b'''. Meter number boxed [[File: Luxembourg stamp type BB2A.jpg|left|385px]] [[File: Luxembourg stamp type BB2B.jpg|left|445px]] <br><br> '''BB2. Francotyp “Cc/Ccm” ''' (MV). : Similar to Type BB1 but narrow to very narrow spacing between TM and frank. : Date figures with stops after D and before Y. : M# with or without “F” prefix. :::::::::::::::::::::: '''A'''. M# unboxed :::::::::::::::::::::: '''B'''. M# boxed : TM: SC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ◆0.00 [[File:MeterCat 5 spaces.jpg|12px]] ◆00.00 [[File: Luxembourg stamp type BB3.jpg|left|370px]] <br> '''BB3. Francotyp “A9000” ''' (MV). : Very similar to Type BB2 but date figures widely spaced with stops after D and M. : M# with “F” prefix or without prefix, unboxed. : TM: SC, BIC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ◆0.00 [[File:MeterCat 5 spaces.jpg|12px]] ◆0,00 [[File:MeterCat 5 spaces.jpg|12px]] ◆00.00 [[File:MeterCat 5 spaces.jpg|12px]] ◆000.00 (''M# 370 only'') ---- ---- ===={{font|color=blue|Sub-group BC: Horizontal frank with inner box, inscribed “LUXEMBURG”}}==== ---- ---- <br> [[File: Luxembourg stamp type BC1.jpg|left|575px]] <br> '''BC1. Francotyp “C” ''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$50] : As Type BB1 but with "LUXEMBURG". : With or without impression counter number high between TM and frank. : M#s 301-312. : TM: SC, DC, nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]00 (O) [[File:MeterCat 5 spaces.jpg|12px]]000 (A,G) [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]000 (A) [[File:MeterCat 5 spaces.jpg|12px]] ◆000 (G) ---- ===={{font|color=blue|Sub-group BD: Country name in curved ribbon at top}}==== ---- <br> [[File: Luxembourg stamp type BD1.jpg|left|375px]] <br> '''BD1. Universal “MultiValue" ''' (MV), 1952. [[File:MeterCat 5 spaces.jpg|12px]][$25] : Upright frank with doubled straight inner frame lines. : M# 501 with “U” prefix in box at bottom center. : “FR | CTS” below value figures. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point asterisk.jpg|12px]]0oo [[File: Luxembourg stamp type BD2.jpg|left|380px]] <br> '''BD2. Universal “Automax” ''' (MV), 1963? [[File:MeterCat 5 spaces.jpg|12px]][$20] : As Type BD1 but with “FRANCS” below value figures. : M# 500 up without prefix. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]=00.oo [[File:MeterCat 5 spaces.jpg|12px]]=00o o ---- ---- ===={{font|color=blue|Sub-group BE: Country name straight at top}}==== ---- <br> [[File: Luxembourg stamp type BE1.jpg|left|380px]] '''BE1. Frama “M/E” ''' (MV). : Square frank with straight inner frame line and large box around value figures. : M# 200 up at bottom. : Value figures thick. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00.00 [[File:MeterCat 5 spaces.jpg|12px]]000.00 [[File: Luxembourg stamp type BE2.jpg|left|370px]] '''BE2. Frama “M/E” ''' (MV). : Horizontal frank without inner box around value figures. : M#s in 200 and 2000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]000.00 [[File: Luxembourg stamp type BE3.jpg|left|350px]] <br> '''BE3. Frama “EPS3000” ''' (MV). : Similar to Type BE2 but the value figures are much smaller. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File: Luxembourg stamp type BE4.jpg|left|330px]] <br> '''BE4. Frama “Sensonic” ''' (digital). : Similar to Type BE2 but the value figures are taller, not as thick, and more closely spaced. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 ---- =={{font|color=blue|GROUP C: Rectangle with ornamental, Greek style outer border}}== <br> [[File: Luxembourg stamp type C1A.jpg|left|525px]] [[File: Luxembourg stamp type C1B.jpg|right|330px]] [[File: Luxembourg stamp type C1C.jpg|right|330px]] '''C1. Postalia''' (MV), 1952. : Country name unframed at top, Greek-style border along sides and bottom with inner box around value figures. : Frank width variable from 26 to 27+ mm. : M# in 400 and 1400 series below frank. : Value figures narrow. :: '''A'''. Wide spacing between TM and frank :: '''B'''. Narrow spacing between TM and frank :: '''C'''. As '''B''' but the meter number is above the bottom frame line rather than below : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]000 [[File:MeterCat 5 spaces.jpg|12px]]000.– [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:MeterCat 5 spaces.jpg|12px]]00.00 [[File:MeterCat 5 spaces.jpg|12px]]00,00 [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File:MeterCat 5 spaces.jpg|12px]]000.00 [[File:MeterCat 5 spaces.jpg|12px]]000,00 :: '''a'''. Value figures with “FR” prefix [[File: Luxembourg stamp type C2.jpg|left|370px]] '''C2. Francotyp-Postalia “EFS” ''' (MV). : Very similar to Type C1 but M# breaks bottom frame line, and value figures are slightly taller and more widely spaced. : Spacing between TM and frank ~15-16 mm. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File: Luxembourg stamp type C2point1.jpg|left|365px]] <br> '''C2.1. Francotyp-Postalia “MS5/WK4” ''' (MV). : As Type C2 but frank is wider than tall. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File: Luxembourg stamp type C3.jpg|left|330px]] '''C3. Satas “Rotary” ''' (MV). : Frank smaller than Types C1 and C2 with M# above lower border inside value box. : Date figures tall or short. : M# in 700 up. : TM: SC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00.oo [[File:MeterCat 5 spaces.jpg|12px]] ★0.oo [[File:MeterCat 5 spaces.jpg|12px]] ★00.oo [[File: Luxembourg stamp type C4.jpg|left|310px]] <br> '''C4. Francotyp-Postalia “T1000” ''' (digital). : Frank quite similar to Type C2 but with narrower spacing and digital value figures. : M# in 40000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File: Luxembourg stamp type C5.jpg|left|390px]] '''C5. Neopost “Electronic” ''' (MV). : Frank wider than tall. : M# breaks bottom frame line. : M# in 80000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=4|≋}}000 [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=4|≋}}000.– [[File: Luxembourg stamp type C6A.jpg|left|320px]] '''C6. Neopost “SM24/SM26” ''' (digital). : Very similar to Type C5 but spacing between TM and frank is much narrower. : The value figures are more closely spaced, and the date figures are shorter. : M# in 80000 series. : Meter number small. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] {{font|size=4|≋}}0000 [[File: Luxembourg stamp type C7.jpg|left|320px]] [[File: Luxembourg stamp type C7aa.jpg|right|320px]] '''C7. Neopost "IJ" ''' series? (digital). : As Type C6 but the date and value figures are closer to the top rather than centered. : The meter number is large. : M# in 81000 and 84000 series seen. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 :::::::::::::::: '''a'''. Date figures lowered, closer to the bottom of the TM rather than the top [[File: Luxembourg stamp type C8.jpg|left|320px]] '''C8. Neopost ''' unidentified model (digital). : As Types C6 and C7 but the date and value figures are close to the bottom. : The value figures are more rounded than with Types C6 and C7. : M# in 87000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File: Luxembourg stamp type C9.jpg|left|320px]] <br> '''C9. Neopost ''' unidentified model, possibly SM-26 (digital). : As Type C7 but with "P&TLUXEMBOURG" at top. : M# in 85000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File: Luxembourg stamp type C10.jpg|left|340px]] '''C10. Neopost ''' unidentified model, possibly IJ-25, IJ-65 (digital). : As Type C9 but value figures are more oval. : M# in 86000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 '''NOTE''' that the lower portion of this image is distorted and not typical. ---- =={{font|color=blue|GROUP D: Rectangle with straight outer frame}}== ===={{font|color=blue|size=3|Sub-group DA: Frank completely contained within the frame}}==== {{font/top|color=blue|size=3}} * Country identification "LUXEMBOURG" {{font/end}} <br> ---- <br> [[File: Luxembourg stamp type D1.jpg|left|390px]] :::::::::::::::::: '''DA1. Safag ''' (MV), 1948. [[File:MeterCat 5 spaces.jpg|12px]][$20] :::::::::::::::::: Large horizontal rectangle with country name underlined at top and no other contents beyond the value figures. :::::::::::::::::: M# 200 up below frank. :::::::::::::::::: TM: BIC or nil :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]000 [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File: Luxembourg stamp type D2.jpg|left|380px]] :::::::::::::::::: '''DA2. Hasler “Mailmaster” ''' (MV), 1980. :::::::::::::::::: Smaller than Type DA1 and the country name is not underlined. :::::::::::::::::: The meter number is centered inside Greek style ornaments at bottom. :::::::::::::::::: M# in 100 and 1000 series. :::::::::::::::::: With "F" preceding the value figures. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File:MeterCat 5 spaces.jpg|12px]]000.00 ::::::::::::::::::: '''a'''. Without "F" preceding the value figures [[File: Luxembourg stamp type D3.jpg|left|340px]] :::::::::::::::::: '''DA3. Secap''' (MV), 1991. :::::::::::::::::: Small upright frank with breaks in centers of both sides. :::::::::::::::::: M# in 600 and 6000 series at bottom. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]000.– [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File: Luxembourg stamp type D4.jpg|left|300px]] :::::::::::::::::: '''DA4. Secap''' (digital). :::::::::::::::::: Frank similar to Type DA3 but with space above country name. :::::::::::::::::: Value figures fairly large :::::::::::::::::: TM: rectangle :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:Luxembourg Type DA5.jpg|285px|left]] :::::::::::::::::: '''DA5. Frama''' (digital). :::::::::::::::::: Large horizontal rectangle with country name at top but without underline. :::::::::::::::::: M# in 2000 series. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 ---- ===={{font|color=blue|size=3|Sub-group DB: Country identification above and outside the frame}}==== {{font/top|color=blue|size=3}} * Country identification "'''{{font|size=5|P}}OST'''LUXEMBOURG" {{font/end}} ---- <br> [[File: Luxembourg stamp type D5.jpg|left|320px]] :::::::::::::::::: '''DB1. Neopost''' (digital). :::::::::::::::::: Value figures high in the box, above the level of the date figures. :::::::::::::::::: M# breaks the bottom frame line. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File: Luxembourg stamp type D6.jpg|left|320px]] :::::::::::::::::: '''DB2. Frama''' (digital). :::::::::::::::::: Frank wider than with Type DB1. :::::::::::::::::: The value figures are larger than in Type DB1 and are in line with the date figures. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File:Luxembourg Type DB3.jpg|302px|left]] :::::::::::::::::: '''DB3. ?''' (digital). :::::::::::::::::: The value figures are larger than in Types DB1 and DB2 and are in line with the date figures. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 ---- =={{font|color=blue|GROUP E: Open, horizontal frank, without outer frame}}== <br> [[File: Luxembourg stamp type E1A.jpg|left|375px]] [[File: Luxembourg stamp type E1B.jpg|left|355px]] '''E1. Pitney Bowes-GB “5000” '''series (MV). : Country name across top. : “POSTES” above value box. : Crown and coat of arms between TM and value box. : Date figures raised in relation to value figures. : Curled ornament at left and top right of TM. : M# with “PB” or “P.B.” prefix below coat of arms. ::::::::::::::::::: '''A'''. Coat of arms capped with wide crown ::::::::::::::::::: '''B'''. Smaller coat of arms capped with simpler crown narrow at bottom ::::::::::::::::: TM: DC ::::::::::::::::: V/F: {{space|4}} ≋00 {{font|size=1|■}} {{space|4}} ≋00 o {{space|4}} ≋00o{{font|size=1|■}} {{space|4}} ≋00'''.'''o{{font|size=1|■}} {{space|4}} ≋00'''.'''oo <br><br><br><br> [[File: Luxembourg stamp type E2.jpg|left|360px]] '''E2. Pitney Bowes-GB “5000” ''' (MV). : As Type E1 but without crown and coat of arms. : M# with “P.B.” prefix. : TM: DC : V/F: {{space|4}} ≋00 o {{space|4}} 00'''.'''oo {{space|4}} ≋00'''.'''oo <br><br><br> [[File: Luxembourg stamp Type E2.1.jpg|left|280px]] '''E2.1. Pitney Bowes “RF” or "RT"''' (MV). {{space|4}}[''probably very rare''] : Similar to Types E1 and E2 but much smaller, with inner frame lines at top, left and bottom. : Crown at left of LUXEMBOURG. : M# with “P.B.” prefix breaks bottom frame line. : Single circle town mark very close to frank. ::::::::::::: V/F: {{space|4}} ≋00'''.'''oo <br><br> [[File: Luxembourg stamp type E3A.jpg|left|360px]] [[File: Luxembourg stamp type E3B.jpg|left|365px]] '''E3. Pitney Bowes-GB “6900” ''' (MV). : Very similar to Type E2.1 but the date and value figures are on the same level. : “Fr.” is closer to the left frame line than with Type E2.1. : M# with “P.B.” prefix. :::::::::::::::::: '''A'''. Low crown :::::::::::::::::: '''B'''. Taller crown narrow at bottom : Double circle town mark 10 to 12mm away from frank. : V/F: {{space|4}} ≋00 {{space|4}} ≋0'''.'''o0 :::::::::::::::::: '''a'''. Value figures without "Fr" prefix. <br><br><br><br> [[File: Luxembourg stamp type E4.jpg|left|395px]] '''E4. Pitney Bowes-GB “6600” ''' (MV). : Similar to Type E3B but taller crown with larger frank. : Large “F” breaks left frame line. : M# with “PB” prefix. : TM: DC : V/F: {{space|4}} 000 {{space|4}} ≋00'''.'''00 <br><br><br> [[File: Luxembourg stamp type E5.jpg|left|370px]] '''E5. Pitney Bowes-GB “6900” ''' (MV). : Frank similar to Type E1 but date and value figures on same level, and the value box is much larger. : “–POSTES–” below value box. : M# with “PBE” prefix. : TM: DC : V/F: {{space|4}} ≋00'''.'''0 0 <br><br> [[File: Luxembourg stamp type E6.jpg|left|375px]] '''E6. Pitney Bowes-GB “6900” ''' (MV). : Similar to Type E5 but without inner frame lines around value figures. : The crown and coat of arms are larger, and the TM does not have curled ornaments. : A frame line has been added across the bottom, and a line (from the edge of the die?) sometimes appears along the top. : M# with “PB” prefix. : TM: DC : V/F: {{space|4}} ≋00'''.'''0 <br><br> [[File: Luxembourg stamp type E7.jpg|left|390px]] '''E7. Pitney Bowes “A/B900” ''' (MV). : Similar to Type E5 but lower and wider. : M# with “PB” prefix. : TM: DC : V/F: {{space|4}} ≋00 {{space|4}} ≋0000 {{space|4}} ≋000'''.'''0 o <br><br><br> [[File: Luxembourg stamp type E7point1.jpg|left|380px]] '''E7.1. Pitney Bowes “Paragon” ''' (MV). : Similar to Type E4 but larger frank with smaller value figures. : Narrower spacing that with Type E4. : Without "F" preceding the value figures. : M# in 50000 series with "PB" prefix breaks the bottom frame lines. : TM: DC : V/F: {{space|4}} ≋0000 <br><br> [[File: Luxembourg stamp type E8.jpg|left|380px]] '''E8. Pitney Bowes “EasyMail” ''' (digital). : “POSTES” centered below country name at top. : Large crown over value figures at left. : M# with “PB” prefix and date at right. : Various numbers at far left below curled ornaments. : TM: Linear across bottom : V/F: {{space|4}} ≋0000 <br><br> [[File: Luxembourg stamp type E9.jpg|left|340px]] '''E9. Pitney Bowes '''(digital), 2008. : Similar to Tye E8 but without crown and ornaments at upper left. : Below the value figures are a 7-digit code and the town name. : M# with "PB" prefix. : TM: SL : V/F: {{space|4}} 00000 <br><br><br><br> ---- =={{font|color=blue|GROUP PO: Special stamps generated only by post office machines}}== <br> [[File: Luxembourg stamp type PO1.jpg|left|325px]] '''PO1. Satas “P” ''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$20] : Small upright frank with single line, simulated perforation border broken at center of sides. : Spacing between TM and frank ~15 mm. : Identification letter at bottoms of TM and frank. : Hour figure between TM and frank. : TM: SC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ★000 [[File: Luxembourg stamp type PO2.jpg|left|270px]] '''PO2. Camp''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$20] : Frank very similar to Type PO1 but with “POSTES” over identification number at bottom. : Narrow spacing between TM and frank. : TM: SC with ID letter at bottom : V/F: [[File:MeterCat 5 spaces.jpg|12px]]000oo [[File: Luxembourg stamp type PO3.jpg|left|365px]] '''PO3. Frama''' (digital). : Horizontal frank with simulated perforation border around the right half and straight line border at top and bottom of the left half. : At left are the town and postal codes in panels at top and bottom. : At right are the country name and identification number at top and bottom. : Identification number with "P" prefix. : Date and value figures across center. : V/F: [[File:MeterCat 5 spaces.jpg|12px]]000.00 [[File: Luxembourg stamp type PO4.jpg|left|410px]] '''PO4. Escher Group "Riposte" ''' (digital), 2005. : Rectangular value box containing "PORT PAYE" at the top. : Value box with country name above the box and "POSTES" below. : Large single circle TM contains two lines of text through the center, the upper line a series of number codes and the lower line the date and time. [[File: Luxembourg stamp type PO4aa.jpg|right|410px]] : Printed in black on self-adhesive label with yellow "P&T LUXEMBOURG" underprint. : V/F: [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=1|■ ■ ■ }}0.00€ :: '''a'''. With underprint vertical, reading up, rather than horizontal <br><br><br> [[File: Luxembourg stamp type PO5p1.jpg|left|400px]] <br> '''PO5.1'''. probably '''Escher Group''' (digital), 2014 or earlier. : Similar to Type PO4 but the letters in the country name and "PORT PAYE" are heavier. : The post office name is straight rather than curved at the top. : Printed in black on self-adhesive label with underprint of yellow "LUXEMBOURG POSTES" in four lines reading up along the right side. The right-most line has "POSTES" in blue-green. : V/F very small: [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=1|<sup>■ ■ ■</sup> }}0.00 € [[File: Luxembourg stamp type PO6.jpg|left|408px]] [[File: Luxemburg stamp type PO5.jpg|left|280px]] <br> '''PO5.2'''. probably '''Escher Group''' (digital). : Similar to Type PO5.1 but the value box, town mark circle, and inscriptions are all much smaller. : Printed in black on self-adhesive label. :::::::::::::::::::: '''A'''. Label with underprint of yellow "LUXEMBOURG POSTES" in four lines reading up along the right side. The right-most line has "POSTES" in blue-green. :::::::::::::::::::: '''B'''. Label with light gray underprint showing a quarter moon circling "'''POST''' LUXEMBOURG". ::::::::::::::::::: V/F very small: [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=1|<sup>■ ■ ■</sup> }}0.00 € ---- =={{font|color=blue|GROUP PD: Stamp used for collecting Postage Due}}== <br> [[File: Luxembourg stamp type PD1.jpg|left|350px]] <br> '''PD1. Postalia''' (MV). : Simple horizontal rectangle broken at top right by "LUXEMBOURG". : At center is a large "T" filled with hatch lines. : The date is at left, and the value figures are at right. : Without town mark. : V/F: [[File:MeterCat 5 spaces.jpg|12px]] 000 ---- =={{font|color=blue|GROUP OO: Special stamps generated only for official government mail}}== <br> [[File: Luxembourg stamp type OO1.jpg|left|380px]] '''OO1. Safag''' (MV), 1947. : Horizontal frank without complete outer border. : Country name underlined at top, Greek style border at bottom, crown and coat of arms at both sides. : M# and department name below frank. :::::::::::::::::::: '''A'''. Department name “GOUVERNEMENT” (200, 205, 207 seen) :::::::::::::::::::: '''B'''. “CHEMINS DE FER” (201 seen) [[File:MeterCat 5 spaces.jpg|12px]][$20] :::::::::::::::::::: '''C'''. “ARMEE” (203 seen) [[File:MeterCat 5 spaces.jpg|12px]][$20] :::::::::::::::::::: '''D'''. “S.N.H.B.M.” (204 seen) [[File:MeterCat 5 spaces.jpg|12px]][$20] :::::::::::::::::: TM: BIC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]000 [[File:MeterCat 5 spaces.jpg|12px]]0000 <br><br><br><br> ---- <br> {{center/top}}{{font/top|color=green|size=3}} '''NOTE''': During the German occupation of WW2 at least one meter with stamp of unaltered German design was used in Luxembourg. It can be identified only by "LUXEMBURG" in the town mark. Examples seem to be quite rare. {{font/end}}{{center/end}} <br> [[File: Luxembourg_German_occupation_stamp.jpg|540px]] <br><br><br><br> ---- ---- {{center|{{font|size=3|{{font|color=green|Return to main catalog}} &rArr;}} <u>[[../]]</u>}} {{center|{{font|size=3|{{font|color=green|Return to top}} &rArr;}} <u>[http://en.wikibooks.org/wiki/International_Postage_Meter_Stamp_Catalog/Luxembourg Luxembourg]</u>}} <br><br> {{BookCat}} 2f8ns9jrceyjly4fk7wg6dqs78nk765 4656614 4656610 2026-08-07T14:41:51Z Л.П. Джепко 98013 /* {{font|color=blue|GROUP E: Open, horizontal frank, without outer frame}} */ typo 4656614 wikitext text/x-wiki =Luxembourg= {{font/top|size=3}} * The first meter was installed in 1925. * All stamps are inscribed “LUXEMBOURG” or, during German occupation in 1940s, “LUXEMBURG”. * The stamps are grouped by appearance and function: :: A - horizontal rectangle with truncated corners :: B - rectangle with simulated perforation outer frame :: C - rectangle with ornamental, Greek style outer border :: D - rectangle with straight outer frame :: E - open, horizontal frank, without outer frame :: PO - special stamps generated only by post office machines :: OO - special stamps generated only for official government mail {{font/end}} ---- <br> ---- =={{font|color=blue|GROUP A: Horizontal rectangle with truncated corners}}== <br> ---- ===={{font|color=blue|Sub-group AA: Inscribed “LUXEMBOURG”}}==== ---- <br> [[File: Luxembourg stamp type AA1.jpg|left|550px]] '''AA1. Hasler “D106” ''' (FV-8), 1925. : Frank with inner box around value figures. : Value figures large, outlined. : M#s 101-107. : TM: nil : Values: [[File:MeterCat 5 spaces.jpg|12px]] 5c, 10, 25, 35, 50, 75, 1 fr, 1.25, 1.50, 1.75, 2, 3, 5 [[File:MeterCat 5 spaces.jpg|12px]][$10] : Values: [[File:MeterCat 5 spaces.jpg|12px]] 20c, 30, 40, 60, 70, 4 fr, 10 [[File:MeterCat 5 spaces.jpg|12px]][$20] [[File: Luxembourg stamp type AA2.jpg|left|220px]] '''AA2. Timbrographe''' (LV-9), 1929. : Nearly identical to Type AA1 but M# 201 only. : TM: nil : Values: [[File:MeterCat 5 spaces.jpg|12px]] 40c, 50, 70, 75, 1 fr [[File:MeterCat 5 spaces.jpg|12px]][$100] : Values: [[File:MeterCat 5 spaces.jpg|12px]] 5c, 10, 20, 30, 1.25 fr, 1.75, 2, 3 [[File:MeterCat 5 spaces.jpg|12px]][$200] [[File: Luxembourg stamp type AA3.jpg|left|440px]] <br> '''AA3. Hasler “F22” ''' (MV), 1928. : Frank is wider than Types AA1 and 2, and the inner box around the value figures is not as tall. : M#s 101 up. : With “fr.” at left and “c.” at right of value figures. : TM: DC, SC or nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0oo [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]oo [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]0oo [[File: Luxembourg stamp type AA4.jpg|left|560px]] '''AA4. Hasler “F22” ''' (MV). : Frank is large like Type AA3 but corners are rounded rather than diagonal. : With “FRS” at left and “CTS.” at right of value figures. : M# 113 seen. : TM: nil with date only : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0oo [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]oo [[File: Luxembourg stamp type AA5A.jpg|left|390px]] [[File: Luxembourg stamp type AA5B.jpg|left|420px]] <br><br> '''AA5. Hasler “F88” ''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$20] : As Type AA3 but without inner box around value figures. : Frank variable in size. : Spacing variable between TM and frank from very wide to very narrow. ::::::::::::::::::::: '''A'''. “fr.” at left and “c.” at right of value figures ::::::::::::::::::::: '''B'''. “Fr.” at left and “c” at right of value figures : TM: DC, SC, or nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ✳0oo [[File:MeterCat 5 spaces.jpg|12px]] ✳00oo [[File:MeterCat 5 spaces.jpg|12px]]◇0oo (121) ::::::::::::::::::::: '''a'''. Meter number at left of TM as well as at bottom of frank (137) [[File: Luxembourg stamp type AA6.jpg|left|375px]] <br> '''AA6. Hasler “F66” ''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$10] : Very similar to Type AA5 but the value figures are not as tall, 4.5 to 5 mm compared to 6 mm. : M#s 139 and 140 seen. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ✳00oo [[File: Luxembourg stamp type AA7.jpg|left|240px]] '''AA7. Francotyp "A" ''' (MV), 1933 or earlier. [[File:MeterCat 5 spaces.jpg|12px]][Quite scarce, value unknown] : Similar to Type AA3 but meter number in 300 series. : The value figures are angular. : One seen, M# 301, without town mark. : V/F: [[File:MeterCat 5 spaces.jpg|12px]] 000 (or possibly [[File:MeterCat 5-point asterisk.jpg|12px]]00) ---- ===={{font|color=blue|Sub-group AB: Inscribed “LUXEMBURG” (German occupation stamps)}}==== ---- <br> [[File: Luxembourg stamp type AB1.jpg|left|230px]] '''AB1. Hasler “D106” ''' (FV-6), 1941. [[File:MeterCat 5 spaces.jpg|12px]][$25] : Provisional design. : As Type AA1, but country name modified by insertion of large “U” in place of “OU”. : M# 101 only. : TM: nil : Values: [[File:MeterCat 5 spaces.jpg|12px]] 1, 3, 8, 10, 12, 25 [[File: Luxembourg stamp type AB2A.jpg|left|280px]] '''AB2. Hasler “D106” ''' (FV-6). : Value figures with large “RM.” suffix inside large rectangle. ::::::::::::::: '''A'''. Meter number 102 [[File:MeterCat 5 spaces.jpg|12px]][$15] ::::::::::::::: '''B'''. Meter number 103 or 105 [[File:MeterCat 5 spaces.jpg|12px]][$25] : TM: nil : Values: [[File:MeterCat 5 spaces.jpg|12px]] 0,02,[[File:MeterCat 5 spaces.jpg|10px]]0,03,[[File:MeterCat 5 spaces.jpg|10px]]0,04,[[File:MeterCat 5 spaces.jpg|10px]]0,06,[[File:MeterCat 5 spaces.jpg|10px]]0,08,[[File:MeterCat 5 spaces.jpg|10px]]0,12,[[File:MeterCat 5 spaces.jpg|10px]]0,25 '''NOTES''': * Value 0,20 may also have been used but this is not verified. * Meter 106 exists but is known only as a proof. Values: 0,05, 0,06, 0,08, 0,24, 0,30, 0,40 {{font|color=green|size=3|'''NOTE''': Meter Type AA2 (Timbrographe M# 201) was modified for use under German occupation and equipped with values 0,03, 0,06, 0,08, 0,12, 0,15, 0,25, 0,30, and 0,40. No examples have been reported, and the exact appearance of the stamp is uncertain.}} [[File: Luxembourg stamp type AB3A.jpg|left|320px]] [[File: Luxembourg stamp type AB3B.jpg|left|330px]] <br><br> '''AB3. Hasler “F22” ''' (MV), 1928. [[File:MeterCat 5 spaces.jpg|12px]][$25] : As Type AA3. : M#s 106, 108-113 reported. ::::::::::::::::: '''A'''. “Rm” at left and “Pf.” at right of value figures ::::::::::::::::: '''B'''. “RM.” at left and “Rpf.” at right of value figures : TM: nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]oo [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]0oo ::::::::::::::::: '''a'''. With date but not town mark at far left (113) [[File: Luxembourg stamp type AB4A.jpg|left|400px]] [[File: Luxembourg stamp type AB4C.jpg|left|290px]] <br><br> '''AB4. Hasler “F88” ''' (MV). : As Type AA4. :::::::::::::::::::: '''A'''. With large “RM.” left of value figures (118) [[File:MeterCat 5 spaces.jpg|12px]][$25] :::::::::::::::::::: '''B'''. With “RM.” at left and “Pf.” at right (112) [[File:MeterCat 5 spaces.jpg|12px]][Rare, value unknown] :::::::::::::::::::: '''C'''. Value figures alone at center (115) [[File:MeterCat 5 spaces.jpg|12px]][$15] :::::::::::::::::: TM: SC or nil :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]] ✳00 [[File:MeterCat 5 spaces.jpg|12px]] ✳0oo ---- =={{font|color=blue|GROUP B: Rectangle with simulated perforation outer frame}}== <br> ---- ---- ===={{font|color=blue|Sub-group BA: Frank with crown and coat of arms in center}}==== ---- <br> [[File: Luxembourg stamp type BA1.jpg|left|520px]] '''BA1. Hasler “F22” ''' (MV), 1925. [[File:MeterCat 5 spaces.jpg|12px]][$150] : Nearly square frank with crown and coat of arms inside oval with “LUXEMBOURG” curved around them. : Value figures at bottom between “Fr.” and “Cts”. : M# 113 below frank. : TM: BIC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]00 ---- ===={{font|color=blue|Sub-group BB: Horizontal frank with inner box, inscribed “LUXEMBOURG”}}==== ---- <br> [[File: Luxembourg stamp type BB1.jpg|left|585px]] '''BB1. Francotyp “C” ''' (MV). : Horizontal frank with large inner box around value figures and straight ornamental lines at sides and bottom between outer frame and inner box. : With or without S# high between TM and frank. : M# 301 up, with or without “F” prefix, breaks ornamental lines at bottom center. : TM: SC, DC, nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]00 (O) [[File:MeterCat 5 spaces.jpg|12px]]000 (A,G) [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]000 (A) [[File:MeterCat 5 spaces.jpg|12px]] ◆000 (G) [[File:MeterCat 5 spaces.jpg|12px]] ◆0.00 (G) ::::::::::::::::::::::::::::: '''a'''. Date boxed ::::::::::::::::::::::::::::: '''b'''. Meter number boxed [[File: Luxembourg stamp type BB2A.jpg|left|385px]] [[File: Luxembourg stamp type BB2B.jpg|left|445px]] <br><br> '''BB2. Francotyp “Cc/Ccm” ''' (MV). : Similar to Type BB1 but narrow to very narrow spacing between TM and frank. : Date figures with stops after D and before Y. : M# with or without “F” prefix. :::::::::::::::::::::: '''A'''. M# unboxed :::::::::::::::::::::: '''B'''. M# boxed : TM: SC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ◆0.00 [[File:MeterCat 5 spaces.jpg|12px]] ◆00.00 [[File: Luxembourg stamp type BB3.jpg|left|370px]] <br> '''BB3. Francotyp “A9000” ''' (MV). : Very similar to Type BB2 but date figures widely spaced with stops after D and M. : M# with “F” prefix or without prefix, unboxed. : TM: SC, BIC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ◆0.00 [[File:MeterCat 5 spaces.jpg|12px]] ◆0,00 [[File:MeterCat 5 spaces.jpg|12px]] ◆00.00 [[File:MeterCat 5 spaces.jpg|12px]] ◆000.00 (''M# 370 only'') ---- ---- ===={{font|color=blue|Sub-group BC: Horizontal frank with inner box, inscribed “LUXEMBURG”}}==== ---- ---- <br> [[File: Luxembourg stamp type BC1.jpg|left|575px]] <br> '''BC1. Francotyp “C” ''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$50] : As Type BB1 but with "LUXEMBURG". : With or without impression counter number high between TM and frank. : M#s 301-312. : TM: SC, DC, nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]00 (O) [[File:MeterCat 5 spaces.jpg|12px]]000 (A,G) [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]000 (A) [[File:MeterCat 5 spaces.jpg|12px]] ◆000 (G) ---- ===={{font|color=blue|Sub-group BD: Country name in curved ribbon at top}}==== ---- <br> [[File: Luxembourg stamp type BD1.jpg|left|375px]] <br> '''BD1. Universal “MultiValue" ''' (MV), 1952. [[File:MeterCat 5 spaces.jpg|12px]][$25] : Upright frank with doubled straight inner frame lines. : M# 501 with “U” prefix in box at bottom center. : “FR | CTS” below value figures. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point asterisk.jpg|12px]]0oo [[File: Luxembourg stamp type BD2.jpg|left|380px]] <br> '''BD2. Universal “Automax” ''' (MV), 1963? [[File:MeterCat 5 spaces.jpg|12px]][$20] : As Type BD1 but with “FRANCS” below value figures. : M# 500 up without prefix. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]=00.oo [[File:MeterCat 5 spaces.jpg|12px]]=00o o ---- ---- ===={{font|color=blue|Sub-group BE: Country name straight at top}}==== ---- <br> [[File: Luxembourg stamp type BE1.jpg|left|380px]] '''BE1. Frama “M/E” ''' (MV). : Square frank with straight inner frame line and large box around value figures. : M# 200 up at bottom. : Value figures thick. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00.00 [[File:MeterCat 5 spaces.jpg|12px]]000.00 [[File: Luxembourg stamp type BE2.jpg|left|370px]] '''BE2. Frama “M/E” ''' (MV). : Horizontal frank without inner box around value figures. : M#s in 200 and 2000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]000.00 [[File: Luxembourg stamp type BE3.jpg|left|350px]] <br> '''BE3. Frama “EPS3000” ''' (MV). : Similar to Type BE2 but the value figures are much smaller. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File: Luxembourg stamp type BE4.jpg|left|330px]] <br> '''BE4. Frama “Sensonic” ''' (digital). : Similar to Type BE2 but the value figures are taller, not as thick, and more closely spaced. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 ---- =={{font|color=blue|GROUP C: Rectangle with ornamental, Greek style outer border}}== <br> [[File: Luxembourg stamp type C1A.jpg|left|525px]] [[File: Luxembourg stamp type C1B.jpg|right|330px]] [[File: Luxembourg stamp type C1C.jpg|right|330px]] '''C1. Postalia''' (MV), 1952. : Country name unframed at top, Greek-style border along sides and bottom with inner box around value figures. : Frank width variable from 26 to 27+ mm. : M# in 400 and 1400 series below frank. : Value figures narrow. :: '''A'''. Wide spacing between TM and frank :: '''B'''. Narrow spacing between TM and frank :: '''C'''. As '''B''' but the meter number is above the bottom frame line rather than below : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]000 [[File:MeterCat 5 spaces.jpg|12px]]000.– [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:MeterCat 5 spaces.jpg|12px]]00.00 [[File:MeterCat 5 spaces.jpg|12px]]00,00 [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File:MeterCat 5 spaces.jpg|12px]]000.00 [[File:MeterCat 5 spaces.jpg|12px]]000,00 :: '''a'''. Value figures with “FR” prefix [[File: Luxembourg stamp type C2.jpg|left|370px]] '''C2. Francotyp-Postalia “EFS” ''' (MV). : Very similar to Type C1 but M# breaks bottom frame line, and value figures are slightly taller and more widely spaced. : Spacing between TM and frank ~15-16 mm. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File: Luxembourg stamp type C2point1.jpg|left|365px]] <br> '''C2.1. Francotyp-Postalia “MS5/WK4” ''' (MV). : As Type C2 but frank is wider than tall. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File: Luxembourg stamp type C3.jpg|left|330px]] '''C3. Satas “Rotary” ''' (MV). : Frank smaller than Types C1 and C2 with M# above lower border inside value box. : Date figures tall or short. : M# in 700 up. : TM: SC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00.oo [[File:MeterCat 5 spaces.jpg|12px]] ★0.oo [[File:MeterCat 5 spaces.jpg|12px]] ★00.oo [[File: Luxembourg stamp type C4.jpg|left|310px]] <br> '''C4. Francotyp-Postalia “T1000” ''' (digital). : Frank quite similar to Type C2 but with narrower spacing and digital value figures. : M# in 40000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File: Luxembourg stamp type C5.jpg|left|390px]] '''C5. Neopost “Electronic” ''' (MV). : Frank wider than tall. : M# breaks bottom frame line. : M# in 80000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=4|≋}}000 [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=4|≋}}000.– [[File: Luxembourg stamp type C6A.jpg|left|320px]] '''C6. Neopost “SM24/SM26” ''' (digital). : Very similar to Type C5 but spacing between TM and frank is much narrower. : The value figures are more closely spaced, and the date figures are shorter. : M# in 80000 series. : Meter number small. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] {{font|size=4|≋}}0000 [[File: Luxembourg stamp type C7.jpg|left|320px]] [[File: Luxembourg stamp type C7aa.jpg|right|320px]] '''C7. Neopost "IJ" ''' series? (digital). : As Type C6 but the date and value figures are closer to the top rather than centered. : The meter number is large. : M# in 81000 and 84000 series seen. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 :::::::::::::::: '''a'''. Date figures lowered, closer to the bottom of the TM rather than the top [[File: Luxembourg stamp type C8.jpg|left|320px]] '''C8. Neopost ''' unidentified model (digital). : As Types C6 and C7 but the date and value figures are close to the bottom. : The value figures are more rounded than with Types C6 and C7. : M# in 87000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File: Luxembourg stamp type C9.jpg|left|320px]] <br> '''C9. Neopost ''' unidentified model, possibly SM-26 (digital). : As Type C7 but with "P&TLUXEMBOURG" at top. : M# in 85000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File: Luxembourg stamp type C10.jpg|left|340px]] '''C10. Neopost ''' unidentified model, possibly IJ-25, IJ-65 (digital). : As Type C9 but value figures are more oval. : M# in 86000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 '''NOTE''' that the lower portion of this image is distorted and not typical. ---- =={{font|color=blue|GROUP D: Rectangle with straight outer frame}}== ===={{font|color=blue|size=3|Sub-group DA: Frank completely contained within the frame}}==== {{font/top|color=blue|size=3}} * Country identification "LUXEMBOURG" {{font/end}} <br> ---- <br> [[File: Luxembourg stamp type D1.jpg|left|390px]] :::::::::::::::::: '''DA1. Safag ''' (MV), 1948. [[File:MeterCat 5 spaces.jpg|12px]][$20] :::::::::::::::::: Large horizontal rectangle with country name underlined at top and no other contents beyond the value figures. :::::::::::::::::: M# 200 up below frank. :::::::::::::::::: TM: BIC or nil :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]000 [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File: Luxembourg stamp type D2.jpg|left|380px]] :::::::::::::::::: '''DA2. Hasler “Mailmaster” ''' (MV), 1980. :::::::::::::::::: Smaller than Type DA1 and the country name is not underlined. :::::::::::::::::: The meter number is centered inside Greek style ornaments at bottom. :::::::::::::::::: M# in 100 and 1000 series. :::::::::::::::::: With "F" preceding the value figures. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File:MeterCat 5 spaces.jpg|12px]]000.00 ::::::::::::::::::: '''a'''. Without "F" preceding the value figures [[File: Luxembourg stamp type D3.jpg|left|340px]] :::::::::::::::::: '''DA3. Secap''' (MV), 1991. :::::::::::::::::: Small upright frank with breaks in centers of both sides. :::::::::::::::::: M# in 600 and 6000 series at bottom. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]000.– [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File: Luxembourg stamp type D4.jpg|left|300px]] :::::::::::::::::: '''DA4. Secap''' (digital). :::::::::::::::::: Frank similar to Type DA3 but with space above country name. :::::::::::::::::: Value figures fairly large :::::::::::::::::: TM: rectangle :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:Luxembourg Type DA5.jpg|285px|left]] :::::::::::::::::: '''DA5. Frama''' (digital). :::::::::::::::::: Large horizontal rectangle with country name at top but without underline. :::::::::::::::::: M# in 2000 series. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 ---- ===={{font|color=blue|size=3|Sub-group DB: Country identification above and outside the frame}}==== {{font/top|color=blue|size=3}} * Country identification "'''{{font|size=5|P}}OST'''LUXEMBOURG" {{font/end}} ---- <br> [[File: Luxembourg stamp type D5.jpg|left|320px]] :::::::::::::::::: '''DB1. Neopost''' (digital). :::::::::::::::::: Value figures high in the box, above the level of the date figures. :::::::::::::::::: M# breaks the bottom frame line. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File: Luxembourg stamp type D6.jpg|left|320px]] :::::::::::::::::: '''DB2. Frama''' (digital). :::::::::::::::::: Frank wider than with Type DB1. :::::::::::::::::: The value figures are larger than in Type DB1 and are in line with the date figures. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File:Luxembourg Type DB3.jpg|302px|left]] :::::::::::::::::: '''DB3. ?''' (digital). :::::::::::::::::: The value figures are larger than in Types DB1 and DB2 and are in line with the date figures. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 ---- =={{font|color=blue|GROUP E: Open, horizontal frank, without outer frame}}== <br> [[File: Luxembourg stamp type E1A.jpg|left|375px]] [[File: Luxembourg stamp type E1B.jpg|left|355px]] '''E1. Pitney Bowes-GB “5000” '''series (MV). : Country name across top. : “POSTES” above value box. : Crown and coat of arms between TM and value box. : Date figures raised in relation to value figures. : Curled ornament at left and top right of TM. : M# with “PB” or “P.B.” prefix below coat of arms. ::::::::::::::::::: '''A'''. Coat of arms capped with wide crown ::::::::::::::::::: '''B'''. Smaller coat of arms capped with simpler crown narrow at bottom ::::::::::::::::: TM: DC ::::::::::::::::: V/F: {{space|4}} ≋00 {{font|size=1|■}} {{space|4}} ≋00 o {{space|4}} ≋00o{{font|size=1|■}} {{space|4}} ≋00'''.'''o{{font|size=1|■}} {{space|4}} ≋00'''.'''oo <br><br><br><br> [[File: Luxembourg stamp type E2.jpg|left|360px]] '''E2. Pitney Bowes-GB “5000” ''' (MV). : As Type E1 but without crown and coat of arms. : M# with “P.B.” prefix. : TM: DC : V/F: {{space|4}} ≋00 o {{space|4}} 00'''.'''oo {{space|4}} ≋00'''.'''oo <br><br><br> [[File: Luxembourg stamp Type E2.1.jpg|left|280px]] '''E2.1. Pitney Bowes “RF” or "RT"''' (MV). {{space|4}}[''probably very rare''] : Similar to Types E1 and E2 but much smaller, with inner frame lines at top, left and bottom. : Crown at left of LUXEMBOURG. : M# with “P.B.” prefix breaks bottom frame line. : Single circle town mark very close to frank. ::::::::::::: V/F: {{space|4}} ≋00'''.'''oo <br><br> [[File: Luxembourg stamp type E3A.jpg|left|360px]] [[File: Luxembourg stamp type E3B.jpg|left|365px]] '''E3. Pitney Bowes-GB “6900” ''' (MV). : Very similar to Type E2.1 but the date and value figures are on the same level. : “Fr.” is closer to the left frame line than with Type E2.1. : M# with “P.B.” prefix. :::::::::::::::::: '''A'''. Low crown :::::::::::::::::: '''B'''. Taller crown narrow at bottom : Double circle town mark 10 to 12mm away from frank. : V/F: {{space|4}} ≋00 {{space|4}} ≋0'''.'''o0 :::::::::::::::::: '''a'''. Value figures without "Fr" prefix. <br><br><br><br> [[File: Luxembourg stamp type E4.jpg|left|395px]] '''E4. Pitney Bowes-GB “6600” ''' (MV). : Similar to Type E3B but taller crown with larger frank. : Large “F” breaks left frame line. : M# with “PB” prefix. : TM: DC : V/F: {{space|4}} 000 {{space|4}} ≋00'''.'''00 <br><br><br> [[File: Luxembourg stamp type E5.jpg|left|370px]] '''E5. Pitney Bowes-GB “6900” ''' (MV). : Frank similar to Type E1 but date and value figures on same level, and the value box is much larger. : “–POSTES–” below value box. : M# with “PBE” prefix. : TM: DC : V/F: {{space|4}} ≋00'''.'''0 0 <br><br> [[File: Luxembourg stamp type E6.jpg|left|375px]] '''E6. Pitney Bowes-GB “6900” ''' (MV). : Similar to Type E5 but without inner frame lines around value figures. : The crown and coat of arms are larger, and the TM does not have curled ornaments. : A frame line has been added across the bottom, and a line (from the edge of the die?) sometimes appears along the top. : M# with “PB” prefix. : TM: DC : V/F: {{space|4}} ≋00'''.'''0 <br><br> [[File: Luxembourg stamp type E7.jpg|left|390px]] '''E7. Pitney Bowes “A/B900” ''' (MV). : Similar to Type E5 but lower and wider. : M# with “PB” prefix. : TM: DC : V/F: {{space|4}} ≋00 {{space|4}} ≋0000 {{space|4}} ≋000'''.'''0 o <br><br><br> [[File: Luxembourg stamp type E7point1.jpg|left|380px]] '''E7.1. Pitney Bowes “Paragon” ''' (MV). : Similar to Type E4 but larger frank with smaller value figures. : Narrower spacing than with Type E4. : Without "F" preceding the value figures. : M# in 50000 series with "PB" prefix breaks the bottom frame lines. : TM: DC : V/F: {{space|4}} ≋0000 <br><br> [[File: Luxembourg stamp type E8.jpg|left|380px]] '''E8. Pitney Bowes “EasyMail” ''' (digital). : “POSTES” centered below country name at top. : Large crown over value figures at left. : M# with “PB” prefix and date at right. : Various numbers at far left below curled ornaments. : TM: Linear across bottom : V/F: {{space|4}} ≋0000 <br><br> [[File: Luxembourg stamp type E9.jpg|left|340px]] '''E9. Pitney Bowes '''(digital), 2008. : Similar to Tye E8 but without crown and ornaments at upper left. : Below the value figures are a 7-digit code and the town name. : M# with "PB" prefix. : TM: SL : V/F: {{space|4}} 00000 <br><br><br><br> ---- =={{font|color=blue|GROUP PO: Special stamps generated only by post office machines}}== <br> [[File: Luxembourg stamp type PO1.jpg|left|325px]] '''PO1. Satas “P” ''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$20] : Small upright frank with single line, simulated perforation border broken at center of sides. : Spacing between TM and frank ~15 mm. : Identification letter at bottoms of TM and frank. : Hour figure between TM and frank. : TM: SC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ★000 [[File: Luxembourg stamp type PO2.jpg|left|270px]] '''PO2. Camp''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$20] : Frank very similar to Type PO1 but with “POSTES” over identification number at bottom. : Narrow spacing between TM and frank. : TM: SC with ID letter at bottom : V/F: [[File:MeterCat 5 spaces.jpg|12px]]000oo [[File: Luxembourg stamp type PO3.jpg|left|365px]] '''PO3. Frama''' (digital). : Horizontal frank with simulated perforation border around the right half and straight line border at top and bottom of the left half. : At left are the town and postal codes in panels at top and bottom. : At right are the country name and identification number at top and bottom. : Identification number with "P" prefix. : Date and value figures across center. : V/F: [[File:MeterCat 5 spaces.jpg|12px]]000.00 [[File: Luxembourg stamp type PO4.jpg|left|410px]] '''PO4. Escher Group "Riposte" ''' (digital), 2005. : Rectangular value box containing "PORT PAYE" at the top. : Value box with country name above the box and "POSTES" below. : Large single circle TM contains two lines of text through the center, the upper line a series of number codes and the lower line the date and time. [[File: Luxembourg stamp type PO4aa.jpg|right|410px]] : Printed in black on self-adhesive label with yellow "P&T LUXEMBOURG" underprint. : V/F: [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=1|■ ■ ■ }}0.00€ :: '''a'''. With underprint vertical, reading up, rather than horizontal <br><br><br> [[File: Luxembourg stamp type PO5p1.jpg|left|400px]] <br> '''PO5.1'''. probably '''Escher Group''' (digital), 2014 or earlier. : Similar to Type PO4 but the letters in the country name and "PORT PAYE" are heavier. : The post office name is straight rather than curved at the top. : Printed in black on self-adhesive label with underprint of yellow "LUXEMBOURG POSTES" in four lines reading up along the right side. The right-most line has "POSTES" in blue-green. : V/F very small: [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=1|<sup>■ ■ ■</sup> }}0.00 € [[File: Luxembourg stamp type PO6.jpg|left|408px]] [[File: Luxemburg stamp type PO5.jpg|left|280px]] <br> '''PO5.2'''. probably '''Escher Group''' (digital). : Similar to Type PO5.1 but the value box, town mark circle, and inscriptions are all much smaller. : Printed in black on self-adhesive label. :::::::::::::::::::: '''A'''. Label with underprint of yellow "LUXEMBOURG POSTES" in four lines reading up along the right side. The right-most line has "POSTES" in blue-green. :::::::::::::::::::: '''B'''. Label with light gray underprint showing a quarter moon circling "'''POST''' LUXEMBOURG". ::::::::::::::::::: V/F very small: [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=1|<sup>■ ■ ■</sup> }}0.00 € ---- =={{font|color=blue|GROUP PD: Stamp used for collecting Postage Due}}== <br> [[File: Luxembourg stamp type PD1.jpg|left|350px]] <br> '''PD1. Postalia''' (MV). : Simple horizontal rectangle broken at top right by "LUXEMBOURG". : At center is a large "T" filled with hatch lines. : The date is at left, and the value figures are at right. : Without town mark. : V/F: [[File:MeterCat 5 spaces.jpg|12px]] 000 ---- =={{font|color=blue|GROUP OO: Special stamps generated only for official government mail}}== <br> [[File: Luxembourg stamp type OO1.jpg|left|380px]] '''OO1. Safag''' (MV), 1947. : Horizontal frank without complete outer border. : Country name underlined at top, Greek style border at bottom, crown and coat of arms at both sides. : M# and department name below frank. :::::::::::::::::::: '''A'''. Department name “GOUVERNEMENT” (200, 205, 207 seen) :::::::::::::::::::: '''B'''. “CHEMINS DE FER” (201 seen) [[File:MeterCat 5 spaces.jpg|12px]][$20] :::::::::::::::::::: '''C'''. “ARMEE” (203 seen) [[File:MeterCat 5 spaces.jpg|12px]][$20] :::::::::::::::::::: '''D'''. “S.N.H.B.M.” (204 seen) [[File:MeterCat 5 spaces.jpg|12px]][$20] :::::::::::::::::: TM: BIC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]000 [[File:MeterCat 5 spaces.jpg|12px]]0000 <br><br><br><br> ---- <br> {{center/top}}{{font/top|color=green|size=3}} '''NOTE''': During the German occupation of WW2 at least one meter with stamp of unaltered German design was used in Luxembourg. It can be identified only by "LUXEMBURG" in the town mark. Examples seem to be quite rare. {{font/end}}{{center/end}} <br> [[File: Luxembourg_German_occupation_stamp.jpg|540px]] <br><br><br><br> ---- ---- {{center|{{font|size=3|{{font|color=green|Return to main catalog}} &rArr;}} <u>[[../]]</u>}} {{center|{{font|size=3|{{font|color=green|Return to top}} &rArr;}} <u>[http://en.wikibooks.org/wiki/International_Postage_Meter_Stamp_Catalog/Luxembourg Luxembourg]</u>}} <br><br> {{BookCat}} 3x4auiafb97u5hs6yq6abebt5fny8xl 4656623 4656614 2026-08-07T14:57:02Z Л.П. Джепко 98013 /* {{font|color=blue|GROUP E: Open, horizontal frank, without outer frame}} */ typo 4656623 wikitext text/x-wiki =Luxembourg= {{font/top|size=3}} * The first meter was installed in 1925. * All stamps are inscribed “LUXEMBOURG” or, during German occupation in 1940s, “LUXEMBURG”. * The stamps are grouped by appearance and function: :: A - horizontal rectangle with truncated corners :: B - rectangle with simulated perforation outer frame :: C - rectangle with ornamental, Greek style outer border :: D - rectangle with straight outer frame :: E - open, horizontal frank, without outer frame :: PO - special stamps generated only by post office machines :: OO - special stamps generated only for official government mail {{font/end}} ---- <br> ---- =={{font|color=blue|GROUP A: Horizontal rectangle with truncated corners}}== <br> ---- ===={{font|color=blue|Sub-group AA: Inscribed “LUXEMBOURG”}}==== ---- <br> [[File: Luxembourg stamp type AA1.jpg|left|550px]] '''AA1. Hasler “D106” ''' (FV-8), 1925. : Frank with inner box around value figures. : Value figures large, outlined. : M#s 101-107. : TM: nil : Values: [[File:MeterCat 5 spaces.jpg|12px]] 5c, 10, 25, 35, 50, 75, 1 fr, 1.25, 1.50, 1.75, 2, 3, 5 [[File:MeterCat 5 spaces.jpg|12px]][$10] : Values: [[File:MeterCat 5 spaces.jpg|12px]] 20c, 30, 40, 60, 70, 4 fr, 10 [[File:MeterCat 5 spaces.jpg|12px]][$20] [[File: Luxembourg stamp type AA2.jpg|left|220px]] '''AA2. Timbrographe''' (LV-9), 1929. : Nearly identical to Type AA1 but M# 201 only. : TM: nil : Values: [[File:MeterCat 5 spaces.jpg|12px]] 40c, 50, 70, 75, 1 fr [[File:MeterCat 5 spaces.jpg|12px]][$100] : Values: [[File:MeterCat 5 spaces.jpg|12px]] 5c, 10, 20, 30, 1.25 fr, 1.75, 2, 3 [[File:MeterCat 5 spaces.jpg|12px]][$200] [[File: Luxembourg stamp type AA3.jpg|left|440px]] <br> '''AA3. Hasler “F22” ''' (MV), 1928. : Frank is wider than Types AA1 and 2, and the inner box around the value figures is not as tall. : M#s 101 up. : With “fr.” at left and “c.” at right of value figures. : TM: DC, SC or nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0oo [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]oo [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]0oo [[File: Luxembourg stamp type AA4.jpg|left|560px]] '''AA4. Hasler “F22” ''' (MV). : Frank is large like Type AA3 but corners are rounded rather than diagonal. : With “FRS” at left and “CTS.” at right of value figures. : M# 113 seen. : TM: nil with date only : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0oo [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]oo [[File: Luxembourg stamp type AA5A.jpg|left|390px]] [[File: Luxembourg stamp type AA5B.jpg|left|420px]] <br><br> '''AA5. Hasler “F88” ''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$20] : As Type AA3 but without inner box around value figures. : Frank variable in size. : Spacing variable between TM and frank from very wide to very narrow. ::::::::::::::::::::: '''A'''. “fr.” at left and “c.” at right of value figures ::::::::::::::::::::: '''B'''. “Fr.” at left and “c” at right of value figures : TM: DC, SC, or nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ✳0oo [[File:MeterCat 5 spaces.jpg|12px]] ✳00oo [[File:MeterCat 5 spaces.jpg|12px]]◇0oo (121) ::::::::::::::::::::: '''a'''. Meter number at left of TM as well as at bottom of frank (137) [[File: Luxembourg stamp type AA6.jpg|left|375px]] <br> '''AA6. Hasler “F66” ''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$10] : Very similar to Type AA5 but the value figures are not as tall, 4.5 to 5 mm compared to 6 mm. : M#s 139 and 140 seen. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ✳00oo [[File: Luxembourg stamp type AA7.jpg|left|240px]] '''AA7. Francotyp "A" ''' (MV), 1933 or earlier. [[File:MeterCat 5 spaces.jpg|12px]][Quite scarce, value unknown] : Similar to Type AA3 but meter number in 300 series. : The value figures are angular. : One seen, M# 301, without town mark. : V/F: [[File:MeterCat 5 spaces.jpg|12px]] 000 (or possibly [[File:MeterCat 5-point asterisk.jpg|12px]]00) ---- ===={{font|color=blue|Sub-group AB: Inscribed “LUXEMBURG” (German occupation stamps)}}==== ---- <br> [[File: Luxembourg stamp type AB1.jpg|left|230px]] '''AB1. Hasler “D106” ''' (FV-6), 1941. [[File:MeterCat 5 spaces.jpg|12px]][$25] : Provisional design. : As Type AA1, but country name modified by insertion of large “U” in place of “OU”. : M# 101 only. : TM: nil : Values: [[File:MeterCat 5 spaces.jpg|12px]] 1, 3, 8, 10, 12, 25 [[File: Luxembourg stamp type AB2A.jpg|left|280px]] '''AB2. Hasler “D106” ''' (FV-6). : Value figures with large “RM.” suffix inside large rectangle. ::::::::::::::: '''A'''. Meter number 102 [[File:MeterCat 5 spaces.jpg|12px]][$15] ::::::::::::::: '''B'''. Meter number 103 or 105 [[File:MeterCat 5 spaces.jpg|12px]][$25] : TM: nil : Values: [[File:MeterCat 5 spaces.jpg|12px]] 0,02,[[File:MeterCat 5 spaces.jpg|10px]]0,03,[[File:MeterCat 5 spaces.jpg|10px]]0,04,[[File:MeterCat 5 spaces.jpg|10px]]0,06,[[File:MeterCat 5 spaces.jpg|10px]]0,08,[[File:MeterCat 5 spaces.jpg|10px]]0,12,[[File:MeterCat 5 spaces.jpg|10px]]0,25 '''NOTES''': * Value 0,20 may also have been used but this is not verified. * Meter 106 exists but is known only as a proof. Values: 0,05, 0,06, 0,08, 0,24, 0,30, 0,40 {{font|color=green|size=3|'''NOTE''': Meter Type AA2 (Timbrographe M# 201) was modified for use under German occupation and equipped with values 0,03, 0,06, 0,08, 0,12, 0,15, 0,25, 0,30, and 0,40. No examples have been reported, and the exact appearance of the stamp is uncertain.}} [[File: Luxembourg stamp type AB3A.jpg|left|320px]] [[File: Luxembourg stamp type AB3B.jpg|left|330px]] <br><br> '''AB3. Hasler “F22” ''' (MV), 1928. [[File:MeterCat 5 spaces.jpg|12px]][$25] : As Type AA3. : M#s 106, 108-113 reported. ::::::::::::::::: '''A'''. “Rm” at left and “Pf.” at right of value figures ::::::::::::::::: '''B'''. “RM.” at left and “Rpf.” at right of value figures : TM: nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]oo [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]0oo ::::::::::::::::: '''a'''. With date but not town mark at far left (113) [[File: Luxembourg stamp type AB4A.jpg|left|400px]] [[File: Luxembourg stamp type AB4C.jpg|left|290px]] <br><br> '''AB4. Hasler “F88” ''' (MV). : As Type AA4. :::::::::::::::::::: '''A'''. With large “RM.” left of value figures (118) [[File:MeterCat 5 spaces.jpg|12px]][$25] :::::::::::::::::::: '''B'''. With “RM.” at left and “Pf.” at right (112) [[File:MeterCat 5 spaces.jpg|12px]][Rare, value unknown] :::::::::::::::::::: '''C'''. Value figures alone at center (115) [[File:MeterCat 5 spaces.jpg|12px]][$15] :::::::::::::::::: TM: SC or nil :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]] ✳00 [[File:MeterCat 5 spaces.jpg|12px]] ✳0oo ---- =={{font|color=blue|GROUP B: Rectangle with simulated perforation outer frame}}== <br> ---- ---- ===={{font|color=blue|Sub-group BA: Frank with crown and coat of arms in center}}==== ---- <br> [[File: Luxembourg stamp type BA1.jpg|left|520px]] '''BA1. Hasler “F22” ''' (MV), 1925. [[File:MeterCat 5 spaces.jpg|12px]][$150] : Nearly square frank with crown and coat of arms inside oval with “LUXEMBOURG” curved around them. : Value figures at bottom between “Fr.” and “Cts”. : M# 113 below frank. : TM: BIC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]00 ---- ===={{font|color=blue|Sub-group BB: Horizontal frank with inner box, inscribed “LUXEMBOURG”}}==== ---- <br> [[File: Luxembourg stamp type BB1.jpg|left|585px]] '''BB1. Francotyp “C” ''' (MV). : Horizontal frank with large inner box around value figures and straight ornamental lines at sides and bottom between outer frame and inner box. : With or without S# high between TM and frank. : M# 301 up, with or without “F” prefix, breaks ornamental lines at bottom center. : TM: SC, DC, nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]00 (O) [[File:MeterCat 5 spaces.jpg|12px]]000 (A,G) [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]000 (A) [[File:MeterCat 5 spaces.jpg|12px]] ◆000 (G) [[File:MeterCat 5 spaces.jpg|12px]] ◆0.00 (G) ::::::::::::::::::::::::::::: '''a'''. Date boxed ::::::::::::::::::::::::::::: '''b'''. Meter number boxed [[File: Luxembourg stamp type BB2A.jpg|left|385px]] [[File: Luxembourg stamp type BB2B.jpg|left|445px]] <br><br> '''BB2. Francotyp “Cc/Ccm” ''' (MV). : Similar to Type BB1 but narrow to very narrow spacing between TM and frank. : Date figures with stops after D and before Y. : M# with or without “F” prefix. :::::::::::::::::::::: '''A'''. M# unboxed :::::::::::::::::::::: '''B'''. M# boxed : TM: SC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ◆0.00 [[File:MeterCat 5 spaces.jpg|12px]] ◆00.00 [[File: Luxembourg stamp type BB3.jpg|left|370px]] <br> '''BB3. Francotyp “A9000” ''' (MV). : Very similar to Type BB2 but date figures widely spaced with stops after D and M. : M# with “F” prefix or without prefix, unboxed. : TM: SC, BIC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ◆0.00 [[File:MeterCat 5 spaces.jpg|12px]] ◆0,00 [[File:MeterCat 5 spaces.jpg|12px]] ◆00.00 [[File:MeterCat 5 spaces.jpg|12px]] ◆000.00 (''M# 370 only'') ---- ---- ===={{font|color=blue|Sub-group BC: Horizontal frank with inner box, inscribed “LUXEMBURG”}}==== ---- ---- <br> [[File: Luxembourg stamp type BC1.jpg|left|575px]] <br> '''BC1. Francotyp “C” ''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$50] : As Type BB1 but with "LUXEMBURG". : With or without impression counter number high between TM and frank. : M#s 301-312. : TM: SC, DC, nil : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]00 (O) [[File:MeterCat 5 spaces.jpg|12px]]000 (A,G) [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point starburst.jpg|12px]]000 (A) [[File:MeterCat 5 spaces.jpg|12px]] ◆000 (G) ---- ===={{font|color=blue|Sub-group BD: Country name in curved ribbon at top}}==== ---- <br> [[File: Luxembourg stamp type BD1.jpg|left|375px]] <br> '''BD1. Universal “MultiValue" ''' (MV), 1952. [[File:MeterCat 5 spaces.jpg|12px]][$25] : Upright frank with doubled straight inner frame lines. : M# 501 with “U” prefix in box at bottom center. : “FR | CTS” below value figures. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] [[File:MeterCat 5-point asterisk.jpg|12px]]0oo [[File: Luxembourg stamp type BD2.jpg|left|380px]] <br> '''BD2. Universal “Automax” ''' (MV), 1963? [[File:MeterCat 5 spaces.jpg|12px]][$20] : As Type BD1 but with “FRANCS” below value figures. : M# 500 up without prefix. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]=00.oo [[File:MeterCat 5 spaces.jpg|12px]]=00o o ---- ---- ===={{font|color=blue|Sub-group BE: Country name straight at top}}==== ---- <br> [[File: Luxembourg stamp type BE1.jpg|left|380px]] '''BE1. Frama “M/E” ''' (MV). : Square frank with straight inner frame line and large box around value figures. : M# 200 up at bottom. : Value figures thick. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00.00 [[File:MeterCat 5 spaces.jpg|12px]]000.00 [[File: Luxembourg stamp type BE2.jpg|left|370px]] '''BE2. Frama “M/E” ''' (MV). : Horizontal frank without inner box around value figures. : M#s in 200 and 2000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]000.00 [[File: Luxembourg stamp type BE3.jpg|left|350px]] <br> '''BE3. Frama “EPS3000” ''' (MV). : Similar to Type BE2 but the value figures are much smaller. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File: Luxembourg stamp type BE4.jpg|left|330px]] <br> '''BE4. Frama “Sensonic” ''' (digital). : Similar to Type BE2 but the value figures are taller, not as thick, and more closely spaced. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 ---- =={{font|color=blue|GROUP C: Rectangle with ornamental, Greek style outer border}}== <br> [[File: Luxembourg stamp type C1A.jpg|left|525px]] [[File: Luxembourg stamp type C1B.jpg|right|330px]] [[File: Luxembourg stamp type C1C.jpg|right|330px]] '''C1. Postalia''' (MV), 1952. : Country name unframed at top, Greek-style border along sides and bottom with inner box around value figures. : Frank width variable from 26 to 27+ mm. : M# in 400 and 1400 series below frank. : Value figures narrow. :: '''A'''. Wide spacing between TM and frank :: '''B'''. Narrow spacing between TM and frank :: '''C'''. As '''B''' but the meter number is above the bottom frame line rather than below : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]000 [[File:MeterCat 5 spaces.jpg|12px]]000.– [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:MeterCat 5 spaces.jpg|12px]]00.00 [[File:MeterCat 5 spaces.jpg|12px]]00,00 [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File:MeterCat 5 spaces.jpg|12px]]000.00 [[File:MeterCat 5 spaces.jpg|12px]]000,00 :: '''a'''. Value figures with “FR” prefix [[File: Luxembourg stamp type C2.jpg|left|370px]] '''C2. Francotyp-Postalia “EFS” ''' (MV). : Very similar to Type C1 but M# breaks bottom frame line, and value figures are slightly taller and more widely spaced. : Spacing between TM and frank ~15-16 mm. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File: Luxembourg stamp type C2point1.jpg|left|365px]] <br> '''C2.1. Francotyp-Postalia “MS5/WK4” ''' (MV). : As Type C2 but frank is wider than tall. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File: Luxembourg stamp type C3.jpg|left|330px]] '''C3. Satas “Rotary” ''' (MV). : Frank smaller than Types C1 and C2 with M# above lower border inside value box. : Date figures tall or short. : M# in 700 up. : TM: SC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00.oo [[File:MeterCat 5 spaces.jpg|12px]] ★0.oo [[File:MeterCat 5 spaces.jpg|12px]] ★00.oo [[File: Luxembourg stamp type C4.jpg|left|310px]] <br> '''C4. Francotyp-Postalia “T1000” ''' (digital). : Frank quite similar to Type C2 but with narrower spacing and digital value figures. : M# in 40000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File: Luxembourg stamp type C5.jpg|left|390px]] '''C5. Neopost “Electronic” ''' (MV). : Frank wider than tall. : M# breaks bottom frame line. : M# in 80000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=4|≋}}000 [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=4|≋}}000.– [[File: Luxembourg stamp type C6A.jpg|left|320px]] '''C6. Neopost “SM24/SM26” ''' (digital). : Very similar to Type C5 but spacing between TM and frank is much narrower. : The value figures are more closely spaced, and the date figures are shorter. : M# in 80000 series. : Meter number small. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] {{font|size=4|≋}}0000 [[File: Luxembourg stamp type C7.jpg|left|320px]] [[File: Luxembourg stamp type C7aa.jpg|right|320px]] '''C7. Neopost "IJ" ''' series? (digital). : As Type C6 but the date and value figures are closer to the top rather than centered. : The meter number is large. : M# in 81000 and 84000 series seen. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 :::::::::::::::: '''a'''. Date figures lowered, closer to the bottom of the TM rather than the top [[File: Luxembourg stamp type C8.jpg|left|320px]] '''C8. Neopost ''' unidentified model (digital). : As Types C6 and C7 but the date and value figures are close to the bottom. : The value figures are more rounded than with Types C6 and C7. : M# in 87000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File: Luxembourg stamp type C9.jpg|left|320px]] <br> '''C9. Neopost ''' unidentified model, possibly SM-26 (digital). : As Type C7 but with "P&TLUXEMBOURG" at top. : M# in 85000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File: Luxembourg stamp type C10.jpg|left|340px]] '''C10. Neopost ''' unidentified model, possibly IJ-25, IJ-65 (digital). : As Type C9 but value figures are more oval. : M# in 86000 series. : TM: DC : V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 '''NOTE''' that the lower portion of this image is distorted and not typical. ---- =={{font|color=blue|GROUP D: Rectangle with straight outer frame}}== ===={{font|color=blue|size=3|Sub-group DA: Frank completely contained within the frame}}==== {{font/top|color=blue|size=3}} * Country identification "LUXEMBOURG" {{font/end}} <br> ---- <br> [[File: Luxembourg stamp type D1.jpg|left|390px]] :::::::::::::::::: '''DA1. Safag ''' (MV), 1948. [[File:MeterCat 5 spaces.jpg|12px]][$20] :::::::::::::::::: Large horizontal rectangle with country name underlined at top and no other contents beyond the value figures. :::::::::::::::::: M# 200 up below frank. :::::::::::::::::: TM: BIC or nil :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]000 [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File: Luxembourg stamp type D2.jpg|left|380px]] :::::::::::::::::: '''DA2. Hasler “Mailmaster” ''' (MV), 1980. :::::::::::::::::: Smaller than Type DA1 and the country name is not underlined. :::::::::::::::::: The meter number is centered inside Greek style ornaments at bottom. :::::::::::::::::: M# in 100 and 1000 series. :::::::::::::::::: With "F" preceding the value figures. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File:MeterCat 5 spaces.jpg|12px]]000.00 ::::::::::::::::::: '''a'''. Without "F" preceding the value figures [[File: Luxembourg stamp type D3.jpg|left|340px]] :::::::::::::::::: '''DA3. Secap''' (MV), 1991. :::::::::::::::::: Small upright frank with breaks in centers of both sides. :::::::::::::::::: M# in 600 and 6000 series at bottom. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]000.– [[File:MeterCat 5 spaces.jpg|12px]]0000.– [[File: Luxembourg stamp type D4.jpg|left|300px]] :::::::::::::::::: '''DA4. Secap''' (digital). :::::::::::::::::: Frank similar to Type DA3 but with space above country name. :::::::::::::::::: Value figures fairly large :::::::::::::::::: TM: rectangle :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 [[File:Luxembourg Type DA5.jpg|285px|left]] :::::::::::::::::: '''DA5. Frama''' (digital). :::::::::::::::::: Large horizontal rectangle with country name at top but without underline. :::::::::::::::::: M# in 2000 series. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 ---- ===={{font|color=blue|size=3|Sub-group DB: Country identification above and outside the frame}}==== {{font/top|color=blue|size=3}} * Country identification "'''{{font|size=5|P}}OST'''LUXEMBOURG" {{font/end}} ---- <br> [[File: Luxembourg stamp type D5.jpg|left|320px]] :::::::::::::::::: '''DB1. Neopost''' (digital). :::::::::::::::::: Value figures high in the box, above the level of the date figures. :::::::::::::::::: M# breaks the bottom frame line. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File: Luxembourg stamp type D6.jpg|left|320px]] :::::::::::::::::: '''DB2. Frama''' (digital). :::::::::::::::::: Frank wider than with Type DB1. :::::::::::::::::: The value figures are larger than in Type DB1 and are in line with the date figures. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]00000 [[File:Luxembourg Type DB3.jpg|302px|left]] :::::::::::::::::: '''DB3. ?''' (digital). :::::::::::::::::: The value figures are larger than in Types DB1 and DB2 and are in line with the date figures. :::::::::::::::::: TM: DC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]0000 ---- =={{font|color=blue|GROUP E: Open, horizontal frank, without outer frame}}== <br> [[File: Luxembourg stamp type E1A.jpg|left|375px]] [[File: Luxembourg stamp type E1B.jpg|left|355px]] '''E1. Pitney Bowes-GB “5000” '''series (MV). : Country name across top. : “POSTES” above value box. : Crown and coat of arms between TM and value box. : Date figures raised in relation to value figures. : Curled ornament at left and top right of TM. : M# with “PB” or “P.B.” prefix below coat of arms. ::::::::::::::::::: '''A'''. Coat of arms capped with wide crown ::::::::::::::::::: '''B'''. Smaller coat of arms capped with simpler crown narrow at bottom ::::::::::::::::: TM: DC ::::::::::::::::: V/F: {{space|4}} ≋00 {{font|size=1|■}} {{space|4}} ≋00 o {{space|4}} ≋00o{{font|size=1|■}} {{space|4}} ≋00'''.'''o{{font|size=1|■}} {{space|4}} ≋00'''.'''oo <br><br><br><br> [[File: Luxembourg stamp type E2.jpg|left|360px]] '''E2. Pitney Bowes-GB “5000” ''' (MV). : As Type E1 but without crown and coat of arms. : M# with “P.B.” prefix. : TM: DC : V/F: {{space|4}} ≋00 o {{space|4}} 00'''.'''oo {{space|4}} ≋00'''.'''oo <br><br><br> [[File: Luxembourg stamp Type E2.1.jpg|left|280px]] '''E2.1. Pitney Bowes “RF” or "RT"''' (MV). {{space|4}}[''probably very rare''] : Similar to Types E1 and E2 but much smaller, with inner frame lines at top, left and bottom. : Crown at left of LUXEMBOURG. : M# with “P.B.” prefix breaks bottom frame line. : Single circle town mark very close to frank. ::::::::::::: V/F: {{space|4}} ≋00'''.'''oo <br><br> [[File: Luxembourg stamp type E3A.jpg|left|360px]] [[File: Luxembourg stamp type E3B.jpg|left|365px]] '''E3. Pitney Bowes-GB “6900” ''' (MV). : Very similar to Type E2.1 but the date and value figures are on the same level. : “Fr.” is closer to the left frame line than with Type E2.1. : M# with “P.B.” prefix. :::::::::::::::::: '''A'''. Low crown :::::::::::::::::: '''B'''. Taller crown narrow at bottom : Double circle town mark 10 to 12mm away from frank. : V/F: {{space|4}} ≋00 {{space|4}} ≋0'''.'''o0 :::::::::::::::::: '''a'''. Value figures without "Fr" prefix. <br><br><br><br> [[File: Luxembourg stamp type E4.jpg|left|395px]] '''E4. Pitney Bowes-GB “6600” ''' (MV). : Similar to Type E3B but taller crown with larger frank. : Large “F” breaks left frame line. : M# with “PB” prefix. : TM: DC : V/F: {{space|4}} 000 {{space|4}} ≋00'''.'''00 <br><br><br> [[File: Luxembourg stamp type E5.jpg|left|370px]] '''E5. Pitney Bowes-GB “6900” ''' (MV). : Frank similar to Type E1 but date and value figures on same level, and the value box is much larger. : “–POSTES–” below value box. : M# with “PBE” prefix. : TM: DC : V/F: {{space|4}} ≋00'''.'''0 0 <br><br> [[File: Luxembourg stamp type E6.jpg|left|375px]] '''E6. Pitney Bowes-GB “6900” ''' (MV). : Similar to Type E5 but without inner frame lines around value figures. : The crown and coat of arms are larger, and the TM does not have curled ornaments. : A frame line has been added across the bottom, and a line (from the edge of the die?) sometimes appears along the top. : M# with “PB” prefix. : TM: DC : V/F: {{space|4}} ≋00'''.'''0 <br><br> [[File: Luxembourg stamp type E7.jpg|left|390px]] '''E7. Pitney Bowes “A/B900” ''' (MV). : Similar to Type E5 but lower and wider. : M# with “PB” prefix. : TM: DC : V/F: {{space|4}} ≋00 {{space|4}} ≋0000 {{space|4}} ≋000'''.'''0 o <br><br><br> [[File: Luxembourg stamp type E7point1.jpg|left|380px]] '''E7.1. Pitney Bowes “Paragon” ''' (MV). : Similar to Type E4 but larger frank with smaller value figures. : Narrower spacing than with Type E4. : Without "F" preceding the value figures. : M# in 50000 series with "PB" prefix breaks the bottom frame lines. : TM: DC : V/F: {{space|4}} ≋0000 <br><br> [[File: Luxembourg stamp type E8.jpg|left|380px]] '''E8. Pitney Bowes “EasyMail” ''' (digital). : “POSTES” centered below country name at top. : Large crown over value figures at left. : M# with “PB” prefix and date at right. : Various numbers at far left below curled ornaments. : TM: Linear across bottom : V/F: {{space|4}} ≋0000 <br><br> [[File: Luxembourg stamp type E9.jpg|left|340px]] '''E9. Pitney Bowes '''(digital), 2008. : Similar to Type E8 but without crown and ornaments at upper left. : Below the value figures are a 7-digit code and the town name. : M# with "PB" prefix. : TM: SL : V/F: {{space|4}} 00000 <br><br><br><br> ---- =={{font|color=blue|GROUP PO: Special stamps generated only by post office machines}}== <br> [[File: Luxembourg stamp type PO1.jpg|left|325px]] '''PO1. Satas “P” ''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$20] : Small upright frank with single line, simulated perforation border broken at center of sides. : Spacing between TM and frank ~15 mm. : Identification letter at bottoms of TM and frank. : Hour figure between TM and frank. : TM: SC : V/F: [[File:MeterCat 5 spaces.jpg|12px]] ★000 [[File: Luxembourg stamp type PO2.jpg|left|270px]] '''PO2. Camp''' (MV). [[File:MeterCat 5 spaces.jpg|12px]][$20] : Frank very similar to Type PO1 but with “POSTES” over identification number at bottom. : Narrow spacing between TM and frank. : TM: SC with ID letter at bottom : V/F: [[File:MeterCat 5 spaces.jpg|12px]]000oo [[File: Luxembourg stamp type PO3.jpg|left|365px]] '''PO3. Frama''' (digital). : Horizontal frank with simulated perforation border around the right half and straight line border at top and bottom of the left half. : At left are the town and postal codes in panels at top and bottom. : At right are the country name and identification number at top and bottom. : Identification number with "P" prefix. : Date and value figures across center. : V/F: [[File:MeterCat 5 spaces.jpg|12px]]000.00 [[File: Luxembourg stamp type PO4.jpg|left|410px]] '''PO4. Escher Group "Riposte" ''' (digital), 2005. : Rectangular value box containing "PORT PAYE" at the top. : Value box with country name above the box and "POSTES" below. : Large single circle TM contains two lines of text through the center, the upper line a series of number codes and the lower line the date and time. [[File: Luxembourg stamp type PO4aa.jpg|right|410px]] : Printed in black on self-adhesive label with yellow "P&T LUXEMBOURG" underprint. : V/F: [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=1|■ ■ ■ }}0.00€ :: '''a'''. With underprint vertical, reading up, rather than horizontal <br><br><br> [[File: Luxembourg stamp type PO5p1.jpg|left|400px]] <br> '''PO5.1'''. probably '''Escher Group''' (digital), 2014 or earlier. : Similar to Type PO4 but the letters in the country name and "PORT PAYE" are heavier. : The post office name is straight rather than curved at the top. : Printed in black on self-adhesive label with underprint of yellow "LUXEMBOURG POSTES" in four lines reading up along the right side. The right-most line has "POSTES" in blue-green. : V/F very small: [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=1|<sup>■ ■ ■</sup> }}0.00 € [[File: Luxembourg stamp type PO6.jpg|left|408px]] [[File: Luxemburg stamp type PO5.jpg|left|280px]] <br> '''PO5.2'''. probably '''Escher Group''' (digital). : Similar to Type PO5.1 but the value box, town mark circle, and inscriptions are all much smaller. : Printed in black on self-adhesive label. :::::::::::::::::::: '''A'''. Label with underprint of yellow "LUXEMBOURG POSTES" in four lines reading up along the right side. The right-most line has "POSTES" in blue-green. :::::::::::::::::::: '''B'''. Label with light gray underprint showing a quarter moon circling "'''POST''' LUXEMBOURG". ::::::::::::::::::: V/F very small: [[File:MeterCat 5 spaces.jpg|12px]]{{font|size=1|<sup>■ ■ ■</sup> }}0.00 € ---- =={{font|color=blue|GROUP PD: Stamp used for collecting Postage Due}}== <br> [[File: Luxembourg stamp type PD1.jpg|left|350px]] <br> '''PD1. Postalia''' (MV). : Simple horizontal rectangle broken at top right by "LUXEMBOURG". : At center is a large "T" filled with hatch lines. : The date is at left, and the value figures are at right. : Without town mark. : V/F: [[File:MeterCat 5 spaces.jpg|12px]] 000 ---- =={{font|color=blue|GROUP OO: Special stamps generated only for official government mail}}== <br> [[File: Luxembourg stamp type OO1.jpg|left|380px]] '''OO1. Safag''' (MV), 1947. : Horizontal frank without complete outer border. : Country name underlined at top, Greek style border at bottom, crown and coat of arms at both sides. : M# and department name below frank. :::::::::::::::::::: '''A'''. Department name “GOUVERNEMENT” (200, 205, 207 seen) :::::::::::::::::::: '''B'''. “CHEMINS DE FER” (201 seen) [[File:MeterCat 5 spaces.jpg|12px]][$20] :::::::::::::::::::: '''C'''. “ARMEE” (203 seen) [[File:MeterCat 5 spaces.jpg|12px]][$20] :::::::::::::::::::: '''D'''. “S.N.H.B.M.” (204 seen) [[File:MeterCat 5 spaces.jpg|12px]][$20] :::::::::::::::::: TM: BIC :::::::::::::::::: V/F: [[File:MeterCat 5 spaces.jpg|12px]]000 [[File:MeterCat 5 spaces.jpg|12px]]0000 <br><br><br><br> ---- <br> {{center/top}}{{font/top|color=green|size=3}} '''NOTE''': During the German occupation of WW2 at least one meter with stamp of unaltered German design was used in Luxembourg. It can be identified only by "LUXEMBURG" in the town mark. Examples seem to be quite rare. {{font/end}}{{center/end}} <br> [[File: Luxembourg_German_occupation_stamp.jpg|540px]] <br><br><br><br> ---- ---- {{center|{{font|size=3|{{font|color=green|Return to main catalog}} &rArr;}} <u>[[../]]</u>}} {{center|{{font|size=3|{{font|color=green|Return to top}} &rArr;}} <u>[http://en.wikibooks.org/wiki/International_Postage_Meter_Stamp_Catalog/Luxembourg Luxembourg]</u>}} <br><br> {{BookCat}} tmwoof3libz0i7goy5uzeroaua9oae5 User:Emma Grote/vector.css 2 278269 4656701 2410701 2026-08-07T20:33:41Z Itti 96004 Itti moved page [[User:Jonas Grote/vector.css]] to [[User:Emma Grote/vector.css]]: Automatically moved page while renaming the user "[[Special:CentralAuth/Jonas Grote|Jonas Grote]]" to "[[Special:CentralAuth/Emma Grote|Emma Grote]]" 2410701 css text/css #bodyContent { max-width: 900px; } js6s0et43udz2pno2qlsf02eh53advg Aros/Platforms/Arm Raspberry Pi support 0 286123 4656729 4656214 2026-08-08T06:03:16Z Jeff1138 301139 4656729 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 2017 Raspberry Pi Compute Module 3 CM3 Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC 1Gb DDR2 and emmc 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 2021 Pi zero 2 w 64bit quad 1GHz Cortex-A53 BCM2710A1 512mB SDRam 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 BCM2711 with optional IO board 2021 Pi4 CM4S with sodimm pinouts 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 BCM2712 with optional IO board 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 Pi 4, 5 and 500 DTBs added, 2026 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. ksas3030n9pdj8yvwuw8hiwk1pbac69 4656730 4656729 2026-08-08T06:07:23Z Jeff1138 301139 4656730 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 on small 67.6mm x 31mm board which fits DDR2 SODIMM connector 2017 12 million pis sold in total 2017 Pi Zero W 1GHz, single-core CPU A53 released with Cypress CYW43438 wireless 2017 Raspberry Pi Compute Module 3 CM3 Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC 1Gb DDR2 and emmc 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 8GB, 16GB, 32GB or a Lite variant without eMMC 2021 Pi zero 2 w 64bit quad 1GHz Cortex-A53 BCM2710A1 512mB SDRam 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 BCM2711 with optional IO board 2021 Pi4 CM4S with sodimm pinouts 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 BCM2712 with optional IO board 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 Pi 4, 5 and 500 DTBs added, 2026 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. a3zcib3yjw4zeptik8fep70qz7p7y7y 4656731 4656730 2026-08-08T06:09:14Z Jeff1138 301139 4656731 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 on small 67.6mm x 31mm board which fits DDR2 SODIMM connector 2017 12 million pis sold in total 2017 Pi Zero W 1GHz, single-core CPU A53 released with Cypress CYW43438 wireless 2017 Raspberry Pi Compute Module 3 CM3 Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC 1Gb DDR2 and emmc 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 8GB, 16GB, 32GB or a Lite variant without eMMC 2021 Pi zero 2 w 64bit quad 1GHz Cortex-A53 BCM2710A1 512mB SDRam 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 BCM2711 on new 55mm x 40mm form factor with optional breakout IO board 2021 Pi4 CM4S with sodimm pinouts 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 BCM2712 with optional IO board 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 Pi 4, 5 and 500 DTBs added, 2026 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. ouq6h8pzcp1icl46zet6ld0o5dhcyek 4656732 4656731 2026-08-08T06:15:07Z Jeff1138 301139 4656732 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 on small 67.6mm x 31mm board which fits DDR2 SODIMM connector but not electrically compatible 2017 12 million pis sold in total 2017 Pi Zero W 1GHz, single-core CPU A53 released with Cypress CYW43438 wireless 2017 Raspberry Pi Compute Module 3 CM3 Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC 1Gb DDR2 and emmc 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 8GB, 16GB, 32GB or a Lite variant without eMMC on not electrically DDR2 sodimm factor 2021 Pi zero 2 w 64bit quad 1GHz Cortex-A53 BCM2710A1 512mB SDRam 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 BCM2711 on new 55mm x 40mm form factor with optional breakout IO board 2021 Pi4 CM4S with ddr2 sodimm pinouts but not electrically same 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 BCM2712 with optional IO board 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 Pi 4, 5 and 500 DTBs added, 2026 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. nknmvnok367yrbj3eeur2bpfrs8for9 4656743 4656732 2026-08-08T10:28:43Z Jeff1138 301139 4656743 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 CM3 launched BCM2837 armv8 Quad 64-bit Core 1Gb LPDDR2 RAM 4Gb Emmc storage on small 67.6mm x 31mm board which fits DDR2 SODIMM connector but not electrically compatible 2017 12 million pis sold in total 2017 Pi Zero W 1GHz, single-core CPU A53 released with Cypress CYW43438 wireless 2017 Raspberry Pi Compute Module 3 CM3 Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC 1Gb DDR2 and emmc 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+ - Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC 1Gb DDR2 and 8GB, 16GB, 32GB or a Lite variant without eMMC on not electrically DDR2 sodimm factor 2021 Pi zero 2 w 64bit quad 1GHz Cortex-A53 BCM2710A1 512mB SDRam 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 BCM2711 on new 55mm x 40mm form factor with optional breakout IO board 2021 Pi4 CM4S with ddr2 sodimm pinouts but not electrically same 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 BCM2712 with optional IO board 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 Pi 4, 5 and 500 DTBs added, 2026 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. tg10rwh6ersudm1nqhme691q7rlzi1g 4656744 4656743 2026-08-08T10:30:23Z Jeff1138 301139 4656744 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 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 PIs total over 10 million worldwide 2016 Compute 3 CM3 launched BCM2837 armv8 Quad 64-bit Core 1Gb LPDDR2 RAM 4Gb Emmc storage on small 67.6mm x 31mm board which fits DDR2 SODIMM connector but not electrically compatible 2017 12 million pis sold in total 2017 Pi Zero W 1GHz, single-core CPU A53 released with Cypress CYW43438 wireless 2017 Raspberry Pi Compute Module 3 CM3 Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC 1Gb DDR2 and emmc 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+ - Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC 1Gb DDR2 and 8GB, 16GB, 32GB or a Lite variant without eMMC on not electrically DDR2 sodimm factor 2021 Pi zero 2 w 64bit quad 1GHz Cortex-A53 BCM2710A1 512mB SDRam 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 BCM2711 on new 55mm x 40mm form factor with optional breakout IO board 2021 Pi4 CM4S with ddr2 sodimm pinouts but not electrically same 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 BCM2712 with optional IO board 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 Pi 4, 5 and 500 DTBs added, 2026 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. bvarl46cpykzbd2ptd8al0k07jcmtx9 User:Arlo Barnes/glossing 2 368858 4656714 4238913 2026-08-07T22:11:16Z Arlo Barnes 381814 section headers 4656714 wikitext text/x-wiki * X1:first person singular: [[Láadan/Lessons/12]] * PB:possessive by means of birth: [[Láadan/Lessons/13]] == [[s:mul:category:Láadan]] == === [[s:mul:Habelid Thul]] === {{interlinear|lang=ldn|glossing=link|box=yes|display-messages=no |ablist=X1:first person singular:Láadan/Lessons/12#Pronouns;BIRTH:possessive by means of birth:Láadan/Lessons/11#Possessive_Markers |top=The Father and His Sons |Thul i Shem Betha |Parent And Offspring X1-BIRTH |Parent and Her/His Offspring }} == [[:category:book:Láadan]] == === [[Láadan/Lessons/11#Examples]] === {{interlinear|lang=ldn|glossing=link|box=yes|display-messages=no |ablist=X3:third person singular:Láadan/Lessons/12#Pronouns;BIRTH:possessive by means of birth:Láadan/Lessons/11#Possessive_Markers |top=I bought Mary's house. |Bíi eril eb le belid Meri bethoth wa. |be-th-oth X3 object-marker, and possessive-marker. |STATE: have-buy I her (Mary's) house assert. }} 0op7opcazqgf8vcezyt03bsgwwyaxic 4656715 4656714 2026-08-07T22:12:17Z Arlo Barnes 381814 intro sentence 4656715 wikitext text/x-wiki This is a guide to using {{template|interlinear}}. * X1:first person singular: [[Láadan/Lessons/12]] * PB:possessive by means of birth: [[Láadan/Lessons/13]] == [[s:mul:category:Láadan]] == === [[s:mul:Thul i Shem Betha]] === {{interlinear|lang=ldn|glossing=link|box=yes|display-messages=no |ablist=X1:first person singular:Láadan/Lessons/12#Pronouns;BIRTH:possessive by means of birth:Láadan/Lessons/11#Possessive_Markers |top=The Father and His Sons |Thul i Shem Betha |Parent And Offspring X1-BIRTH |Parent and Her/His Offspring }} == [[:category:book:Láadan]] == === [[Láadan/Lessons/11#Examples]] === {{interlinear|lang=ldn|glossing=link|box=yes|display-messages=no |ablist=X3:third person singular:Láadan/Lessons/12#Pronouns;BIRTH:possessive by means of birth:Láadan/Lessons/11#Possessive_Markers |top=I bought Mary's house. |Bíi eril eb le belid Meri bethoth wa. |be-th-oth X3 object-marker, and possessive-marker. |STATE: have-buy I her (Mary's) house assert. }} 9e78u46s7tqofh4abissamcy9exv2dt 4656723 4656715 2026-08-08T01:08:57Z Arlo Barnes 381814 /* Láadan/Lessons/11#Examples */ suppress annoying warning 4656723 wikitext text/x-wiki This is a guide to using {{template|interlinear}}. * X1:first person singular: [[Láadan/Lessons/12]] * PB:possessive by means of birth: [[Láadan/Lessons/13]] == [[s:mul:category:Láadan]] == === [[s:mul:Thul i Shem Betha]] === {{interlinear|lang=ldn|glossing=link|box=yes|display-messages=no |ablist=X1:first person singular:Láadan/Lessons/12#Pronouns;BIRTH:possessive by means of birth:Láadan/Lessons/11#Possessive_Markers |top=The Father and His Sons |Thul i Shem Betha |Parent And Offspring X1-BIRTH |Parent and Her/His Offspring }} == [[:category:book:Láadan]] == === [[Láadan/Lessons/11#Examples]] === {{interlinear|lang=ldn|glossing=link|box=yes|display-messages=no |ablist=X3:third person singular:Láadan/Lessons/12#Pronouns;BIRTH:possessive by means of birth:Láadan/Lessons/11#Possessive_Markers |top=I bought Mary's house. |Bíi eril eb le belid Meri bethoth wa. |foo bar baz qux qaa Mary be-th-oth X3-obj-poss |STATE: have-buy I her (Mary's) house assert. }} n402zoeh9n08vfx12mi86i4z6bi6ldd 4656726 4656723 2026-08-08T02:39:21Z Arlo Barnes 381814 by project 4656726 wikitext text/x-wiki This is a guide to using {{template|interlinear}}. * <code>X1</code>: first person singular: [[Láadan/Lessons/12]] * <code>PB</code>: possessive by means of birth: [[Láadan/Lessons/13]] == Wikisource == === [[s:mul:category:Láadan]] === ==== [[s:mul:Thul i Shem Betha]] ==== {{interlinear|lang=ldn|glossing=link|box=yes|display-messages=no |ablist=X1:first person singular:Láadan/Lessons/12#Pronouns;BIRTH:possessive by means of birth:Láadan/Lessons/11#Possessive_Markers |top=The Father and His Sons |Thul i Shem Betha |Parent And Offspring X1-BIRTH |Parent and Her/His Offspring }} == Wikibooks == === [[:category:book:Láadan]] === ==== [[Láadan/Lessons/11#Examples]] ==== {{interlinear|lang=ldn|glossing=link|box=yes|display-messages=no |ablist=X3:third person singular:Láadan/Lessons/12#Pronouns;BIRTH:possessive by means of birth:Láadan/Lessons/11#Possessive_Markers |top=I bought Mary's house. |Bíi eril eb le belid Meri bethoth wa. |STATE: had buy I her (Mary's) X3-obj-poss assert. |Thus had bought I her Mary own-house indeed. }} sgebqdoy2hgxzu89z077qxlnea0u4of OpenSCAD Tutorial/Chapter 1 0 409752 4656728 4655677 2026-08-08T04:32:05Z Happy2048 3619931 Swapped 5 and 10 in translate Z in third_cube_close_small_gap.scad example to close the gap as text describes 4656728 wikitext text/x-wiki {{Nav}} == A few words about OpenSCAD == OpenSCAD is a solid 3D modeler that enables the creation of parametric models using its scripting language. Models are created by utilizing a technique called constructive solid geometry. According to this technique, simple objects can be transformed and combined in order to create almost any complex model. == Getting started with the Tutorial == This tutorial is a follow-along tutorial. As you are following the examples you will be asked to modify and extend them as well as create your own models. To move on please install OpenSCAD and start from a blank model. == User Interface == After starting OpenSCAD the window should look similar to the image below. [[File:OpenSCAD environment.png|680px]] The Window is divided in three columns. # In the left column, is the built-in text editor, where the true magic unfolds. As you enter keyboard commands you can view the transformation of code into art. # In the middle column, the displayed 3D View is where your design creations come to life. At the bottom lies the operations sequence console, always ready to lend a helping hand. It unravels the mysteries of mistakes and guides you towards mastery. It is your trusted guidance companion. # And note the right column, the GUI Customizer. It offers the user a gift of ease toolbar, a graphical interface to tweak and twist your model's parameters. == Creating your first object == Your first object is going to be a perfect cube with side length of 10. In order to create it you need to type the following code in the text editor and hit the preview (first) icon on the action bar below the reference axes. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''a_small_cube.scad'' <pre>cube(10);</pre> </td> </tr> </table> [[File:a_small_cube.jpg|680px]] There are a few fundamental concepts that you should learn from the start regarding the OpenSCAD scripting language, especially if you don’t have a programming background. The word 'cube' is part of OpenSCAD scripting language and is used to command OpenSCAD to create a cube. The 'cube' command is followed by a pair of parentheses, inside of which the parameter size is defined to be 10. Any definition of parameters that a command may require is always done inside a pair of matching parentheses that follow the command word. The semicolon after the last parenthesis indicates the end of that statement, and helps OpenSCAD parse the script that you typed in the text editor. Because a semicolon is used to indicate the end of each statement you have the freedom to format your code in any way you like by inserting whitespace. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try adding some whitespace between the word 'cube' and the first parenthesis and then hit (select) the "preview" option. Is your cube created? Do you get any error message? Try adding some additional whitespace in different places and hit "preview" again to see what you can get away with before getting an error message in the console. What happens if you add whitespace between the syllables 'cu' and 'be' of the word 'cube' and hit "preview"? What happens if you delete the semicolon?</td> </tr> </table> You just read "hit preview" three times in the last paragraph. When you hit "preview" OpenSCAD parses your script and creates the appropriate model. Every time you make a change to your script (e.g. adding whitespace) or later, when adding additional statements, you need to hit "preview" to see the effect of these changes. In case you haven't found the "preview" icon yet, it is the dotted line cube with the two ">>" characters under it. It can also be selected by hitting the F5 key. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try changing the size of the cube to 20 and see what happens. Did you remember to hit preview in order to see your changes take place?</td> </tr> </table> [[File:A_bigger_cube.jpg|680px]] == Creating a slightly different cube == A cube doesn’t have to be perfect (equal distance). A cube can have different side lengths. Use the following statement to create a cube (cubical) with side lengths of 25, 35 and 55. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''a_different_cube.scad'' <pre>cube([25,35,55]);</pre> </td> </tr> </table> [[File:a_cube_with_different_side_lengths.jpg|680px]] This cube is quite large compared to the previous one. In fact, it is so large it doesn’t fit in the viewport. To fix that, hover your mouse over the viewport and scroll out until you can see the entire cube. Zoom in and out by hovering your mouse over the viewport and rotating the scroll wheel. Alternatively, you can use the zoom in (fourth) and out (fifth) icons on the action bar below the viewport. You can let OpenSCAD automatically choose a convenient zoom level by using the view all (third) icon in the same action bar. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try moving your mouse over the viewport and using the scroll wheel to zoom in and out. Try zooming in and out using the corresponding icons. Let OpenSCAD choose a zoom level for you.</td> </tr> </table> [[File:View all viewing option.jpg|680px]] Apart from zooming in and out, you can also move and rotate the view of your model. To do so, you need to hover your mouse over the viewport while holding down the right button to move or drag the object. Hold down the left button to rotate the object. Reset the view by clicking on the reset view (sixth) icon on the action bar below the viewport. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try dragging your mouse over the viewport while holding down the right or left button to move or rotate your model.</td> </tr> </table> [[File:Rotated viewing angle.jpg|680px]] In order to create a cube with different side lengths, you need to define a pair of brackets with three values inside the parentheses. The pair of brackets is used to denote vector values. The values of the vector need to be comma separated, and correspond to the cube side lengths along the X, Y and Z axes. Previously, you used the cube command to create a perfect cube by defining the value of the size parameter. Most OpenSCAD commands can be used with different parameters, some with more, less or no parameters to achieve different results. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try using the cube command with no parameters. What happens? Use the cube command to create a cube with side lengths of 50, 5 and 10. Use the cube command to create a perfect cube with side length of 17.25.</td> </tr> </table> You should notice that every cube is created on the first octant. You can define an additional parameter named center and set it equal to true, in order to draw the cube centered on the origin. Here's an example of the complete statement: <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''a_centered_cube_with_different_side_lengths.scad'' <pre> cube([20,30,50],center=true);</pre> </td> </tr> </table> [[File:A centered cube with different side lengths.jpg|680px]] Notice that when more than one parameter is defined inside the parentheses, they need to be separated with a comma. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try creating a perfect cube or a cube with different side lengths. Use an appropriate additional input parameter to make this cube centered on the origin. If you like, add some whitespace before and after the comma that separates the two parameters.</td> </tr> </table> == Adding more objects and translating objects == The constructive solid modelling approach uses a number of fundamental objects along with a number of ways to transform and combine these objects to create more complex models. The cube that you have been using in the previous examples is one such fundamental object. The fundamental objects are called primitives and are directly available in the OpenSCAD scripting language. A car for example, is not an OpenSCAD primitive, as there is no corresponding keyword in the scripting language. This makes absolute sense because OpenSCAD is a set of modelling tools rather than a library of predefined models. Using the available tools, you can combine the available primitives to create your own car. To do this, you need to know how to add more than one object to your model. First create a cube with side lengths of 60, 20 and 10 that is centered on the origin. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> <pre> cube([60,20,10],center=true);</pre> </td> </tr> </table> [[File:A centered cube.jpg|680px]] In order to add a second cube to your model, type an identical statement in the next line of the text editor. Change the side lengths to 30, 20 and 10. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''a_smaller_cube_covered_by_a_bigger_cube.scad'' <pre> cube([60,20,10],center=true); cube([30,20,10],center=true);</pre> </td> </tr> </table> [[File:A smaller cube covered by a bigger cube.jpg|680px]] You should not see any change in your model because the second cube is not larger than the first cube in any dimension, and is currently completely covered by the first cube. By modifying the second statement in the following way, you can translate the second cube to place it on top of the first cube. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''two_cubes.scad'' <pre> cube([60,20,10],center=true); translate([0,0,5]) cube([30,20,10],center=true);</pre> </td> </tr> </table> [[File:Two cubes.jpg|680px]] You achieve this by using the "translate" command - one of the available transformations. The translate command, as well as the rest of the transformations don’t create an object on their own. Rather, they are applied to existing objects to modify them. The translate command can be used to move an object to any point in space. The input parameter for the translate command is a vector of three values. Each value indicates the amount of units that the object will be moved along the X, Y and Z axes. Notice there is no semicolon after the translate command. What follows the translate command is the definition of the object that you wish to translate. The semicolon is added at the end to indicate the completion of the statement. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try changing the input parameter of the translate command, so the cube is translated 5 units along the X axis and 10 units along the Z axis. Try adding some whitespace if you would like to format this statement in a different way. Try adding a semicolon after the translate command.</td> </tr> </table> <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''two_cubes_barely_touching.scad'' <pre> cube([60,20,10],center=true); translate([0,0,10]) cube([30,20,10],center=true);</pre> </td> </tr> </table> [[File:Two cubes barely touching.jpg|680px]] In the example above, the second cube sits exactly on top of the first cube. This is something that should be avoided, as it’s not clear to OpenSCAD whether the two cubes form one object together. This issue can be easily solved by always maintaining a small overlap of about 0.001 - 0.002 between the corresponding objects. One way to do so is by decreasing the amount of translation along the Z axis from 10 unit to 9.999 units. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''two_cubes_with_small_overlap.scad'' <pre> cube([60,20,10],center=true); translate([0,0,9.999]) cube([30,20,10],center=true);</pre> </td> </tr> </table> [[File:Two cubes with small overlap.jpg|680px]] Another way to do so more explicitly is by subtracting 0.001 units from the corresponding value on the script. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''two_cubes_with_explicit_small_overlap.scad'' <pre> cube([60,20,10],center=true); translate([0,0,10 - 0.001]) cube([30,20,10],center=true);</pre> </td> </tr> </table> [[File:Two cubes with small overlap.jpg|680px]] There is a third way. To avoid losing 0.001 from the top, we can add a third cube with the X-Y dimensions of the smaller cube, and height of 0.002 ([30, 20, 0.002]). The third cube will close the gap. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''third_cube_close_small_gap.scad'' <pre> cube([60,20,10],center=true); translate([0,0,10]) cube([30,20,10],center=true); translate([0,0,5]) cube([30,20,0.002],center=true);</pre> </td> </tr> </table> You will encounter this throughout the tutorial. Instead of two objects just touching each other, always guarantee a small overlap by subtracting or adding a tolerance of 0.001 units. == The cylinder primitive and rotating objects == The model that you just created looks like the body of a car that has bad aerodynamics. That’s ok. You will be making the car look a lot more interesting and aerodynamic in the following chapters. For now, you are going to use the cylinder primitive and the rotate transformation to add wheels and axles to your car. You can create a wheel by adding a third statement that consists of the cylinder command. You will need to define two input parameters, h and r. h is the height of the cylinder. r is its radius. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''a_cylinder_covered_by_cubes.scad'' <pre> cube([60,20,10],center=true); translate([5,0,10 - 0.001]) cube([30,20,10],center=true); cylinder(h=3,r=8);</pre> </td> </tr> </table> [[File:A cylinder covered by cubes.jpg|680px]] Notice the cylinder is hidden by the other objects. Use the translate command to make the cylinder visible by translating it 20 units along the negative direction of the Y axis. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''two_cubes_and_a_cylinder.scad'' <pre> cube([60,20,10],center=true); translate([5,0,10 - 0.001]) cube([30,20,10],center=true); translate([0,-20,0]) cylinder(h=3,r=8);</pre> </td> </tr> </table> [[File:Two cubes and a cylinder.jpg|680px]] The wheel is now visible, but your car won’t go anywhere if its not properly placed. You can use the rotate command to make the wheel stand up straight. To do so, you need to rotate it 90 degrees around the X axis. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''two_cubes_and_a_rotated_cylinder.scad'' <pre> cube([60,20,10],center=true); translate([5,0,10 - 0.001]) cube([30,20,10],center=true); rotate([90,0,0]) translate([0,-20,0]) cylinder(h=3,r=8);</pre> </td> </tr> </table> [[File:Two cubes and a rotated cylinder.jpg|680px]] Notice the absence of a semicolon between the rotate and translate command. By now, you should be getting familiar with this concept. The semicolon is only added at the end of a statement. You can keep adding as many transformation commands as you like, but you should not include a semicolon between them. The second thing to make note of is the rotate command has one input parameter, which is a vector of three values. Analogous to the translate command, each value indicates how many degrees an object will be rotated around the X, Y and Z axes. The third thing to note is the wheel is standing straight but as a result of its rotation around the x axis it has moved below the car. This happened because the object was moved away from the origin before it was rotated. A good practice for placing objects inside your model is to rotate them first, ''then'' translate them to the desired position. Note that OpenSCAD generates the object, then applies the object transformations starting with the one immediately before the object definition, then working backwards. So in order to rotate your object, then move it with a translation, specify the translation first, followed by the rotation, followed by the object definition. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try first rotating the wheel and then translating it, by changing the order of the rotate and translate commands.</td> </tr> </table> <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''two_cubes_and_a_rotated_and_translated_cylinder.scad'' <pre> cube([60,20,10],center=true); translate([5,0,10 - 0.001]) cube([30,20,10],center=true); translate([0,-20,0]) rotate([90,0,0]) cylinder(h=3,r=8);</pre> </td> </tr> </table> [[File:Two cubes and a rotated and translated cylinder.jpg|680px]] It already looks a lot better than the previous position of the wheel. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try modifying the input parameter of the translate command to make this wheel the front left wheel of your car.</td> </tr> </table> <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''car_body_and_front_left_wheel.scad'' <pre> cube([60,20,10],center=true); translate([5,0,10 - 0.001]) cube([30,20,10],center=true); translate([-20,-15,0]) rotate([90,0,0]) cylinder(h=3,r=8);</pre> </td> </tr> </table> [[File:Car body and front left wheel.jpg|680px]] <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try adding the front right wheel of the car by duplicating the last statement and changing only the sign of one value.</td> </tr> </table> <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''car_body_and_misaligned_front_wheels.scad'' <pre> cube([60,20,10],center=true); translate([5,0,10 - 0.001]) cube([30,20,10],center=true); translate([-20,-15,0]) rotate([90,0,0]) cylinder(h=3,r=8); translate([-20,15,0]) rotate([90,0,0]) cylinder(h=3,r=8);</pre> </td> </tr> </table> [[File:Car body and misaligned front wheels.jpg|680px]] You should notice that the position of the wheels is not symmetric. This happened because the cylinder was not created centered on the origin. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try adding an additional input parameter to the cylinder commands to tell OpenSCAD both wheels should be centered on the origin when first created. Is the position of your wheels symmetric now?</td> </tr> </table> <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''car_body_and_aligned_front_wheels.scad'' <pre> cube([60,20,10],center=true); translate([5,0,10 - 0.001]) cube([30,20,10],center=true); translate([-20,-15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true); translate([-20,15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true);</pre> </td> </tr> </table> [[File:Car body and aligned front wheels.jpg|680px]] == Completing your first model == <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try using what you have learned to add the rear missing wheels to the car. Try adding a connecting axle to the front and rear wheels.</td> </tr> </table> <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''completed_car.scad'' <pre> cube([60,20,10],center=true); translate([5,0,10 - 0.001]) cube([30,20,10],center=true); translate([-20,-15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true); translate([-20,15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true); translate([20,-15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true); translate([20,15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true); translate([-20,0,0]) rotate([90,0,0]) cylinder(h=30,r=2,center=true); translate([20,0,0]) rotate([90,0,0]) cylinder(h=30,r=2,center=true);</pre> </td> </tr> </table> [[File:Completed car.jpg|680px]] Notice on the model above, there is an overlap between the axles and the wheels that is equal to half the thickness of the wheels. If the model was created in a way that the wheels and the axles were just touching each other, then there would be a need to ensure a small overlap between them as was done with the two cubes of the car’s body. One thing you may have noticed is the resolution of the wheels. Until now you have been using OpenSCAD’s default resolution settings. There are special commands in OpenSCAD language which allow you to have full control over the resolution of your models. Increasing the resolution of your model will also increase the required rendering time every time you update your design. For this reason, it is advised that you keep the default resolution settings when you are building your model, and increase the resolution only after completing your design. Since the car example is completed, you can increase the resolution by adding the following two statements in your script. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> <pre> $fa = 1; $fs = 0.4;</pre> </td> </tr> </table> Try adding the above two statements at the beginning of the car’s script. Do you notice any changes in the resolution of the wheels? <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''completed_car_higher_resolution.scad'' <pre> $fa = 1; $fs = 0.4; cube([60,20,10],center=true); translate([5,0,10 - 0.001]) cube([30,20,10],center=true); translate([-20,-15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true); translate([-20,15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true); translate([20,-15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true); translate([20,15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true); translate([-20,0,0]) rotate([90,0,0]) cylinder(h=30,r=2,center=true); translate([20,0,0]) rotate([90,0,0]) cylinder(h=30,r=2,center=true);</pre> </td> </tr> </table> [[File:Completed car higher resolution.jpg|680px]] $fa and $fs are special variables that determine the resolution of the model according to the values that have been assigned to them. Their exact function will be explained later, and is something that you should not worry about yet. The only thing you need to keep in mind, is that you can add these two statements in any script to achieve a resolution that is universally good for 3D printing. These two statements will be used in all examples throughout the tutorial in order to have visually appealing renderings. Before sharing your script with your friends, it would be nice to include some comments to help them understand your script. You can use a double slash at the start of a line to write anything you like without affecting your model. By using a double slash, OpenSCAD knows that what follows is not part of the scripting language and simply ignores it. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try adding a comment above each statement to let your friends know what part of your model is created with each statement.</td> </tr> </table> <table class="wikitable mw-collapsible mw-collapsed" style="border: 2px solid MediumSeaGreen;"> <caption style="text-align: left; color: MediumSeaGreen;">Solution Code</caption> <tr> <td> ''completed_car_commented.scad'' <pre> $fa = 1; $fs = 0.4; // Car body base cube([60,20,10],center=true); // Car body top translate([5,0,10 - 0.001]) cube([30,20,10],center=true); // Front left wheel translate([-20,-15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true); // Front right wheel translate([-20,15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true); // Rear left wheel translate([20,-15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true); // Rear right wheel translate([20,15,0]) rotate([90,0,0]) cylinder(h=3,r=8,center=true); // Front axle translate([-20,0,0]) rotate([90,0,0]) cylinder(h=30,r=2,center=true); // Rear axle translate([20,0,0]) rotate([90,0,0]) cylinder(h=30,r=2,center=true);</pre> </td> </tr> </table> It’s time to save your model. Hit the save (third) icon on the action bar above the editor to save your script as a *.scad file. When you are creating a new model remember to save early, then save often, to avoid accidentally losing your work. If you would like to 3D print your car you can export it as an STL file. First click on the render (second) icon on the action bar below the viewport to generate the STL file, then click on the export as STL icon on the action bar above the editor, to save an STL file of your model. == Creating a second model == <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try using everything you learned to create a new simple model. It can be a house, an airplane or anything you like. Don’t worry about making your model look perfect, just experiment with your new skills! You will keep learning more techniques to create awesome models in the following chapters.</td> </tr> </table> {{BookCat}} g9vxqhtbnku44r5j5nyvmeion3pyyki OpenSCAD Tutorial/Chapter 5 0 410752 4656721 4374649 2026-08-07T23:09:14Z ~2026-43629-79 3619897 /* Creating and utilizing modules as separate scripts */ changed "be also" to "also be" 4656721 wikitext text/x-wiki {{Nav}} == Creating and utilizing modules as separate scripts == In the previous chapter you learned one of the most powerful features of OpenSCAD, the module, and how it can be used for parametric design. You also had the chance to separate the car into different modules and then recombine them to create a different type of vehicle. Using modules can also be seen as a way to organize your creations and to build your own library of objects. The wheel module could potentially be used in a plethora of designs, so it would be great to have it easily available whenever desired without having to redefine it inside the script of your current design. To do so you need to define and save the wheel module as a separate script. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Define the following simple_wheel module in a separate script file. In the same script make a call to the simple_wheel module so that you visually see what object this module creates. Save the script file as a scad file named simple_wheel.scad.</td> </tr> </table> <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''simple_wheel.scad'' <pre> $fa = 1; $fs = 0.4; module simple_wheel(wheel_radius=10, wheel_width=6) { rotate([90,0,0]) cylinder(h=wheel_width,r=wheel_radius,center=true); } simple_wheel();</pre> </td> </tr> </table> [[File:Simple wheel.jpg|680px]] Now it’s time to utilize this saved module in another design. First you need to create a new design. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Create a new script with the following car design. Give the script any name you like but save the script in the same working directory as the simple_wheel module.</td> </tr> </table> <table class="wikitable mw-collapsible mw-collapsed" style="border: 2px solid MediumSeaGreen;"> <caption style="text-align: left; color: MediumSeaGreen;">Code</caption> <tr> <td> ''car_with_simple_wheels.scad'' <pre> $fa = 1; $fs = 0.4; wheel_radius = 8; base_height = 10; top_height = 10; track = 30; // Car body base cube([60,20,base_height],center=true); // Car body top translate([5,0,base_height/2+top_height/2 - 0.001]) cube([30,20,top_height],center=true); // Front left wheel translate([-20,-track/2,0]) rotate([90,0,0]) cylinder(h=3,r=wheel_radius,center=true); // Front right wheel translate([-20,track/2,0]) rotate([90,0,0]) cylinder(h=3,r=wheel_radius,center=true); // Rear left wheel translate([20,-track/2,0]) rotate([90,0,0]) cylinder(h=3,r=wheel_radius,center=true); // Rear right wheel translate([20,track/2,0]) rotate([90,0,0]) cylinder(h=3,r=wheel_radius,center=true); // Front axle translate([-20,0,0]) rotate([90,0,0]) cylinder(h=track,r=2,center=true); // Rear axle translate([20,0,0]) rotate([90,0,0]) cylinder(h=track,r=2,center=true);</pre> </td> </tr> </table> [[File:Car with simple wheels.jpg|680px]] There are two ways in which the simple_wheel.scad script can be utilized in your car design. It can be either included or used. To include the script, you have to add the following statement at the top of car’s script. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> <pre> include <simple_wheel.scad></pre> </td> </tr> </table> [[File:Car with extra wheel from included module.jpg|680px]] You should notice that something unexpected happened. A wheel has been created at the origin. This is the object of the simple_wheel script. When you use include, OpenSCAD treats the whole external script that you are including as if it was a part of your current script. In the simple_wheel.scad script, aside from the simple_wheel module definition, there is also a call to the simple_wheel module which creates a wheel object. As a result of using the include command this object is also created in the car’s model. This is something that you are going to change by using the use instead of the include command, but don’t bother about it for a moment. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>The car’s wheels are currently created with the cylinder command. Since the simple_wheel.scad script has been included in the car’s script, the simple_wheel module should be available. Replace the cylinder commands with calls to the simple_wheel module. Do any rotate commands become unnecessary? The calls to the simple_wheel module shall not contain any definition of parameters.</td> </tr> </table> <table class="wikitable mw-collapsible mw-collapsed" style="border: 2px solid MediumSeaGreen;"> <caption style="text-align: left; color: MediumSeaGreen;">Code</caption> <tr> <td> ''car_with_wheels_created_by_included_module.scad'' <pre> include <simple_wheel.scad> $fa = 1; $fs = 0.4; wheel_radius = 8; base_height = 10; top_height = 10; track = 30; // Car body base cube([60,20,base_height],center=true); // Car body top translate([5,0,base_height/2+top_height/2 - 0.001]) cube([30,20,top_height],center=true); // Front left wheel translate([-20,-track/2,0]) simple_wheel(); // Front right wheel translate([-20,track/2,0]) simple_wheel(); // Rear left wheel translate([20,-track/2,0]) simple_wheel(); // Rear right wheel translate([20,track/2,0]) simple_wheel(); // Front axle translate([-20,0,0]) rotate([90,0,0]) cylinder(h=track,r=2,center=true); // Rear axle translate([20,0,0]) rotate([90,0,0]) cylinder(h=track,r=2,center=true);</pre> </td> </tr> </table> [[File:Car with wheels created by included module.jpg|680px]] <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Define the wheel_radius and wheel_width parameters in the calls to the simple_wheel module. To do so use the existing wheel_radius variable as well as a wheel_width variable that you are going to define. Set the variables equal to values that you like.</td> </tr> </table> <table class="wikitable mw-collapsible mw-collapsed" style="border: 2px solid MediumSeaGreen;"> <caption style="text-align: left; color: MediumSeaGreen;">Code</caption> <tr> <td> ''car_with_narrower_wheels_created_by_included_module.scad'' <pre> include <simple_wheel.scad> $fa = 1; $fs = 0.4; wheel_radius = 8; wheel_width = 4; base_height = 10; top_height = 10; track = 30; // Car body base cube([60,20,base_height],center=true); // Car body top translate([5,0,base_height/2+top_height/2 - 0.001]) cube([30,20,top_height],center=true); // Front left wheel translate([-20,-track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); // Front right wheel translate([-20,track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); // Rear left wheel translate([20,-track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); // Rear right wheel translate([20,track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); // Front axle translate([-20,0,0]) rotate([90,0,0]) cylinder(h=track,r=2,center=true); // Rear axle translate([20,0,0]) rotate([90,0,0]) cylinder(h=track,r=2,center=true);</pre> </td> </tr> </table> [[File:Car with narrower wheels created by included module.jpg|680px]] From the above examples you should keep in mind that when you include an external script in your current script, the modules of the external script become available in your current script, but additionally any objects that were created in the external script are also created in the current one. Since the wheel at the origin is not desired in this case, it’s time to use the use command instead of the include. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Replace the include command of the last example with a use command.</td> </tr> </table> <table class="wikitable mw-collapsible mw-collapsed" style="border: 2px solid MediumSeaGreen;"> <caption style="text-align: left; color: MediumSeaGreen;">Code</caption> <tr> <td> ''car_with_wheels_created_by_used_module.scad'' <pre> … use <simple_wheel.scad> …</pre> </td> </tr> </table> [[File:Car with wheels created by used module.jpg|680px]] You should notice that a wheel is no longer created at the origin. You should keep in mind that the use command works like the include command with the only difference being that the use command doesn’t create any objects, but rather just makes the modules of the external script available in the current script. == Using a script with multiple modules == In the previous example, the simple_wheel.scad script had only one module. The simple_wheel module. This doesn’t have to always be the case. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Add the following module in the simple_wheel.scad script. Rename the simple_wheel.scad script to wheels.scad.</td> </tr> </table> <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> <pre> module complex_wheel(wheel_radius=10, side_spheres_radius=50, hub_thickness=4, cylinder_radius=2) { cylinder_height=2*wheel_radius; difference() { // Wheel sphere sphere(r=wheel_radius); // Side sphere 1 translate([0,side_spheres_radius + hub_thickness/2,0]) sphere(r=side_spheres_radius); // Side sphere 2 translate([0,- (side_spheres_radius + hub_thickness/2),0]) sphere(r=side_spheres_radius); // Cylinder 1 translate([wheel_radius/2,0,0]) rotate([90,0,0]) cylinder(h=cylinder_height,r=cylinder_radius,center=true); // Cylinder 2 translate([0,0,wheel_radius/2]) rotate([90,0,0]) cylinder(h=cylinder_height,r=cylinder_radius,center=true); // Cylinder 3 translate([-wheel_radius/2,0,0]) rotate([90,0,0]) cylinder(h=cylinder_height,r=cylinder_radius,center=true); // Cylinder 4 translate([0,0,-wheel_radius/2]) rotate([90,0,0]) cylinder(h=cylinder_height,r=cylinder_radius,center=true); } }</pre> </td> </tr> </table> <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Use the wheels.scad script in your car script. Use the simple_wheel module to create the front wheels and the complex_wheel module to create the rear wheels.</td> </tr> </table> <table class="wikitable mw-collapsible mw-collapsed" style="border: 2px solid MediumSeaGreen;"> <caption style="text-align: left; color: MediumSeaGreen;">Code</caption> <tr> <td> ''car_with_different_wheels_from_used_modules.scad'' <pre> use <wheels.scad> wheel_radius = 8; wheel_width = 4; base_height = 10; top_height = 10; track = 30; // Car body base cube([60,20,base_height],center=true); // Car body top translate([5,0,base_height/2+top_height/2 - 0.001]) cube([30,20,top_height],center=true); // Front left wheel translate([-20,-track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); // Front right wheel translate([-20,track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); // Rear left wheel translate([20,-track/2,0]) complex_wheel(); // Rear right wheel translate([20,track/2,0]) complex_wheel(); // Front axle translate([-20,0,0]) rotate([90,0,0]) cylinder(h=track,r=2,center=true); // Rear axle translate([20,0,0]) rotate([90,0,0]) cylinder(h=track,r=2,center=true);</pre> </td> </tr> </table> [[File:Car with different wheels from used modules.jpg|680px]] With this example it should be clear that the name of the script doesn’t have to be the same as the name of the module as well as that a script can contain multiple modules. There is no right or wrong way on how you should go about organizing your library of modules. In the last example a wheels.scad script which defines the different wheel modules was used. Alternatively you could have saved each module as a separate *.scad script. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Create a vehicle_parts.scad script. Inside this script define a simple_wheel, complex_wheel, body and axle module. Use this script in another script named vehicle_concept to make the corresponding modules available. Use the modules to create a vehicle concept that looks similar to the following.</td> </tr> </table> [[File:Car with ten wheels.jpg|680px]] <table class="wikitable mw-collapsible mw-collapsed" style="border: 2px solid MediumSeaGreen;"> <caption style="text-align: left; color: MediumSeaGreen;">Code</caption> <tr> <td> ''car_with_ten_wheels.scad'' <pre> use <vehicle_parts.scad> $fa = 1; $fs = 0.4; wheel_radius = 8; wheel_width = 4; base_length = 60; top_length = 80; track = 30; wheelbase_1 = 38; wheelbase_2 = 72; z_offset = 10; body(base_length=base_length, top_length=top_length, top_offset=0); // Front left wheel translate([-wheelbase_2/2,-track/2,z_offset]) complex_wheel(); // Front right wheel translate([-wheelbase_2/2,track/2,z_offset]) complex_wheel(); // Rear left wheel translate([wheelbase_2/2,-track/2,z_offset]) complex_wheel(); // Rear right wheel translate([wheelbase_2/2,track/2,z_offset]) complex_wheel(); // Front axle translate([-wheelbase_2/2,0,z_offset]) axle(track=track); // Rear axle translate([wheelbase_2/2,0,z_offset]) axle(track=track); // Middle front left wheel translate([-wheelbase_1/2,-track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); // Middle front right wheel translate([-wheelbase_1/2,track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); // Middle left wheel translate([0,-track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); // Middle right wheel translate([0,track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); // Middle rear left wheel translate([wheelbase_1/2,-track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); // Middle rear right wheel translate([wheelbase_1/2,track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); // Middle front axle translate([-wheelbase_1/2,0,0]) axle(track=track); // Middle axle translate([0,0,0]) axle(track=track); // Middle rear axle translate([wheelbase_1/2,0,0]) axle(track=track);</pre> </td> </tr> </table> == Using the MCAD library == The MCAD library (https://github.com/openscad/MCAD) is a library of components commonly used in mechanical designs that comes with OpenSCAD. You can utilize objects of the MCAD library by using the corresponding OpenSCAD script and calling the desired modules. For example, there is a boxes.scad script which contains the model of a rounded box. The boxes.scad script contains one module, which can be used to create the corresponding box. You can open this script to check what the parameters of this module are and then use it to add rounded boxes in your design. You can create a fully rounded box with side lengths of 10, 20 and 30 units as well as fillet radius of 3 units using the following script. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''completely_rounded_box.scad'' <pre> use <MCAD/boxes.scad> $fa=1; $fs=0.4; roundedBox(size=[10,20,30],radius=3,sidesonly=false);</pre> </td> </tr> </table> [[File:Completely rounded box.jpg|680px]] By setting the sidesonly parameter equal to true you can create a box of similar dimension that has only 4 rounded sides. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''sides_only_rounded_box.scad'' <pre> use <MCAD/boxes.scad> $fa=1; $fs=0.4; roundedBox(size=[10,20,30],radius=3,sidesonly=true);</pre> </td> </tr> </table> [[File:Sides only rounded box.jpg|680px]] The boxes.scad script is located in the MCAD directory which is under the libraries directory. The latter can be found in OpenSCAD’s installation folder. Should you wish to have any of your own libraries accessible from any directory, you can add it in the libraries directory. You can also browse other available OpenSCAD libraries at https://www.openscad.org/libraries.html. Though, you should be aware that there are a very wide number of libraries available on GitHub and Thingiverse that far exceed those linked at OpenSCAD’s libraries page. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Use the boxes.scad script of the MCAD library to create a fully rounded box with side lengths of 50, 20 and 15 units as well as fillet radius of 5 units.</td> </tr> </table> <table class="wikitable mw-collapsible mw-collapsed" style="border: 2px solid MediumSeaGreen;"> <caption style="text-align: left; color: MediumSeaGreen;">Code</caption> <tr> <td> ''horizontal_completely_rounded_box.scad'' <pre> use <MCAD/boxes.scad> $fa=1; $fs=0.4; roundedBox(size=[50,20,15],radius=5,sidesonly=false);</pre> </td> </tr> </table> [[File:Horizontal completely rounded box.jpg|680px]] <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Use the boxes.scad script of the MCAD library to create a rounded box with only 4 rounded sides with side lengths of 50, 50 and 15 units as well as fillet radius of 20 units.</td> </tr> </table> <table class="wikitable mw-collapsible mw-collapsed" style="border: 2px solid MediumSeaGreen;"> <caption style="text-align: left; color: MediumSeaGreen;">Code</caption> <tr> <td> ''short_sides_only_rounded_box.scad'' <pre> use <MCAD/boxes.scad> $fa=1; $fs=0.4; roundedBox(size=[50,50,15],radius=20,sidesonly=true);</pre> </td> </tr> </table> [[File:Short sides only rounded box.jpg|680px]] == Creating even more parameterizable modules == So far, the only input to the modules that have been created was through the module’s input parameters that were defined for each case. The complex_wheel module for example was able to create a plethora of parameterized wheels according to the chosen input parameters such as wheel_radius, hub_thickness etc. In your vehicle designs you have been using body, wheel and axle modules which when combined can produce various types of vehicles. In all the vehicle designs, two wheels along with an axle have been used together to form a set of wheels. You may have considered the need for an axle_wheelset module to simultaneously define all three objects with a single statement. And you would have been right to consider it! But there is a reason this module hasn’t been created yet, and you are now going to find out why. Throughout the previous chapters you have created two different wheel designs (simple_wheel and complex_wheel) and a single axle design. You can use your existing knowledge to combine the simple_wheel and axle modules in the following way. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''axle_with_simple_wheelset_from_module.scad'' <pre> use <vehicle_parts.scad> $fa = 1; $fs = 0.4; module axle_wheelset(wheel_radius=10, wheel_width=6, track=35, radius=2) { translate([0,track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); axle(track=track, radius=radius); translate([0,-track/2,0]) simple_wheel(wheel_radius=wheel_radius, wheel_width=wheel_width); } axle_wheelset();</pre> </td> </tr> </table> [[File:Axle with simple wheelset from module.jpg|680px]] If you simply wanted to only use the above set of simple_wheels, that approach would be just fine. The problem though is that this axle_wheelset module is not really flexible and parameterizable to the desired degree. On one hand you can customize all input parameters, but on the other hand, could you swap the simple_wheel design with the complex one? The fact is that with the above approach in order to do so you would have to define a completely new module. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''axle_with_complex_wheelset_from_module.scad'' <pre> use <vehicle_parts.scad> $fa = 1; $fs = 0.4; module axle_wheelset_complex(wheel_radius=10, side_spheres_radius=50, hub_thickness=4, cylinder_radius=2, track=35, radius=2) { translate([0,track/2,0]) complex_wheel(wheel_radius=10, side_spheres_radius=50, hub_thickness=4, cylinder_radius=2); axle(track=track, radius=radius); translate([0,-track/2,0]) complex_wheel(wheel_radius=10, side_spheres_radius=50, hub_thickness=4, cylinder_radius=2); } axle_wheelset_complex();</pre> </td> </tr> </table> [[File:Axle with complex wheelset from module.jpg|680px]] If you can’t see yet how this is a problem, imagine the case where you had six different wheel designs and two different axle designs in your library. If you wanted to implement the axle_wheelset module you would need to define 12 different modules to cover all combinations of wheel and axle designs. Furthermore, if you were to add a new wheel or axle design in your collection, you would need to define a number of additional axle_wheelset modules which would make maintaining your library very hard. The good thing is that the two modules above look very similar. If you could keep the structure of the module the same but have the specific choice of wheel design parameterized, then the problem could be solved. Fortunately, OpenSCAD supports this functionality and parameterizing the specific choice of wheel design can be achieved in the following way. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''axle_with_simple_wheelset_from_parameterized_module.scad'' <pre> use <vehicle_parts.scad> $fa = 1; $fs = 0.4; module axle_wheelset(track=35, radius=2) { translate([0,track/2,0]) children(0); axle(track=track, radius=radius); translate([0,-track/2,0]) children(0); } axle_wheelset() { simple_wheel(); }</pre> </td> </tr> </table> [[File:Axle with simple wheelset from parameterized module.jpg|680px]] The wheel design can now be effortlessly changed, making this module a truly parametric one. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''axle_with_complex_wheelset_from_parameterized_module.scad'' <pre> axle_wheelset() { complex_wheel(); }</pre> </td> </tr> </table> [[File:Axle with complex wheelset from parameterized module.jpg|680px]] <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''axle_with_large_complex_wheelset_from_parameterized_module.scad'' <pre> axle_wheelset(radius=5) { complex_wheel(wheel_radius=20); }</pre> </td> </tr> </table> [[File:Axle with large complex wheelset from parameterized module.jpg|680px]] There is a very important concept that you should grasp here. The first thing you should notice is the definition of this new module. This new module is similar to the previous ones with the difference that the command children(0) is used in place of a call to a specific wheel module. The second thing you should notice is the call to the axle_wheelset module. The call to the axle_wheelset module contains a pair of curly brackets inside of which the specific wheel design to be used by module is defined each time. OpenSCAD keeps an ordered list of the objects that have been defined inside the curly brackets and numbers them starting from zero. These objects can then be referenced by the children command. The number that is passed inside the children command corresponds to the first, second, third etc. object that was defined inside the curly brackets, counting from zero. In the above example, only one object is defined inside the curly brackets. That is either a simple_wheel or a complex wheel object. This object is created every time the children(0) command is used. The children command is in essence a way to pass objects as input to a module. The next examples can help make this concept more concrete. In the previous example there is no way to use the axle_wheelset module and end up creating an axle that has different wheels on each side. This would not happen even if you passed/defined two different objects inside the curly brackets when calling the axle_wheelset module, because only the first one, children(0), is referenced for both sides of the axle. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''axle_with_same_wheels_from_module.scad'' <pre> axle_wheelset() { complex_wheel(); simple_wheel(); }</pre> </td> </tr> </table> [[File:Axle with same wheels from module.jpg|680px]] In order to create an axle with different wheels on each side, the definition of the of the axle_wheelset module would need to be modified. Instead of referencing the first object, children(0), for both sides, the axle_wheelset module would need to reference the first object, children(0), for one side and the second object, children(1), for the second side. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> <pre> module axle_wheelset(track=35, radius=2) { translate([0,track/2,0]) children(0); axle(track=track, radius=radius); translate([0,-track/2,0]) children(1); }</pre> </td> </tr> </table> By defining two different wheel objects inside the curly brackets, the following model would be created. <table class="wikitable" style="border: 2px solid Gold;"> <caption style="text-align: left; color: Gold;">Code</caption> <tr> <td> ''axle_with_different_wheels_from_parameterized_module.scad'' <pre> axle_wheelset() { complex_wheel(); simple_wheel(); }</pre> </td> </tr> </table> [[File:Axle with different wheels from parameterized module.jpg|680px]] <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try swapping the order in which the wheels are defined inside the curly brackets when calling the axle_wheelset module. What happens?</td> </tr> </table> <table class="wikitable mw-collapsible mw-collapsed" style="border: 2px solid MediumSeaGreen;"> <caption style="text-align: left; color: MediumSeaGreen;">Code</caption> <tr> <td> ''axle_with_flipped_different_wheels_from_parameterized_module.scad'' <pre> axle_wheelset() { simple_wheel(); complex_wheel(); }</pre> </td> </tr> </table> [[File:Axle with flipped different wheels from parameterized module.jpg|680px]] <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Try defining only one wheel inside the curly brackets? Do you get an error message?</td> </tr> </table> <table class="wikitable mw-collapsible mw-collapsed" style="border: 2px solid MediumSeaGreen;"> <caption style="text-align: left; color: MediumSeaGreen;">Code</caption> <tr> <td> ''axle_with_missing_wheel_from_parameterized_module.scad'' <pre> axle_wheelset() { simple_wheel(); }</pre> </td> </tr> </table> [[File:Axle with missing wheel from parameterized module.jpg|680px]] <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Add an axle_wheel module on the vehicle_parts.scad script. Make use of the children command to parameterize the specific choice of wheel design. Use the vehicle_parts.scad script on another script to create any vehicle design that you like.</td> </tr> </table> == Challenge == The material you have been learning in the last two chapters gives you a powerful set of tools to start creating your own library of objects that can be flexibly combined and customized to create new designs. <table class="wikitable" style="border: 2px solid DodgerBlue;"> <caption style="text-align: left; color: DodgerBlue;">Exercise</caption> <tr> <td>Think of any model that you would like to create. Break it down into different parts. Come up with alternative designs for each part and define modules that create them. What should the input parameters of each module be? Define one or more modules using the children functionality in order to flexibly combine the various parts that you have created.</td> </tr> </table> {{BookCat}} lpb5da8ys3krog708zoqwh4d35xm0kc AI Art Generation Handbook/How does AI generate art ? 0 450374 4656645 4533771 2026-08-07T15:09:00Z ~2026-43651-01 3619825 4656645 wikitext text/x-wiki <big>The rise of artificial intelligence has led to a surge in the creation and enhancement of AI-generated images (especially in 2022, after [https://web.archive.org/web/20240613122128/https://openai.com/index/dall-e-now-available-in-beta/ the release of DALL-E2] ) resulting in highly detailed and imaginative artwork. This development might prompt user to ask, “How does AI produce art?"</big> <big>Humans usually draw inspiration from their surroundings—such as forests, urban landscapes, and their own reflections to put their inspirations into their art.</big> <big>Similarly, AI art involves the creation of artwork with the help of generative AI. This technology identifies patterns within large datasets and uses this knowledge to generate new content. To create AI "art", one needs an AI art generator, like Stable Diffusion, and a concept. The AI "artist" inputs a detailed prompt, which the tool then interprets to generate image options based on the description provided.</big> <big>Artist '''<u>[[wikipedia:Vera_Molnár|Vera Molnár]]</u>''', a Hungrarian artist began experimenting with early programming languages to produce randomly generated artwork in 1968. Considered a pioneer in generative art, her geometric creations are included in major museum collections. She is considered as a pioneer in generative art, her geometric creations are included in major museum collections.</big> [[File:Moving From unknown to known feature spaces based on TS-ELM with random kernels and connections.tif|left|frameless|250x250px]] <big>The core technology behind this capability is called a '''neural network'''. A neural network is a sophisticated mathematical system, or algorithm, that is designed to mimics biological neural networks in the human brain and functions to recognize patterns in extensive datasets.</big> <big>The neural network have few components: [3]</big> <big>(i) '''Input Layer''': This layer receives the initial input data, such as an image, text, or numerical values.</big> <big>(ii) '''Hidden Layer''': They are intermediate layers between the input and output layers, where most of the mathematical operations (e.g matrix multiplications) occurs.</big> <big>(iii) '''Output Layer''': This layer produces the final output of the neural network, which is the generated output (e.g., an image or text).</big> <big>(iv) '''Connections (Weights and Biases)''': Neurons in adjacent layers are connected by weights, which determine the strength of the connections. Biases are additional parameters that shift the activation of a neuron.</big> <big>When a user prompt an AI generator to depict a dog, the neural network draws on the vast amount of information it has been trained on to create a new image. This process involves complex layers of interconnected nodes that simulate the way a human brain processes information. The role as the AI artist is to refine these generated images, guiding the AI models to produce specific scenes, such as a dog impersonate a French wearing beret, dog sitting in a bar or a dog dancing in a kitchen. These neural networks are brimming with the trained data, but it is the creativity and direction from the user that truly shapes AI-generated art.</big> <gallery widths="300" heights="250"> File:A Shiba Inu dog wearing a beret and black turtleneck DALLE2.jpg|Dog wearing a beret by [[User:Di (they-them)|<bdi>''Di (they-them)''</bdi>]] File:Brokers bro.png|Dog sitting at a bar by [[User:Michal.palasek|<bdi>''Michal.palasek''</bdi>]] </gallery> <big>There are 2 major parts of AI Art : Training and Inferences [4]</big> <big>'''Training''':Training is the process of teaching the neural network model to learn the patterns and relationships present in the training data.</big> <big>'''Inference:''' Inference is the process of using the trained model to make predictions or generate outputs on new, previously unseen data.</big> <big>As in the field of artificial intelligence, the training data is the heart of generative AI. However, as saying goes, '''quality over quantity.''' All in all, general consensus is the quality of the image aesthetic and better image description / captioning is much better than the "token" of AI model it is able to be processed. All of the AI model is trained using pair of text captions - images ,which one of the most popular method is using CLIP [5]. Here is the known image dataset training size</big> [[File:Active_Learning_Algorithm_Used_To_Train_Majority_of_Text2Image_Model.png|right|frameless|440x440px]] {| class="wikitable" |+ !Entity !Image Dataset Training Size |- |Midjourney |~1B+ [a] |- |DALL-E2 |250M [b] |- |Craiyon |15M [c] |- |Google Imagen |860M [d] |- |Stable Diffusion 1.5 |400M [e] |- |Stable Diffusion XL (SDXL) |1.8M+1.2M [f] |} <big>The picture shows how the AI Text-to-Art ''<u>oversimplifications</u>'' of process flow chart of converting from words and process it until the images is produced.</big> [[File:Oversimplification on how AI Model Text 2 Image works.png|frameless|550x550px]] <big>(A) The prompt text of the input in words form are being "''tokenized''" into tokens by the '''Text Encoders'''</big> <big>(B) Then tokens are mapped to a dense vector representation (''embedding vector''), capturing semantic and contextual information about the token.</big> <big>(C) The '''[[AI Art Generation Handbook/Diffusion Model|Diffusion Model]]''' are generating the images with the forward diffusion techniques based on the embedding vectors</big> <big>(D) The dense vector representation (''latent vector'') represent the latent image representation essential visual features, content, and attributes of the image to be generated, compressed into a latent space representation.</big> <big>(D) '''Image Decoders''' are synthesizing visual features like textures, colors, shapes, etc. based on the information encoded in latent vector. After synthetizing the images , it will upscaling the images whilst performing enhancement to increase image aesthetic.</big> == References == [1] https://builtin.com/artificial-intelligence/how-does-AI-generated-art-work [2] https://www.adobe.com/products/firefly/discover/what-is-ai-art.html [3] https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi [4]https://blogs.nvidia.com/blog/difference-deep-learning-training-inference-ai/ [5] https://arxiv.org/abs/2204.06125 [6] https://www.youtube.com/watch?v=9YrYDqhJdPw [a] https://www.theregister.com/2022/08/01/david_holz_midjourney/ [b] https://cdn.openai.com/papers/dall-e-2.pdf [c] https://arxiv.org/pdf/2208.09333 [d] https://arxiv.org/pdf/2205.11487 [e] https://arxiv.org/pdf/2112.10752 [f] https://clarifai.com/stability-ai/stable-diffusion-2/models/stable-diffusion-xl {{BookCat}} 17kcc7x5rrpubrdankqd444ykofl3fa User:Arlo Barnes/sandbox 2 452305 4656717 4238921 2026-08-07T22:16:45Z Arlo Barnes 381814 prefix index 4656717 wikitext text/x-wiki [[special:prefixindex]] * [[../glossing]] * [[../myrmecology]] * [[../drinking water]] 2zs7up0bvq5fjhxfyti5ufo9eqzpdg0 User:JustTheFacts33/sandbox 2 468255 4656663 4632652 2026-08-07T16:35:12Z JustTheFacts33 3434282 /* Current factories */ 4656663 wikitext text/x-wiki This is a '''history of [[w:General Motors|General Motors]] factories''' that are being or have been used to produce cars, vans, SUVs, trucks, buses, and automobile components.<ref name=GMfacilities>[https://web.archive.org/web/20080614231130/http://www.gm.com/corporate/responsibility/environment/plants/index.jsp GM facilities map]. Retrieved on July 8, 2009.</ref> The factories are sometimes idled for re-tooling. Originally, GM's different divisions each had their own serial number formats and plant codes. Chevrolet cars, Pontiac, Oldsmobile, and Buick unified their serial number formats and plant codes in 1965. Cadillac adopted the same unified format in 1971. Chevrolet trucks and GMC trucks unified their serial number formats in 1972. Chevrolet trucks and GMC trucks were already using the same plant codes from 1964 and those were unified with the car divisions (other than Cadillac) in 1965. Cadillac did not use plant codes before 1971 as all Cadillacs were made at Cadillac's home plant in Detroit until 1971. In 1971, Cadillacs began to be made in more than one plant so they started using plant codes, using the same codes that the other GM car divisions were using since 1965. GM Canada used the same format as GM USA from 1967. For US-built models: For '''Chevrolet cars including El Camino''': Plant code was the 1st or 1st 2 digits of the serial number from 1928-1952. Plant code was the 4th position of the serial number from 1953-1957 6-cylinder models. Plant code was the 5th position of the serial number from 1955-1957 V8 models. Plant code was the 4th position of the serial number from 1958-1959. Plant code was the 6th position of the serial number from 1960-1964. Plant code was the letter or number in the 7th position of the serial number from 1965-1980. For '''Chevrolet trucks''': Plant code was the 1st or 1st 2 digits of the serial number from 1947-1952. Plant code was the 4th position of the serial number from 1953-1954 & for the 1955 1st Series models. Plant code was the 5th position of the serial number for 1955 2nd Series models and 1956-1959 models with 6-cylinder engines. Plant code was the 6th position of the serial number for 1955 2nd Series models and 1956-1959 models with V8 engines. Plant code was the 6th position of the serial number from 1960-1971. Plant code was the letter or number in the 7th position of the serial number from 1972-1980. For '''Pontiac''': Plant code was the 1st letter in the serial number from 1936-1938 for plants other than Pontiac, MI (Pontiac, MI omitted the 1st letter so the 1st position was a number rather than a letter for Pontiac, MI as Pontiac, MI didn't use a specific plant code). Plant code was the 1st position of the serial number from 1939-1958. Plant code was the 4th position of the serial number from 1959-1964. Plant code was the letter or number in the 7th position of the serial number from 1965-1980. For '''Oldsmobile''': Plant code was the 1st of 2 letters in the serial number from 1937-1940 for plants other than Lansing (Lansing omitted the 1st letter so there was only 1 letter before the numbers rather than 2 letters for Linden & Southgate as Lansing didn't have a specific plant code). Plant code was the letter in the 3rd position of the serial number from 1941-1948 for plants other than Lansing (Lansing omitted the letter and didn't have a specific plant code). Plant code was the 4th position of the serial number from 1949-1964. Plant code was the letter or number in the 7th position of the serial number from 1965-1980. For '''Buick''': Plant code was the number in the 1st position of the serial number from 1938-1953. Plant code was the number in the 3rd position of the serial number from 1954-1964. Plant code was the letter or number in the 7th position of the serial number from 1965-1980. For '''Cadillac''': Plant code was the letter or number in the 7th position of the serial number from 1971-1980. (Cadillac did not use plant codes before 1971 as all Cadillacs were made at Cadillac's home plant in Detroit until 1971.) For '''GMC Sprint & Caballero''': Plant code was the letter or number in the 7th position of the serial number from 1971-1980. For '''GMC trucks''': Plant code was the 6th position of the serial number from 1952-1954 & for 1955 1st Series models with manual transmission. Plant code was the 7th position of the serial number from 1952-1954 & for 1955 1st Series models with automatic transmission. Plant code was the 4th position of the serial number for 1955 2nd Series models and 1956-1959 models with 6-cylinder engines. Plant code was the 5th position of the serial number for 1955 2nd Series models and 1956-1959 models with V8 engines. Plant code was the 5th position of the serial number for 1960-1966 models with 2wd and V6 or V8 engines. Plant code was the 6th position of the serial number for 1960-1966 models with inline-6 engines or with 4wd. Plant code was the 7th position of the serial number from 1967-1971 (most models had a dash in the 6th position except for some models that had a special designation indicated in the 6th position). Plant code was the letter or number in the 7th position of the serial number from 1972-1980. All models from 1981 on have the plant code in the 11th position as per standardized VIN regulations. The above applies to Canadian-built models from 1967 on. ==Current factories== {| class="wikitable sortable" style="font-size:90%" !VIN !! Name !! City/State !! Country !! class="unsortable" | Products !! Opened !! Idled !! class="unsortable" | Comments |- |R (1963-1964 [[w:Chevrolet|Chevrolet]] and 1965-present)<br /><br />T (Pre-1965 [[w:Oldsmobile|Oldsmobile]] and Pre-1960 [[w:Pontiac (automobile)|Pontiac]])<br /><br />A (1960-1964 [[w:Pontiac (automobile)|Pontiac]])<br /><br />8 (Pre-1964 [[w:Buick|Buick]])||[[w:Arlington Assembly|Arlington Assembly]]||[[w:Arlington, Texas|Arlington, Texas]]||[[w:United States|United States]]||[[w:GMT T1XX|T1XX]] SUVs (2021-):<br /> [[w:Chevrolet Tahoe#Fifth generation (2021)|Chevrolet Tahoe]]<br />[[w:Chevrolet Suburban#Twelfth generation (2021)|Chevrolet Suburban]]<br />[[w:Chevrolet Tahoe#Yukon|GMC Yukon]]<br />[[w:Chevrolet Suburban#Yukon XL|GMC Yukon XL]]<br />[[w:Cadillac Escalade#Fifth generation (2021)|Cadillac Escalade]]<br />[[w:Cadillac Escalade#Fifth generation (2021)|Cadillac Escalade ESV]] ||1954||&nbsp;||Located at 2525 E Abram St.<br />Was originally part of the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. Production began on January 6, 1954. The first vehicle produced was a 1954 Pontiac Chieftain 4-door. Arlington began making Chevrolet passenger cars for 1963. BOP Assembly Division became GM Assembly Division in 1965. Arlington began making midsize cars for 1968 but focused exclusively on midsize cars from 1971-1987. Arlington resumed making full-size cars for 1988 for the first time since 1970. Arlington focused exclusively on rwd, full-size cars from 1988-1996. When Willow Run Assembly closed in 1993, Arlington became GM's only factory still building traditional body-on-frame, rwd, full-size cars. Passenger car production ended in 1996. It's interesting to note that Arlington has never built any fwd vehicles or any unibody vehicles. Arlington was then converted to build full-size SUVs. SUV production began for 1998. Full-size pickups were also built for 1998-2000. Arlington Assembly has produced models for all of GM's primary American brands: Chevrolet, Pontiac, Oldsmobile, Buick, Cadillac, and GMC. Arlington Assembly has produced over 13 million vehicles. A new 129,250-square-foot body shop on the plant's west side was announced in 2011 as part of retooling for the K2XX generation SUVs launched in 2014. A new stamping plant was announced in 2012 and opened in 2013 at Arlington Assembly, replacing stampings previously sourced from GM stamping plants elsewhere in the US.<br /> A $1.4 billion plant upgrade was completed to build the <br /> T1XX generation SUVs beginning in 2020. It included a new <br /> 1 million sq. ft. body shop & a 600,000-sq. ft. extension to the paint shop. The general assembly area was also upgraded. <br /> Past models:<br /> [[w:GM A platform (RWD)|GM A platform (RWD)]] (intermediate): [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1970-1977), [[w:Chevrolet El Camino|Chevrolet El Camino]] (1974-1981), [[w:Chevrolet Malibu|Chevrolet Malibu]] (1978-1981), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1970-1981), [[w:GMC Sprint|GMC Sprint]] (1974-1977), [[w:GMC Caballero|GMC Caballero]] (1978-1981), [[w:Oldsmobile Cutlass|Oldsmobile Cutlass]] (1971-1981), [[w:Oldsmobile Cutlass Supreme|Oldsmobile Cutlass Supreme]] (1971-1981), [[w:Oldsmobile 442|Oldsmobile 442]] (1971-1977), [[w:Pontiac GTO|Pontiac GTO]] (1968-1970), [[w:Pontiac LeMans|Pontiac LeMans]] (1968-1970), [[w:Pontiac Tempest|Pontiac Tempest]] (1968-1970)<br /> [[w:General Motors G platform (1969)|GM G platform (RWD) 1982-1988]]: [[w:Buick Regal|Buick Regal]] (1982-1983), [[w:Chevrolet El Camino|Chevrolet El Camino]] (1982-1984), [[w:Chevrolet Malibu|Chevrolet Malibu]] (1982-1983), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1982-1987), [[w:GMC Caballero|GMC Caballero]] (1982-1984), [[w:Oldsmobile Cutlass Supreme|Oldsmobile Cutlass Supreme]] (1982-1987), [[w:Oldsmobile 442|Oldsmobile 442]] (1985).<br /> [[w:General Motors A platform (1925)|GM full-size A platform]]: [[w:Pontiac Chieftain|Pontiac Chieftain]] (1954-1957), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1954-1957)<br /> [[w:GM B platform|GM B platform]]: [[w:Buick Century#Second generation (1954–1958)|Buick Century]] (1954-1958), [[w:Buick Invicta|Buick Invicta]] (1959-1963), [[w:Buick LeSabre|Buick LeSabre]] (1959-1960), [[w:Buick Roadmaster#1991–1996|Buick Roadmaster sedan]] (1992-1996), [[w:Buick Estate#1991–1996|Buick Roadmaster Estate wagon]] (1994-1996), [[w:Buick Special#1949–1958|Buick Special]] (1954-1958), [[w:Buick Wildcat|Buick Wildcat]] (1963), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1963-1970), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1963-1970), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1970, 1988-1996), [[w:Chevrolet Impala|Chevrolet Impala]] (1963-1970), [[w:Chevrolet Impala#Seventh generation (Impala SS, 1994–1996)|Chevrolet Impala SS]] (1994-1996), [[w:Oldsmobile 88|Oldsmobile 88]] (1955-1964), [[w:Oldsmobile Custom Cruiser#Second generation (1977–1990)|Oldsmobile Custom Cruiser]] (1988-1990), [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1966), [[w:Pontiac 2+2|Pontiac 2+2]] (1964-1967), [[w:Pontiac Bonneville|Pontiac Bonneville]] (1959-1968), [[w:Pontiac Catalina|Pontiac Catalina]] (1959-1970), [[w:Pontiac Grand Prix|Pontiac Grand Prix]] (1962-65, 1967-68), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1963, 1966), [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1960-1961).<br />[[w:General Motors C platform (RWD)|GM C platform (RWD)]]: [[w:Buick Electra|Buick Electra]] (1959-1963), [[w:Buick Limited#1958 Limited|Buick Limited]] (1958), [[w:Buick Roadmaster|Buick Roadmaster]] (1955-1958), [[w:Buick Super|Buick Super]] (1955-1958), [[w:Oldsmobile 98|Oldsmobile 98]] (1954-1964) <br /> [[w:GM D platform|GM D platform]]: [[w:Cadillac Brougham|Cadillac Brougham]] (1988-1992), [[w:Cadillac Fleetwood#Rear-wheel drive 1993–1996|Cadillac Fleetwood]] (1993-1996) <br />[[w:GMT400|GMT400]] pickups: [[w:Chevrolet C/K (fourth generation)|Chevrolet C/K]] (1998-2000), [[w:Chevrolet C/K (fourth generation)|GMC Sierra]] (1998-2000).<br /> [[w:GMT400|GMT400]] SUVs: [[w:Chevrolet Tahoe#First generation (1992)|Chevrolet Tahoe]] (1998-1999), [[w:Chevrolet Tahoe#Tahoe Limited and Tahoe Z71|Chevrolet Tahoe Limited and Z71]] (2000), [[w:Chevrolet Tahoe#First generation (1992)|GMC Yukon]] (1998-1999), [[w:Chevrolet Tahoe#GMC Yukon Denali|GMC Yukon Denali]] (1999-2000), [[w:Cadillac Escalade#First generation (1999)|Cadillac Escalade]] (1999-2000)<br /> [[w:GMT800|GMT800]] SUVs: [[w:Chevrolet Tahoe#Second generation (2000)|Chevrolet Tahoe]] (2001-2006), [[w:Chevrolet Tahoe#Second generation (2000)|GMC Yukon]] (2001-2006), [[w:Cadillac Escalade#Second generation (2002)|Cadillac Escalade]] (2002-2006), [[w:Chevrolet Suburban#Ninth generation (2000)|Chevrolet Suburban]] (2001-2005), [[w:Chevrolet Suburban#Ninth generation (2000)|GMC Yukon XL]] (2001-2005).<br /> [[w:GMT900|GMT900]] SUVs: [[w:Chevrolet Tahoe#Third generation (2007)|Chevrolet Tahoe]] (2007-2014), [[w:Chevrolet Tahoe#Third generation (2007)|GMC Yukon]] (2007-2014), [[w:Chevrolet Tahoe#Third generation (2007)|GMC Yukon Denali]] (2009-2014), [[w:Cadillac Escalade#Third generation (2007)|Cadillac Escalade]] (2007-2014), [[w:Chevrolet Suburban#Tenth generation (2007)|Chevrolet Suburban]] (2007-2014), [[w:Chevrolet Suburban#Tenth generation (2007)|GMC Yukon XL]] (2007-2014), [[w:Chevrolet Suburban#Tenth generation (2007)|GMC Yukon XL Denali]] (2009-2014), [[w:Cadillac Escalade#Third generation (2007)|Cadillac Escalade ESV]] (2007-2014)<br /> [[w:GMT K2XX|K2XX]] SUVs (2015-2020): [[w:Chevrolet Tahoe#Fourth generation (2015)|Chevrolet Tahoe]], [[w:Chevrolet Tahoe#Fourth generation (2015)|GMC Yukon]], [[w:Cadillac Escalade#Fourth generation (2015)|Cadillac Escalade]], [[w:Chevrolet Suburban#Eleventh generation (2015)|Chevrolet Suburban]], [[w:Chevrolet Suburban#Eleventh generation (2015)|GMC Yukon XL]], [[w:Cadillac Escalade#Fourth generation (2015)|Cadillac Escalade ESV]] |- |U||[[Artisan Center]]||[[w:Warren, Michigan|Warren, Michigan]]||United States||[[w:Cadillac Celestiq|Cadillac Celestiq]] (2025-)||2024||&nbsp;||Located at the [[w:General Motors Technical Center|GM Global Technical Center]] in Warren, Michigan. The Celestiq will be the first production vehicle sold to the public to be built at the GM Tech Center. The Celestiq will be built by hand on a special, low-volume production line and will be highly customizable. The Celestiq will be built to order and each one will be unique. |- |&nbsp;||[[Bay City Powertrain]]||[[w:Bay City, Michigan|Bay City, Michigan]]||United States||Engine components including connecting rods & camshafts||1916||&nbsp;||Located at 1001 Woodside Ave. Originally opened as National Cycle Manufacturing Co. in 1892 to make bicycles. Bought by Chevrolet in 1916 and joined GM along with Chevrolet in 1918. |- |&nbsp;||[[Bedford Casting]]||[[w:Bedford, Indiana|Bedford, Indiana]]||United States||Cylinder heads, cylinder blocks, transmission cases, EV drive unit housings, structural components, Aluminum die casting||1942||&nbsp;||Located at 105 GM Drive. |- |5||[[w:Bowling Green Assembly Plant|Bowling Green Assembly Plant]]||[[w:Bowling Green, Kentucky|Bowling Green, Kentucky]]||United States||[[w:Chevrolet Corvette (C8)|Chevrolet Corvette (C8)]] (2020-)<br /> [[w:General Motors LS-based small-block engine#LT4|LT4 supercharged V8 engine]] for:<br /> Cadillac CT5-V Blackwing '22- and <br /> Cadillac Escalade-V '23-<br /> [[w:Chevrolet Gemini small-block engine|LT6 V8 engine]] ('23- Corvette Z06) [[w:Chevrolet Gemini small-block engine#LT7|LT7 twin-turbo V8 engine]] ('25- Corvette ZR1, '26- Corvette ZR1X) ||1981||&nbsp;||Located at 600 Corvette Drive. Originally built by Chrysler's Airtemp division in 1969-1970 and used to build non-automotive A/C units, the plant closed in 1976 following Chrysler's sale of Airtemp to Fedders and was sold to GM in 1980. GM converted the facility into an automotive assembly plant and began building Corvettes in Bowling Green during June 1981, taking over production from the St. Louis plant.<br/> Past models: <br /> [[w:Chevrolet Corvette (C3)|Chevrolet Corvette (C3)]] (1981-1982)<br />[[w:Chevrolet Corvette (C4)|Chevrolet Corvette (C4)]] (1984-1996)<br />[[w:Chevrolet Corvette (C5)|Chevrolet Corvette (C5)]] (1997-2004)<br />[[w:Chevrolet Corvette (C6)|Chevrolet Corvette (C6)]] (2005-2013)<br />[[w:Chevrolet Corvette (C7)|Chevrolet Corvette (C7)]] (2014-2019) [[w:Cadillac XLR|Cadillac XLR]] (2004-2009)<br /> Performance Build Center relocated from Wixom, MI to Bowling Green Assembly in 2014.<br/> Past engines: [[w:Cadillac twin-turbo V8|Cadillac Blackwing 4.2L LTA twin-turbo V8]],<br />[[w:General Motors LS-based small-block engine#LT4|LT4 supercharged V8 engine]] for: Chevrolet Corvette Z06 (C7) (2015-2016 models with Z07 package or build your own engine option, 2017-2019 all Z06 models) &<br /> Chevrolet Camaro ZL1 (Gen 6) (phased in during 2020, all '21-'24),<br />[[w:General Motors LS-based small-block engine#LT5|LT5 supercharged 6.2L Gen V Small Block V8]] ('19 Corvette ZR1) |- |&nbsp;||[[Brownstown Battery Assembly Plant]]||[[w:Brownstown Charter Township, Michigan|Brownstown Charter Township, Michigan]]||United States||Battery packs for [[w:Chevrolet Corvette (C8)|Chevrolet Corvette <br> E-Ray]] & [[w:Cadillac Celestiq|Cadillac Celestiq]]<br />Electric drive units for Chevrolet Corvette <br> E-Ray<br />Assembles prototype battery packs||2009||&nbsp;||Located at 20001 Brownstown Center Dr.<br /> Battery packs for [[w:Chevrolet Volt|Chevrolet Volt]], [[w:Holden Volt|Holden Volt]], [[w:Opel Ampera|Opel/Vauxhall Ampera]], [[w:Cadillac ELR|Cadillac ELR]], [[w:Chevrolet Spark#Spark EV|Chevrolet Spark EV (2015-2016 only - LG Chem cells)]], [[w:GMC Hummer EV|GMC Hummer EV]], & [[w:Cadillac Lyriq|Cadillac Lyriq]] <br /> Roof module for [[w:Cruise AV|Cruise AV]] |- |6<br />9&nbsp;(BrightDrop)||[[w:CAMI Automotive|CAMI Automotive]]||[[w:Ingersoll, Ontario|Ingersoll, Ontario]]||[[w:Canada|Canada]]||Assembles Ultium battery cells into modules and packs for BrightDrop Zevo & other vehicles made elsewhere||1989||&nbsp;||Located at 300 Ingersoll St. S. Originally, a 50/50 joint venture with [[w:Suzuki|Suzuki]] until December 2009 when GM bought Suzuki's share. Chevy Equinox production ended April 29, 2022. After being retooled, CAMI reopened December 5, 2022 building the BrightDrop Zevo 600. In July 2023, GM announced a 400,000 square-foot expansion to assemble battery modules and packs. Plant idled in October 2023 and restarted in April 2024. Production was suspended in May 2025. On October 21, 2025, GM announced that the BrightDrop van was discontinued and would not resume production anywhere. Past models: [[w:BrightDrop Zevo 600|BrightDrop Zevo 600]] (2023-2024)<ref>{{Cite news |author=Tom Venetis |date=4 April 2022 |title=GM Canada Electric Vehicle Production in Ontario by the End of 2022 |work=Metroland Media Group |url=http://www.canadianautoworld.ca/industry-news/gm-canada-electric-vehicle-production-in-ontario-by-the-end-of-2022 |access-date=24 April 2022}}</ref>,<br> [[w:BrightDrop Zevo 400|BrightDrop Zevo 400]] (2024),<br>[[w:Chevrolet BrightDrop|Chevrolet BrightDrop 400]] (2025),<br />[[w:Chevrolet BrightDrop|Chevrolet BrightDrop 600]] (2025),<br /> [[w:Chevrolet Equinox|Chevrolet Equinox]] (2005-2022)<ref>{{Cite news |author=Bryan Bicknell |date=3 March 2022 |title=The finish line draws closer for gas powered vehicles at Ontario CAMI plant |work=CTV News |url=https://london.ctvnews.ca/the-finish-line-draws-closer-for-gas-powered-vehicles-at-ontario-cami-plant-1.5804523 |access-date=17 May 2022}}</ref>, [[w:Pontiac Torrent|Pontiac Torrent]] (2006-09), [[w:GMC Terrain#First generation (2010)|GMC Terrain]] (2010-2017), [[w:Suzuki XL-7#Second generation (XL7; 2006)|Suzuki XL7]] (2007-2009), [[w:Geo Tracker|Geo/Chevrolet Tracker]] (1990-2004),<br> [[w:Chevrolet Tracker (Americas)#Canada|Asuna/Pontiac Sunrunner]] (Canada only) (1992-1998),<br> [[w:Suzuki Vitara#First generation (ET/TA; 1988)|Suzuki Sidekick]] (1990-1998), [[w:Suzuki Grand Vitara|Suzuki Vitara]] (1999-2004), [[w:Geo Metro|Geo/Chevrolet Metro]] (1990-2001), [[w:Geo Metro|Suzuki Swift]] (1991-2001), [[w:Geo Metro|Pontiac Firefly]] (Canada only) (1991, 1994-2001). |- |B (Suburban HD)||[[w:GM Defense|GM Defense]] Manufacturing Customer Innovation Center (MCIC)||[[w:Concord, North Carolina|Concord, North Carolina]]||United States|| [[w:M1301 Infantry Squad Vehicle|M1301 Infantry Squad Vehicle]] (ISV),<br />[[w:Chevrolet Suburban#HD SUV|Chevrolet Suburban Shield]] (a.k.a. HD SUV) (2024-) ||2021||&nbsp;||Located at 4280 Defender Way. Located next to Hendrick Motorsports, a partner in the ISV program. The ISV program for the US Army is based on the Chevrolet Colorado ZR2. The HD SUV program for the US State Dept. Diplomatic Security Service is based on the T1XX-generation Chevrolet Suburban but with a different chassis and frame to support higher vehicle weight, payload, and GVWR than civilian Suburbans. |- |&nbsp;||[[Defiance Foundry]]||[[w:Defiance, Ohio|Defiance, Ohio]]||United States||Aluminum engine blocks & heads||1948||&nbsp;||Located at 26427 State Route 281. Was part of GM's Central Foundry Division. Iron pouring ended in 2017. The plant now pours only aluminum blocks and heads. Defiance made the aluminum blocks and heads for the Buick 215 V8. Defiance has also supplied [[w:Toyota|Toyota]] with 4-cylinder engine blocks and [[w:Nissan|Nissan]] with V6 engine blocks. |- |U||[[w:Detroit/Hamtramck Assembly|Detroit/Hamtramck Assembly]]<br /> "Factory ZERO"||[[w:Hamtramck, Michigan|Hamtramck, Michigan]] & [[w:Detroit, Michigan|Detroit, Michigan]]||United States||[[w:GMC Hummer EV|GMC Hummer EV]] pickup (2022-)<br />[[w:GMC Hummer EV|GMC Hummer EV]] SUV (2024-)<br />[[w:Chevrolet Silverado EV|Chevrolet Silverado EV]] (2024-)<br />[[w:GMC Sierra EV|GMC Sierra EV]] (2024-)<br />[[w:Cadillac Escalade IQ|Cadillac Escalade IQ]] (2025-)<br />[[w:Cadillac Escalade IQ|Cadillac Escalade IQL]] (2026-)<br />Assembles Ultium battery cells into modules and packs for a variety of vehicles||1985||&nbsp;||Located at 2500 East Grand Blvd. Sometimes called the "Poletown" plant after the Detroit neighborhood where the plant is located. Part of the site was previously the "Dodge Main" plant which opened in 1911 before Dodge was part of the Chrysler Corp. and closed on January 4, 1980. GM bought the closed plant in 1981. Additional land including residential neighborhoods was acquired through the use of eminent domain. The plant straddles the line between 2 cities: Detroit & Hamtramck. The body shop is in Hamtramck while the general assembly area is in Detroit.<ref>{{Cite web|url=https://www.freep.com/story/money/cars/general-motors/2020/10/16/gm-detroit-hamtramck-assembly-plant-renamed-factory-zero/3665925001/|title = GM's Detroit-Hamtramck Assembly plant renamed 'Factory ZERO' amid shift to all-electric|author=Jamie LaReau|publisher=Detroit Free Press|date=October 16, 2020}}</ref> The current site includes a 16.5-acre wildlife habitat. Originally built E/K models. First vehicle produced was a 1986 Cadillac Eldorado on February 4, 1985. Also did final assembly on the Cadillac Allante, whose bodies were made in Italy by Pininfarina and were flown to Detroit and then trucked to Detroit/Hamtramck Assembly for final assembly. Started building fwd G-bodies for 1998. The last <br> E-body, the Cadillac Eldorado, was moved to the Lansing Craft Center during 2000. Started building EREVs based on Delta II for 2011. This was followed by the 2nd gen. Volt based on D2XX for 2016. Started building Epsilon-based cars for 2013. Also built the Omega-based Cadillac CT6 flagship, starting with 2016. The last gas-powered vehicles made at this plant were the Cadillac CT6 on January 24, 2020 & the Chevrolet Impala on February 27, 2020. Renamed "Factory ZERO" on October 16, 2020 to reflect its conversion into an electric vehicle assembly plant (zero for zero emissions). First vehicle produced following the conversion was a 2022 GMC Hummer EV pickup on December 17, 2021. Over 4 million vehicles have been built so far since opening in 1985. <br /> Past models:<br> [[w:Oldsmobile Toronado#Fourth generation (1986–1992)|Oldsmobile Toronado]] (1986-1992), [[w:Buick Riviera#Seventh generation (1986–1993)|Buick Riviera]] (1986-1993), [[w:Cadillac Eldorado|Cadillac Eldorado]] (1986-2000), [[w:Cadillac Seville|Cadillac Seville]] (1986-2004), [[w:Cadillac Allanté|Cadillac Allanté]] (1987-1993) (final assembly),<br> [[w:Cadillac Deville|Cadillac Deville]] (1994-2005), [[w:Cadillac DTS|Cadillac DTS]] (2006-2011),<br> [[w:Buick Park Avenue#Second generation (1997–2005)|Buick Park Avenue]] (1998-2000), [[w:Buick LeSabre#Eighth generation (2000–2005)|Buick LeSabre]] (2000-2005), [[w:Buick Lucerne|Buick Lucerne]] (2006-2011), [[w:Pontiac Bonneville#Tenth generation (2000–2005)|Pontiac Bonneville]] (2004-2005), [[w:Chevrolet Volt|Chevrolet Volt]] (2011-2019), [[w:Chevrolet Volt#Other markets|Holden Volt (RE)]] (2012-2015), [[w:Chevrolet Volt#Opel Ampera (Europe)|Opel/Vauxhall Ampera]] (2012-15), [[w:Cadillac ELR|Cadillac ELR]] (2014, 2016), [[w:Chevrolet Malibu#Eighth generation (2013)|Chevrolet Malibu (2013-2015)/Malibu Limited (2016)]], [[w:Chevrolet Impala#Tenth generation (2014-2020)|Chevrolet Impala]] (2014-2020), [[w:Buick LaCrosse#Third generation (2017)|Buick Lacrosse]] (2017-2019), [[w:Cadillac CT6|Cadillac CT6]] (2016-2020) |- |&nbsp;||[[w:DMAX (engines)|DMAX Ltd.]]||[[w:Moraine, Ohio|Moraine, Ohio]]||United States||[[w:Duramax V8 engine|Duramax V8 engine]]||2000||&nbsp;||Located on 3100 Dryden Rd. Was a joint venture with [[w:Isuzu|Isuzu]]. Originally, was 40% owned by GM & 60% owned by Isuzu. From 2002, 60% owned by GM & 40% owned by Isuzu. GM bought Isuzu's remaining stake in DMAX Ltd. at the end of March 2022 and DMAX Ltd. became a wholly owned subsidiary of GM in May 2022. |- |&nbsp;||[[w:DMAX (engines)|DMAX Ltd.]] Components Plant||[[w:Brookville, Ohio|Brookville, Ohio]]||United States||Machined engine components for [[w:Duramax V8 engine|Duramax V8 engine]]||2021||&nbsp;|| Located at 101 W. Campus Blvd. In June 2023, GM announced a $920 million investment to build a 1.1 million square foot building next to the current 251,000 square foot facility in Brookville to take over Duramax V8 engine production from the original plant in Moraine in 2025. |- |&nbsp;||[[w:GM Egypt|GM Egypt]]||[[w:6th of October City|6th of October City]]|| [[w:Egypt|Egypt]]||[[w:Isuzu N-Series|Chevrolet N-Series]]<br/>[[w:Isuzu D-Max#Second generation (RT; 2011)|Chevrolet T-Series]]<br/>[[w:Chevrolet Move#Chevrolet N300/Move|Chevrolet Move]]<br/>[[w:Chevrolet Aveo#Third generation (310C; 2023)|Chevrolet Optra]] (2025-)||1985||&nbsp;||Partially owned by GM (46.5%). Produced its 1 millionth vehicle, a Chevrolet T-Series pickup truck, on September 22, 2024. GM Egypt is the first automaker in Egypt to produce <br> 1 million vehicles. <br /> Past models: [[w:Chevrolet Aveo (T200)|Chevrolet Aveo]], [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]], [[w:Chevrolet Frontera|Chevrolet Frontera]], [[w:Chevrolet Lanos|Chevrolet Lanos]], [[w:Baojun 630|Chevrolet Optra]] (2016-2023), [[w:Isuzu D-Max#First generation (RA, RC; 2002)|Chevrolet T-Series]], [[w:Isuzu MU#First generation (UCS55/UCS69GW; 1989–1998)|Isuzu Rodeo]], [[w:Isuzu TF|Isuzu TF-Series]], [[w:Opel Astra|Opel Astra]], [[w:Opel Corsa|Opel Corsa]], [[w:Opel Vectra|Opel Vectra]] |- |F||[[w:Fairfax II|Fairfax II]]||[[w:Kansas City, Kansas|Kansas City, Kansas]]||United States||[[w:Chevrolet Bolt#Second generation (2026)|Chevrolet Bolt]] (2027) <br /> [[w:Chevrolet Equinox#Fourth generation (2025)|Chevrolet Equinox]] (Starting Mid-2027) ||1987||&nbsp;||Located at 3201 Fairfax Trafficway. Replaced original Fairfax Assembly Plant (Fairfax I) for 1988 model year production. Built on the site of the old Fairfax Municipal Airport. Originally built W-body cars. Switched to Epsilon-based cars for 2004. Chevy Malibu ended production in November 2024. Cadillac XT4 ended production in January 2025. Fairfax was then idled for retooling. Production of the updated Bolt electric car began in late 2025. The 2027 Bolt is an updated version of the old Bolt EUV. <br />Past models: [[w:Pontiac Grand Prix|Pontiac Grand Prix]] (1988-2003), [[w:Oldsmobile Cutlass Supreme#Fifth generation (1988–1997)|Oldsmobile Cutlass Supreme]] (1995-1997), [[w:Oldsmobile Intrigue|Oldsmobile Intrigue]] (1998-'02), [[w:Chevrolet Malibu#Sixth generation (2004)|Chevrolet Malibu (2004-2007)/Malibu Classic (2008)]], [[w:Chevrolet Malibu#Seventh generation (2008)|Chevrolet Malibu (2008-2012)]],<br> [[w:Chevrolet Malibu#Eighth generation (2013)|Chevrolet Malibu (2013-2015)/Malibu Limited (2016)]], [[w:Chevrolet Malibu#Ninth generation (2016)|Chevrolet Malibu (2016-2025)]], <br /> [[w:Saturn Aura|Saturn Aura]] (2007-2009), [[w:Buick LaCrosse#Second generation (2010)|Buick Lacrosse/Allure]] (2010-2016), [[w:Cadillac XT4|Cadillac XT4]] (2019-2025) |- |&nbsp;||[[w:Flint Engine South|Flint Engine South]]||[[w:Flint, Michigan|Flint, Michigan]]||United States|| 3.0 [[w:Duramax I6 engine|Duramax I6 engine]]||2000||&nbsp;||Located at 2100 Bristol Road. Located just to the south of Flint Truck Assembly and on the east side of Flint Metal Center. <br />Past engines: [[w:GM Atlas engine|4.2 Atlas I6]], 3.6 [[w:GM High Feature engine|High Feature V6 engine]],<br /> 1.4 [[w:GM Family 0 engine#Generation III|Family 0 I4]] (Cruze, Sonic, Volt/Ampera/ELR generator), [[w:GM small gasoline engine#LFV|GM Small Gasoline Engine]] (LFV 1.5 Turbo I4 - Malibu) |- |&nbsp;||[[Flint Metal Center]]||[[w:Flint, Michigan|Flint, Michigan]]||United States|| Sheetmetal stampings for various GM models||1954||&nbsp;||Located at G-2238 Bristol Road. Located just to the south of Flint Truck Assembly and on the west side of Flint Engine South. Metal fabricating plant. |- |&nbsp;||[[Flint Tool & Die]] (North American Engineering and Tooling Center)||[[w:Flint, Michigan|Flint, Michigan]]||United States||Tools & Dies for fabrication & assembly of sheetmetal body parts||1967||&nbsp;||Located at 425 Stevenson St. Was Plant 38 of the "Chevy in the Hole" complex. Last remaining manufacturing plant of the old "Chevy in the Hole" complex. |- |F <br/>(1953-present)<br/><br/> 1 (1947-1952)||[[w:Flint Truck Assembly|Flint Truck Assembly]]||[[w:Flint, Michigan|Flint, Michigan]]||United States||[[w:Chevrolet Silverado|Chevrolet Silverado]] (2001-)<br /> [[w:Chevrolet Silverado|GMC Sierra]] (2001-)||1947||&nbsp;||Located at G 3100 Van Slyke Road. This plant replaced vehicle production at the older "Chevy in the Hole" complex elsewhere in Flint, Michigan and became Chevrolet's new home plant. Began production in June 1947. This is GM's oldest, still active assembly plant in North America. Built all 300 1953 Corvettes on a small makeshift line (1 line for body & 1 for frame/chassis) from June 30 through December 24 in 1953. Built the 50 millionth car built by GM in the US on November 23, 1954. The car was a special gold painted '55 Chevy Bel Air 2-door Sport Coupe with a gold-painted chassis and 716 interior and exterior trim parts plated with 24-carat gold. Last built Chevy full-size cars in 1969. Last built passenger cars in 1970 (the midsize Chevelle & Monte Carlo). The last passenger car built at Flint Assembly was a Monte Carlo on June 24, 1970. At that point, the separate onsite Fisher Body operation (Flint #2) was merged into the Chevrolet operation (the rest of the plant) and the entire plant joined the GM Assembly Division. Since 1971, has only built full-size pickups, full-size SUV's, full-size vans, and medium duty commercial trucks. A new paint shop (Flint Assembly Paint Operations) was announced in December 2013 and opened in 2016, replacing the previous paint shop located inside the assembly plant. The new paint shop is further down Van Slyke Road from the assembly plant at 3848 Van Slyke Road, on the site of the former V8 engine plant that closed in 1999 and was subsequently demolished. Flint Truck Assembly has produced over 15 million vehicles. <br />Past models: [[w:Chevrolet Deluxe|Chevrolet Deluxe]], [[w:Chevrolet Stylemaster|Chevrolet Stylemaster]], [[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]], [[w:Chevrolet 150|Chevrolet 150]] (1953-1957),<br> [[w:Chevrolet 210|Chevrolet 210]] (1953-1957), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1969), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-69), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1969), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-69), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Chevrolet Corvette (C1)|Chevrolet Corvette (1953 only)]]<br> [[w:Chevrolet El Camino#First generation (1959–1960)|Chevrolet El Camino]] (1959-1960),<br> [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1966, 1970),<br> [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1970 only),<br> [[w:Chevrolet K5 Blazer|Chevrolet K5 Blazer]] (1969-1991), [[w:Chevrolet K5 Blazer|GMC K15 Jimmy]] (1970-91), [[w:Chevrolet Suburban|Chevrolet Suburban]] (1960-1991), [[w:GMC Suburban|GMC Suburban]] (1967-91),<br> [[w:Chevrolet Corvair|Chevrolet Corvair Forward Control]] (1961-1964), <br> [[w:Chevrolet van#Third generation (1971-1996)|Chevrolet Van/Sportvan]] (1993-1995),<br> [[w:Chevrolet van#1992-1996|Chevrolet Van/Sportvan G-Classic]] (1996),<br> [[w:Chevrolet van#Third generation (1971-1996)|GMC Vandura/Rally Van]] (1993-1995),<br> [[w:Chevrolet van#1992-1996|GMC Vandura/Rally Van G-Classic]] (1996),<br> [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:Chevrolet C/K|Chevrolet C/K]] (1960-1986), [[w:Chevrolet C/K (second generation)|GMC C/K (Action Line)]] (1967-1972), [[w:Chevrolet C/K (third generation)|GMC C/K (Rounded Line)]] (1973-1986), [[w:Chevrolet C/K (third generation)#R/V-Series (1987–1991)|Chevrolet R/V]] (1987-1991), [[w:Chevrolet C/K (third generation)#R/V-Series (1987–1991)|GMC R/V]] (1987-1991), [[w:Chevrolet C/K (fourth generation)|Chevrolet C/K (GMT400)]] (1995-2000), [[w:Chevrolet C/K (fourth generation)|GMC Sierra (GMT400)]] (1995-98), [[w:Chevrolet C/K (fourth generation)|GMC Sierra Classic (GMT400)]] (1999-2000), [[w:Chevrolet C/K (fourth generation)#C3500HD (1991–2002)|Chevrolet/GMC C3500HD]] (1998-00), [[w:Chevrolet Kodiak#Third generation (2003–2009)|Chevrolet Kodiak/GMC Topkick]] ('03-'09), [[w:Chevrolet Kodiak#Isuzu H-Series|Isuzu H-Series]] (2005-2007), [[w:Isuzu Forward|Chevrolet T-Series]] (2004-2009), [[w:GMC T-Series|GMC T-Series]] (2004-2009), [[w:Isuzu F-Series|Isuzu F-Series]] (2004-2009) <br /> |- |Z||[[w:Fort Wayne Assembly|Fort Wayne Assembly]]||[[w:Roanoke, Indiana|Roanoke, Indiana]]||United States||[[w:Chevrolet Silverado|Chevrolet Silverado]] (1999-)<br />[[w:Chevrolet Silverado|GMC Sierra]] (1988-)||1986||&nbsp;||Located at 12200 Lafayette Center Rd.<br /> Past models: [[w:Chevrolet C/K (fourth generation)|Chevrolet C/K]] (1988-1998) |- |&nbsp;||[[Fuel Cell System Manufacturing LLC]]||[[w:Brownstown Charter Township, Michigan|Brownstown Charter Township, Michigan]]||United States||Fuel Cell Systems for [[w:Honda CR-V#CR-V e:FCEV|Honda CR-V e:FCEV]] & various other applications by GM & Honda & to outside companies||2024||&nbsp;||Located at 20001 Brownstown Center Dr. Located next to GM's Brownstown Battery Assembly Plant.<br /> A 50/50 joint venture with [[w:Honda|Honda]]. GM & Honda have been co-developing fuel cells since 2013. The manufacturing joint venture was established in January 2017. Production began in January 2024. Production is scheduled to end by the end of 2026. |- |&nbsp;||Grand Rapids Operations||[[w:Wyoming, Michigan|Wyoming, Michigan]]||United States||Valvetrain products <br /> Axles for full-size trucks ||1943||&nbsp;||Located at 2100 Burlingame Avenue SW. Originally established as Diesel Equipment Division of GM. Spun off with Delphi Automotive Systems in 1999 (Delphi Powertrain Systems Grand Rapids); taken back under [[w:Delphi Corporation|Delphi Corporation]] bankruptcy and made part of [[w:General Motors Components Holdings|General Motors Components Holdings]] in 1999. |- |G||[[w:General Motors do Brasil|Gravatai Automotive Industrial Complex]]||[[w:Gravatai|Gravatai]], [[w:Rio Grande do Sul|Rio Grande do Sul]]||[[w:Brazil|Brazil]]||[[w:Chevrolet Onix|Chevrolet Onix]]<br /> ||2000||&nbsp;||Past models: [[w:Chevrolet Celta|Chevrolet Celta]]<br />[[w:Chevrolet Prisma (disambiguation)|Chevrolet Prisma]]<ref>{{cite web|url=http://www.autointell.com/nao_companies/general_motors/gm-manufacturing/blue-macaw-01.htm|title=General Motors: Gravatai Automotive Complex|access-date=2021-09-14 }}</ref><ref>[https://www.reuters.com/article/idUSN1533675720090715 UPDATE 2-GM to spend $1 bln in Brazil on new family of cars] Retrieved 14 September 2021</ref><br /> [[w:Suzuki Fun|Suzuki Fun]] |- |&nbsp;||[[Joinville]]||[[w:Joinville|Joinville]], [[w:Santa Catarina (state)|Santa Catarina]]||[[w:Brazil|Brazil]]||[[w:GM E-Turbo engine|1.0 & 1.0 Turbo 3-cylinder engine]]<br />[[w:GM E-Turbo engine|1.2 & 1.2 Turbo 3-cylinder engine]] ||2013||&nbsp;||Past engines: [[w:GM Family 1 engine#SPE / 4|1.0L & 1.4L SPE / 4<br /> 4-cylinder engines]] |- |&nbsp;||Kokomo Operations<ref>{{Cite web|url=https://plants.gm.com/media/us/en/gm/company_info/facilities/component-fac/kokomo.html|title=GM Corporate Newsroom - United States - Company}}</ref>||[[w:Kokomo, Indiana|Kokomo, Indiana]]||United States||Automotive Electronic Components including Engine Control Modules, Transmission Control Modules, Body Control Modules, & Airbag Sensing Diagnostic Modules||1936||&nbsp;||Located at 2603 South Goyer Rd. The site was first used in the 1890's to make cars by [[w:Haynes-Apperson|Haynes-Apperson]] and later by [[w:Haynes Automobile Company|Haynes]] until the company went out of business in 1925. Purchased by GM in 1936 from Crosley Radio Corp., which used the site to make radios for Chevrolet briefly during 1936. Initially run by Delco Remy, the site became a separate GM division called Delco Radio Division in June 1936. Delco Radio made radios for all GM cars as well as other electronic equipment. During WWII, Delco Radio made electronic equipment for the war effort. In 1970, Delco Radio merged with AC Electronics Division of Milwaukee to form [[w:Delco Electronics|Delco Electronics Division]]. On December 31, 1985, General Motors merged Hughes Aircraft, which it had acquired on December 20, 1985, with its Delco Electronics unit to form Hughes Electronics Corporation, an independent subsidiary. The group then consisted of Delco Electronics Corporation and Hughes Aircraft Company. In 1997, GM transferred Delco Electronics to its Delphi Automotive Systems business. Spun off with Delphi Automotive Systems in 1999 (Delco Electronics and Safety); taken back under [[w:Delphi Corporation|Delphi Corporation]] bankruptcy and made part of [[w:General Motors Components Holdings|General Motors Components Holdings]] in 2009. |- | ||[[w:GM Korea|GM Korea]]||[[w:Boryeong|Boryeong]], [[w:South Chungcheong Province|South Chungcheong Province]]||[[w:South Korea|South Korea]]||Automatic Transmissions||2008||&nbsp;||[[w:GM 6T40 transmission|GM 6T40 transmission]] (GF6) |- |B<br /><br />0 ('07-'08 Antara)||[[w:GM Korea|GM Korea]]||[[w:Bupyeong-gu|Bupyeong District]], [[w:Incheon|Incheon]]||[[w:South Korea|South Korea]]||[[w:Chevrolet Trailblazer (crossover)|Chevrolet Trailblazer]]<br/>[[w:Buick Encore GX|Buick Encore GX]]<br/>[[w:Buick Envista|Buick Envista]] Engines: [[w:GM Family 0 engine|GM Family 0 engine]]<br />[[w:GM E-Turbo engine|1.3L Turbo 3-cylinder engine]] |1962<br /><br/>1971 (engine plant)||&nbsp;||Bupyeong has 2 vehicle assembly plants and a powertrain plant. The Bupyeong 2 Assembly Plant ended production on November 26, 2022. Bupyeong 2 was last producing the Chevrolet Malibu and Trax and Buick Encore.<br />Past models : [[w:Chevrolet Aveo|Chevrolet Aveo]], [[w:Chevrolet Sonic|Chevrolet Sonic]], [[w:Chevrolet Captiva|Chevrolet Captiva]], [[w:Chevrolet Epica|Chevrolet Epica]], [[w:Chevrolet Evanda|Chevrolet Evanda]], [[w:Chevrolet Malibu|Chevrolet Malibu]], [[w:Chevrolet Trax#First generation (U200; 2013)|Chevrolet Trax]]<br /> [[w:Buick Encore#First generation (2013)|Buick Encore]]<br /> [[w:Buick LaCrosse#Korean market: Alpheon|Alpheon]] [[w:Daewoo LeMans|Daewoo LeMans]], [[w:Daewoo Cielo|Daewoo Cielo]], [[w:Daewoo Espero|Daewoo Espero]], [[w:Daewoo Lanos|Daewoo Lanos]], [[w:Daewoo Leganza|Daewoo Leganza]], [[w:Daewoo Magnus|Daewoo Magnus]], [[w:Daewoo Tosca|Daewoo Tosca]], [[w:Daewoo Kalos|Daewoo Kalos]], [[w:Chevrolet Aveo (T200)#T250|Daewoo Gentra]], [[w:Daewoo Winstorm|Daewoo Winstorm]] [[w:Holden Barina#Fifth generation (TK; 2005–2011)|Holden Barina (TK)]], [[w:Holden Barina#Sixth generation (TM; 2011–2018)|Holden Barina (TM)]], [[w:Opel Antara|Holden Captiva MaXX/Captiva 5]], [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Holden Captiva/Captiva 7]], [[w:Holden Epica|Holden Epica (EP)]], [[w:Chevrolet Malibu#Eighth generation (2013)|Holden Malibu (EM)]], [[w:Chevrolet Trax#First generation (U200; 2013)|Holden Trax (TJ)]] <br /> [[w:Opel Antara|GMC Terrain (Middle East only)]] <br /> [[w:Opel Mokka#First generation (J13; 2012)|Opel/Vauxhall Mokka]], [[w:Opel Antara|Opel/Vauxhall Antara]]<br /> [[w:Pontiac LeMans#Sixth generation (1988–1993)|Pontiac LeMans]], [[w:Pontiac Wave|Pontiac Wave]], [[w:Pontiac G3|Pontiac G3]] <br /> [[w:Suzuki Swift+|Suzuki Swift+]] (Canada only), [[w:Suzuki Verona|Suzuki Verona]] Past engines: [[w:GM Family 1 engine|GM Family 1 engine]] |- |C||[[w:GM Korea|GM Korea]]||[[w:Changwon|Changwon]], [[w:Gyeongsang Province|Gyeongsang Province]]||[[w:South Korea|South Korea]]||[[w:Chevrolet Trax#Second generation (2023)|Chevrolet Trax]]<br/>[[w:GM small gasoline engine|GM small gasoline engine]] LV7, LE2<br/>Manual transmissions |1991||&nbsp;||Past models: [[w:Daewoo Damas|Damas]], [[w:Daewoo Labo|Labo]]<br />[[w:Daewoo Matiz|Daewoo Matiz]], [[w:Daewoo Tico|Daewoo Tico]]<br />[[w:Opel Karl|Opel Karl]]/[[w:Vauxhall Viva#Name revival|Vauxhall Viva]]<br />[[w:Pontiac G2#Second generation (M200, M250; 2005)|Pontiac G2]], [[w:Pontiac Matiz#M150 (2000–2005)|Pontiac Matiz]],<br /> [[w:Chevrolet Spark|Chevrolet Spark]], [[w:Chevrolet Spark#Spark EV|Chevrolet Spark EV]]<br />[[w:Holden Spark#Australasia|Holden Barina Spark (MJ)]]<br>[[w:Holden Spark|Holden Spark (MP)]] Past engines: [[w:Daewoo S-TEC engine#S-TEC II|Daewoo S-TEC II]] |- |J||[[w:Lansing Delta Township Assembly|Lansing Delta Township Assembly]]||[[w:Delta Township, Michigan|Delta Township, Michigan]]||United States||[[w:Chevrolet Traverse|Chevrolet Traverse]] (2010-)<br />[[w:Buick Enclave|Buick Enclave]] (2008-)<br />[[w:GMC Acadia#Third generation (2024)|GMC Acadia]] (2024-)||2006||&nbsp;||Located at 8175 Millett Hwy. Originally opened to build Lambda-based crossovers. Switched to C1XX-based models for 2018. <br /> Past models: [[w:Saturn Outlook|Saturn Outlook]] (2007-2010),<br>[[w:GMC Acadia#First generation (2007)|GMC Acadia]] (2007-2016), [[w:GMC Acadia#Acadia Limited|GMC Acadia Limited]] (2017), <br>[[w:Chevrolet Traverse#Second generation (2018)|Chevrolet Traverse Limited]] (2024) |- |0||[[w:Lansing Grand River Assembly|Lansing Grand River Assembly]]/Stamping||[[w:Lansing, Michigan|Lansing, Michigan]]||United States||[[w:Cadillac CT4|Cadillac CT4]] (2020-)<br />[[w:Cadillac CT5|Cadillac CT5]] (2020-)||2001||&nbsp;||Located at 920 Townsend Street. Stamping plant added in 2016. This newly constructed plant was built on the grounds of the former Oldsmobile home plant complex in Lansing. The former Oldsmobile HQ building ("Building 70") is still standing and still has "Oldsmobile Administration Center" carved into the marble barrier in front of the flagpole between the 2 stairways. Building 70 was Oldsmobile HQ from 1966-1996, when Oldsmobile HQ moved to Detroit. Building 70 is now vacant but the exterior is often used by GM for large ads that are wrapped around the side of the building on the corner of Townsend St. and William St. Originally opened to build vehicles on the Sigma platform. Started building vehicles on the Alpha platform for 2013.<br /> Past models: [[w:Cadillac CTS|Cadillac CTS]] (2003-2019), [[w:Cadillac SRX#First generation (2004)|Cadillac SRX]] (2004-2009), [[w:Cadillac STS|Cadillac STS]] (2005-2011), [[w:Cadillac ATS|Cadillac ATS]] (2013-2019), [[w:Chevrolet Camaro (sixth generation)|Chevrolet Camaro]] (2016-2024) |- |&nbsp;||[[Lansing Regional Stamping]] (LRS)||[[w:Delta Township, Michigan|Delta Township, Michigan]]||United States||&nbsp;||2004|| ||Located within the Lansing Delta Assembly complex. |- |||[[w:Lansing Service Parts Operation|Lansing Redistribution Center]] (SPO)||[[w:Delta Township, Michigan|Delta Township, Michigan]]||United States||&nbsp;||1960|| ||Located at 4400 West Mount Hope Road. Previously Lansing Plant 4. Now called Lansing Redistribution Center, part of GM Customer Care and Aftersales. |- |&nbsp;||[[Lockport Operations]]||[[w:Lockport, NY|Lockport, NY]]||United States||Thermal products (climate control systems, powertrain cooling systems) and stators for EV motors.||1914||&nbsp;||Located at 200 Upper Mountain Road. Founded in 1910 as the Harrison Radiator Company. Acquired by United Motors in 1916 which was then acquired by GM in 1918. Spun off with Delphi Automotive Systems in 1999 (Harrison Thermal Systems); taken back under [[w:Delphi Corporation|Delphi Corporation]] bankruptcy and made part of [[w:General Motors Components Holdings|General Motors Components Holdings]] in 2009. |- |&nbsp;||[[Marion Metal Center]]||[[w:Marion, Indiana|Marion, Indiana]]||United States||Sheetmetal stamped parts & blanks for various GM models||1956||&nbsp;||Located at 2400 West Second St. Metal fabricating. Originally a Fisher Body division plant. |- |&nbsp;||[[Mogi das Cruzes]]||[[w:Mogi das Cruzes|Mogi das Cruzes]], [[w:São Paulo (state)|São Paulo state]]||[[w:Brazil|Brazil]]||Stampings for new & replacement parts||1999||&nbsp;||Stamping plant |- |4||[[w:Orion Assembly|Orion Assembly]]||[[w:Orion Township, Michigan|Orion Township, Michigan]]||United States||Assembly of Battery packs for EVs:<br> Silverado EV, Sierra EV, Hummer EV, and Escalade IQ<br><br>Scheduled for Early 2027: [[w:Chevrolet Silverado|Chevrolet Silverado]] 1500 (2027-)<br />[[w:GMC Sierra|GMC Sierra]] 1500 (2027-) ||1983||idled 2009; reopened 2011; idled 2023||Located at 4555 Giddings Road. Originally opened to build the 1985 Fwd C-bodies. Began building Fwd H-bodies for 1994. Began building Fwd G-bodies for 1995. On June 18, 2004, production of the Buick LeSabre & Park Ave., the last 2 models built at Orion Assembly, ended. Plant was then converted from building full-size cars to midsize cars for 2005, beginning with the Pontiac G6. Idled during 2009 as part of GM's bankruptcy. Reopened in 2011 with the help of govt. incentives & special agreement with the UAW to build the Chevy Sonic subcompact. Later added the Buick Verano compact car. In 2016, began building the Chevy Bolt EV, which was joined in 2021 by the slightly larger Bolt EUV. Idled in 2023 when both Bolts were discontinued. In late summer 2024, Orion Assembly began assembling battery cells supplied by Ultium Cells LLC in Warren, OH into packs which are then supplied to the Factory Zero plant for installation into the electric trucks & SUVs made there. Orion was going to be converted to building electric trucks, supplementing Factory Zero's production of Silverado EV & Sierra EV but that plan was postponed and later cancelled. In 2025, a new plan was announced for Orion to build fuel-powered Silverado & Sierra 1500 pickups & Escalade SUVs beginning in 2027.<br> Past models: [[w:Chevrolet Bolt EV|Chevrolet Bolt EV]] (2017-2023), [[w:Chevrolet Bolt EUV|Chevrolet <br> Bolt EUV]] (2022-2023), [[w:Cruise AV|Cruise AV]], [[w:Chevrolet Bolt#European countries|Opel Ampera-e]] (2017-19),<br> [[w:Chevrolet Sonic|Chevrolet Sonic]] (2012-2020), [[w:Buick Verano#First generation (2011)|Buick Verano]] (2012-2017), [[w:Chevrolet Malibu#Seventh generation (2008)|Chevrolet Malibu]] (2008-2010), [[w:Pontiac G6|Pontiac G6]] (2005-2010),<br> [[w:Buick Riviera#Eighth generation (1995–1999)|Buick Riviera]] (1995-1999), [[w:Oldsmobile Aurora|Oldsmobile Aurora]] (1995-2003),<br> [[w:Buick Park Avenue#Second generation (1997-2005)|Buick Park Avenue]] (1997-2005), [[w:Buick LeSabre#Eighth generation (2000–2005)|Buick LeSabre]] (2000-2005), [[w:Cadillac de Ville series#Sixth generation (1985–1993)|Cadillac DeVille]] (1985-1993), [[w:Cadillac Fleetwood#Front-wheel drive: 1985–1993|Cadillac Fleetwood]] (1985-1992), [[w:Cadillac Sixty Special#1987–1993|Cadillac Sixty Special]] (1989-1993), [[w:Oldsmobile 88#Tenth generation (1992–1999)|Oldsmobile 88]] (1994-99), [[w:Oldsmobile LSS|Oldsmobile LSS]] (1996-1999), [[w:Oldsmobile Regency|Oldsmobile Regency]] (1997-98), [[w:Oldsmobile 98#Eleventh generation (1985–1990)|Oldsmobile 98]] (1985-1990), [[w:Oldsmobile 98#Twelfth generation (1991–1996)|Oldsmobile 98]] (1991-1996), [[w:Oldsmobile Touring Sedan|Oldsmobile Touring Sedan]] (1988-1990),<br> [[w:Pontiac Bonneville#Ninth generation (1992–1999)|Pontiac Bonneville]] (1994-1998), [[w:Pontiac Bonneville#Tenth generation (2000–2005)|Pontiac Bonneville]] (2000-03) |- |1 (2022-)<br /><br />1 (Line 2 a.k.a. Consolidated Line)<br> (1984-2019)<br>/<br />9 (Line 1 a.k.a. Flex Line)<br> (1984-2020)<br /><br />1 (1967-1983)||[[w:Oshawa Car Assembly|Oshawa Car Assembly]]||[[w:Oshawa, Ontario|Oshawa, Ontario]]||[[w:Canada|Canada]]||[[w:Chevrolet Silverado#Fourth-generation Silverado / fifth-generation Sierra (T1XX; 2019)|Chevrolet Silverado 1500]] (2022-)<br />[[w:Chevrolet Silverado#Fourth-generation Silverado / fifth-generation Sierra (T1XX; 2019)|Chevrolet Silverado HD]] (2022-)||1953||&nbsp;||Located at 900 Park Rd South.<br /> Past models: [[w:Cadillac XTS|Cadillac XTS]] (2013-2019), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1985, 2000-2020), [[w:Chevrolet Impala#Impala Limited (2014–2016)|Chevrolet Impala Limited]] (2014-2016), [[w:Chevrolet Lumina|Chevrolet Lumina]] (1990-2001), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1995-2007), [[w:Buick Century#Sixth generation (1997–2005)|Buick Century]] (1997-2005), [[w:Buick Regal|Buick Regal]] (1988-2004, 2011-2017), [[w:Buick LaCrosse#First generation (2005)|Buick LaCrosse/Allure]] (2005-2009), [[w:Buick Special#1949–1958|Buick Special]] (1954-1958), [[w:Buick LeSabre|Buick LeSabre]] (1959-1966), [[w:Buick Century#Second generation (1954–1958)|Buick Century]] (1954-1958), [[w:Buick Invicta|Buick Invicta]] (1959-1962), [[w:Buick Wildcat|Buick Wildcat]] (1963-1966), [[w:Oldsmobile 88|Oldsmobile 88]] (1954-1966), [[w:Chevrolet 150|Chevrolet 150]] (1954-1957), [[w:Chevrolet 210|Chevrolet 210]] (1954-1957), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1955-1981), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1975), [[w:Chevrolet Camaro (fifth generation)|Chevrolet Camaro]] (2010-2015), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1985), [[w:Chevrolet Corvair|Chevrolet Corvair]] (1960-1966), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet Equinox#Second generation (2010)|Chevrolet Equinox]] (2011-2017), [[w:Chevrolet Nova|Chevrolet Nova]] (1962-1967),<br> [[w:General Motors A platform (1925)#1964|A-body (rwd) cars]]: [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1964-1977)/[[w:Chevrolet Malibu|Chevrolet Malibu]] (1978-1983)/[[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1971-1981)/ [[w:Oldsmobile Cutlass|Oldsmobile Cutlass]]/[[w:Oldsmobile 442|Oldsmobile 442]]/[[w:Pontiac LeMans|Pontiac LeMans]] (1971, 1973-1981)/[[w:Pontiac GTO|Pontiac GTO]] (1970)/[[w:Buick Special|Buick Special]]/[[w:Buick Skylark|Buick Skylark]],<br> [[w:General Motors A platform (1982)|A-body (fwd) cars]]: [[w:Chevrolet Celebrity|Chevrolet Celebrity]] (1982-1987)/[[w:Pontiac 6000|Pontiac 6000]] (1982-1988)/[[w:Oldsmobile Cutlass Ciera|Oldsmobile Cutlass Ciera]] (1985-1988),<br> [[w:Pontiac Bonneville#Sixth generation (1977–1981)|Pontiac Bonneville]] (1977-1981), [[w:Pontiac Catalina#1977–1981|Pontiac Catalina]] (1977-1981), [[w:Pontiac Grand Prix#Eighth generation (2004–2008)|Pontiac Grand Prix]] (2004-2008), [[w:Pontiac Catalina#Canada and Canadian exports|Pontiac Laurentian]] (1954-1981), [[w:Pontiac Parisienne|Pontiac Parisienne]] (1958-1984, US: 1983-1984), [[w:Pontiac Pathfinder|Pontiac Pathfinder]] (1954-1958), [[w:Pontiac Catalina#Canada and Canadian exports|Pontiac Strato Chief]] (1958-1970), [[w:Acadian (automobile)|Acadian]] (1962-1967), [[w:Beaumont (automobile)|Beaumont]] (1966-1969), [[w:Chevrolet Silverado#Third-generation Silverado / fourth-generation Sierra (K2XX; 2014)|Chevrolet Silverado 1500 LD/2500HD]] (2019), [[w:Chevrolet Silverado#Third-generation Silverado / fourth-generation Sierra (K2XX; 2014)|GMC Sierra 1500 Limited/2500HD]] (2019). <br /> VIN code 1 (1984-2019): Chevrolet Celebrity (1984-1987), Pontiac 6000 (1984-1985), Buick Regal (1988-2004), Chevrolet Lumina 4-d (1990-2001), Buick Century (1997-05), Pontiac Grand Prix (2004-2008), Buick LaCrosse/Allure (2005-2009), Chevrolet Impala (2008-2013), Chevrolet<br /> Impala Limited (2014-2016), Chevrolet Equinox (2011-2017), Chevrolet Silverado 1500 LD/2500HD (2019),<br /> GMC Sierra 1500 Limited/2500HD (2019) VIN code 9: Chevrolet Impala (1984-1985), Chevrolet Caprice (1984-1985), Pontiac Parisienne (1984), Pontiac 6000 (1985-1988), Oldsmobile Cutlass Ciera (1985-1988), Chevrolet Lumina 4-d (1990-1999), Chevrolet Lumina 2-d (1990-1994), Chevrolet Monte Carlo (1995-07), Chevrolet Impala (2000-08), Chevrolet Camaro (2010-2015), Buick Regal (2011-2017), Cadillac XTS (2013-2019), Chevrolet Impala (2014-2020) The current Oshawa complex (South plant; also known as Autoplex beginning in the 1980's) opened on November 7, 1953. The passenger car assembly plant had 2 assembly lines. Operations were gradually moved from the older North plant to the newer South plant. Originally built Chevrolet, Pontiac, Oldsmobile, and Buick models. However, Oldsmobile production ended in 1969 and Buick production ended in 1971. Oldsmobile production resumed with the '85 Cutlass Ciera while Buick production resumed with the '88 Regal. Oldsmobile production again ended in 1988 while Buick production continued through 2017 with a temporary hiatus in 2009-2010 calendar years. Pontiac production at Oshawa ended after 1988; only resuming in 2003 for the '04 Grand Prix. Pontiac production at Oshawa ended for good in 2008. Cadillac production began at the Oshawa South plant for the first time in 2012 with the 2013 XTS. Full-size pickups were built on Line 2 for 2019. This was the first time that pickups were built on one of Oshawa's passenger car assembly lines and the first time that pickups were made in Oshawa since Oshawa Truck closed in 2009. The last XTS was built on Sept. 10, 2019, the last Oshawa-built Impala on Oct. 25, 2019, & the last pickups on Dec. 18, 2019. Vehicle production at the South plant ended in 2019; plant will be transformed for stamping and production of body panels and subassemblies. Restart of vehicle production announced in Nov. 2020 - Truck production started in late 2021 with Silverado HD followed by the Silverado 1500 in 2022. Oshawa is now the only plant producing both Silverado 1500 & Silverado HD. Oshawa also produced face masks during the COVID-19 pandemic starting in 2020. |- |&nbsp;||[[w:Oshawa Metal|Oshawa Metal]]||[[w:Oshawa, Ontario|Oshawa, Ontario]]||[[w:Canada|Canada]]||Stamped metal parts for new production and for service parts||1986||&nbsp;||Part of the overall Oshawa Assembly complex (Autoplex) on Park Road South. Located at 1000 Park Road South. |- |&nbsp;||[[w:Parma Metal Center|Parma Metal Center]]||[[w:Parma, Ohio|Parma, Ohio]]||United States||Sheetmetal stampings & assemblies for various GM models||1948||&nbsp;||Located at 5400 Chevrolet Blvd.<br /> Metal fabricating |- |&nbsp;||[[Pontiac Metal Center]]||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States||Sheetmetal stampings & assemblies for various GM models||1926||&nbsp;||Located at 260 E. Beverly Ave.<br />Metal fabricating<br />Originally, an [[w:Oakland Motor Car Company|Oakland Motor Car]] plant. Last remaining manufacturing plant of the original Pontiac Assembly complex, which was Pontiac's home plant. |- |S||[[w:Ramos Arizpe Assembly|Ramos Arizpe Assembly]]||[[w:Ramos Arizpe|Ramos Arizpe]]||[[w:Mexico|Mexico]]||[[w:Chevrolet Blazer (crossover)|Chevrolet Blazer]] (2019-) <br />[[w:Chevrolet Blazer EV|Chevrolet Blazer EV]] (2024-) <br /> [[w:Chevrolet Equinox EV|Chevrolet Equinox EV]] (2024-) <br />[[w:Cadillac Optiq|Cadillac Optiq EV]] (2025-)<br /> [[w:Honda Prologue|Honda Prologue EV]] (2024-) ||1981||&nbsp;||Ramos Arizpe opened building 4 Chevrolet models for the Mexican market: Citation, Celebrity, Malibu, and Monte Carlo. The 1985 El Camino & Caballero were the first Mexican-built GM models to be sold in the US. GM began exporting the Celebrity to the US for 1987 followed by the Buick Century for 1989. GM began exporting the Chevy Cavalier to the US for 1991 followed by the Pontiac Sunbird for 1993, which was replaced by the Sunfire for 1995. Stamping plant added in 1995 and a paint shop added in 1997. The plant was expanded to add a 2nd assembly line to build the Pontiac Aztek for 2001, followed by the Buick Rendezvous for 2002. The 2nd line was also used to build the Chevy HHR, Saturn Vue, Chevy Captiva Sport, Cadillac SRX, & Saab 9-4X. Some 2nd gen. Chevy Cruze sedans made at Ramos Arizpe were sold in the US for the '16-'17 model years. All 2nd gen. Chevy Cruze 5-d hatchbacks ('17-'19) were made in Ramos Arizpe. All Chevy Cruze production at Ramos Arizpe ended in <br> Dec. 2018. The Cruze was the last passenger car made at Ramos Arizpe. A new paint shop was added in 2021, replacing the original from 1997. EV production began in 2023.<br />Past Models: <br> Mexico or Latin America only: [[w:Chevrolet Citation|Chevrolet Citation]] (1982-1986), [[w:Chevrolet Celebrity|Chevrolet Celebrity]] (1982-1986), [[w:Chevrolet Malibu#Fourth generation (1978)|Chevrolet Malibu]] (1981), [[w:Chevrolet Monte Carlo#Fourth generation (1981–1988)|Chevrolet Monte Carlo]] (1981-1984), [[w:Oldsmobile Cutlass Ciera|Chevrolet Cutlass (Mexico only)]], [[w:Buick Century#Fifth generation (1982–1996)|Chevrolet Century (Mexico only)]], [[w:Chevrolet Chevy|Chevrolet Chevy]] (Mexico: 1995-2012), [[w:Chevrolet Captiva Sport|Chevrolet Captiva Sport]] (2008-2017), [[w:Chevrolet Sonic|Chevrolet Sonic]] (Mexico: 2012-2017).<br> Export to US: [[w:Chevrolet El Camino|Chevrolet El Camino]] (1985-1987), [[w:GMC Caballero|GMC Caballero]] (1985-1987), [[w:Chevrolet Celebrity|Chevrolet Celebrity]] (US: 1987-1989), [[w:Buick Century#Fifth generation (1982–1996)|Buick Century]] (1989-1994), [[w:Chevrolet Cavalier|Chevrolet Cavalier]] (1991-2004), [[w:Pontiac Sunbird#Second generation (1982–1988)|Pontiac Sunbird]] (1993-1994), [[w:Pontiac Sunfire|Pontiac Sunfire]] (1995-2005), [[w:Pontiac Aztek|Pontiac Aztek]] (2001-2005), [[w:Buick Rendezvous|Buick Rendezvous]] (2002-2007), [[w:Chevrolet HHR|Chevrolet HHR]] (2006-2011), [[w:Saturn Vue#Second generation (2008)|Saturn Vue]] (2008-2010), [[w:Chevrolet Captiva Sport|Chevrolet Captiva Sport]] (US: 2012-2015), [[w:Cadillac SRX#Second generation (2010)|Cadillac SRX]] (2010-2016), [[w:Saab 9-4X|Saab 9-4X]] (2011), [[w:Chevrolet Cruze#Second generation (J400)|Chevrolet Cruze]] (2016-2019), [[w:Chevrolet Equinox#Third generation (2018)|Chevrolet Equinox]] (2018-2024).<br> Export to Australia/New Zealand: [[w:Holden Equinox|Holden Equinox (EQ)]] (2018-2020) |- |&nbsp;||Ramos Arizpe Engine||[[w:Ramos Arizpe|Ramos Arizpe]]||[[w:Mexico|Mexico]]||[[w:GM E-Turbo engine|1.2L Turbo 3-cylinder engine]]<br />[[w:General Motors LS-based small-block engine#Generation V (2013–present)|Gen V Small Block V8 & V6]]||1982||&nbsp;||Past engines: [[w:General Motors 60° V6 engine|Chevrolet 60° V6 engine]]<br />[[w:GM High Value engine|GM High Value V6]]<br />[[w:GM High Feature engine|GM High Feature V6]] |- |&nbsp;||Ramos Arizpe Transmission||[[w:Ramos Arizpe|Ramos Arizpe]]||[[w:Mexico|Mexico]]||VT40 (CVT250) [[w:Continuously variable transmission|CVT]] transmission ||1999||&nbsp;||Past transmissions: [[w:GM 4L60-E transmission|4L60-E/4L65-E 4-speed automatic]]<br />[[w:GM-Ford 6-speed automatic transmission|6T70/6T75 6-speed automatic (GF6)]]<br />4ET50 EVT (for [[w:Chevrolet Volt|Chevrolet Volt]])<br />4ET55 EVT (for [[w:Cadillac ELR|Cadillac ELR]]) |- |&nbsp;||[[w:Rochester Products Division|Rochester Operations]]||[[w:Rochester, NY|Rochester, NY]]||United States||Chevrolet, GMC, Cadillac, and Buick Components - Engine management systems, fuel injection systems, and related products. ||1939||&nbsp;||Located at 1000 Lexington Avenue. Founded in 1908 as the Rochester Coil Company. Renamed North East Electric Company in 1909. Acquired by GM in 1929. In 1930, merged with Delco-Light Co. to become Delco Appliance. A planned, second Delco Appliance plant on Lexington Ave. in Rochester instead became the Rochester Products Division of GM in 1939. This division made carburetors, fuel injection systems, & other fuel system equipment. During WWII, it made warplane and tank electrical accessories. In 1981, Rochester Products Division merged with GM's Diesel Equipment Division of Grand Rapids, Michigan retaining the Rochester Products Division name. On August 30, 1988, Rochester Products Division merged with GM's AC Spark Plug Division to form the AC Rochester Division. The Grand Rapids-based diesel fuel-injection business of the former Diesel Equipment Division was sold on August 26 to a joint venture of G.M. and the Penske Corporation called Diesel Technology Corporation (80% Penske, 20% Detroit Diesel, itself a joint venture between Penske & GM). Robert Bosch invested in Diesel Technology Corporation in 1992, eventually taking over the whole company by 2002. AC Rochester merged with parts of Delco Remy (the parts not spun off into Remy International) in 1994 to form AC Delco Systems. AC Delco Systems became part of GM's Delphi Automotive Systems subsidiary in 1995. Spun off with Delphi Automotive Systems in 1999 (Rochester Powertrain); taken back under [[w:Delphi Corporation|Delphi Corporation]] bankruptcy and made part of [[w:General Motors Components Holdings|General Motors Components Holdings]] in 2009. |- |&nbsp;||[[w:Romulus Engine|Romulus Engine]]||[[w:Romulus, Michigan|Romulus, Michigan]]||United States||[[w:GM High Feature engine#Fourth generation|Gen4 High Feature V6]] ||1976||&nbsp;||Located at 36880 Ecorse Road. Originally part of GM's Detroit Diesel Allison Division where it built diesel engines and components. Switched to gasoline engines in the 1980's.<br /> Past engines: [[w:Chevrolet 90° V6 engine|Chevrolet 90° V6 engine]]<br />[[w:General Motors LS-based small-block engine#Generation III (1997–2007)|Gen III Small Block V8]]<br />[[w:GM LS engine#Generation IV (2005–2020)|Gen IV Small Block V8]] |- |&nbsp;||[[w:Romulus Engine|Romulus Transmission]]||[[w:Romulus, Michigan|Romulus, Michigan]]||United States||[[w:"Ford-GM 10-speed automatic transmission#General Motors|10L80/90 Transmission]]||1995||&nbsp;||Located at 36880 Ecorse Road.<br />Past transmissions: [[w:GM 4L60-E transmission|GM 4L60-E transmission]] |- |R||Rosario||[[w:Alvear, Santa Fe|Alvear]], [[w:Rosario Department|Rosario Department]], [[w:Santa Fe Province|Santa Fe Province]]||[[w:Argentina|Argentina]]||<br/>[[w:Chevrolet Tracker (2019)|Chevrolet Tracker]] Engines: [[w:GM small gasoline engine#LE2|1.4L Turbo I4 LE2]] ||1997||&nbsp;||Engine plant added in 2016. Past Models: [[w:Chevrolet Cruze#Second generation (J400)|Chevrolet Cruze]], [[w:Opel Corsa#Corsa C (X01; 2000)|Chevrolet Corsa C]], [[w:Opel Corsa#Corsa B|Chevrolet Corsa B/Corsa Classic/Classic]], [[w:Chevrolet Agile|Chevrolet Agile]]<br /> and [[w:Chevrolet Tracker (Americas)#Second generation|Suzuki Grand Vitara/Chevrolet Tracker]] |- |&nbsp;||[[w:Saginaw Metal Casting Operations|Saginaw Metal Casting Operations]]||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||Metal casting for powertrains (High Feature V6 engine): engine blocks, heads, and crankshafts<br/>Front 4WD axle assembly castings||1919||&nbsp;||Located at 1629 N. Washington Avenue. Originally the Grey Iron Foundry, a part of General Motors Saginaw Products Co. and renamed as Chevrolet Saginaw Grey Iron Foundry when transferred to Chevrolet Motor Division in 1927. Moved to Central Foundry Division in 1983. Joins GM Powertrain Division in 1991. Renamed Saginaw Metal Casting Operations in 1994 to reflect that it now pours aluminum. First production aluminum heads produced in 1995. Over the years, it has produced both cast iron and cast aluminum engine blocks for the Chevy Small-Block V8. |- |L||[[w:San Luis Potosí Assembly|San Luis Potosí Assembly]]||[[w:San Luis Potosí, San Luis Potosí|San Luis Potosí]]||[[w:Mexico|Mexico]]||[[w:Chevrolet Equinox#Fourth generation (2025)|Chevrolet Equinox]] (2025-)<br />[[w:GMC Terrain#Third generation (2025)|GMC Terrain]] (2025-)||2008||&nbsp;||Note: Aveo & G3 made in San Luis Potosi were not sold in the US but they were sold in Canada. Onix was not sold in the US or Canada. 2013-2014 Trax was sold in Canada & Mexico but not in the US.<br> Past models: [[w:Chevrolet Aveo (T200)|Chevrolet Aveo (T250)]] (2009-2018)<br />[[w:Pontiac G3|Pontiac G3/G3 Wave]] (2009-2010)<br />[[w:Chevrolet Onix#Second generation (2019)|Chevrolet Onix]] (2020-2022)<br />[[w:Chevrolet Trax#First generation (U200; 2013)|Chevrolet Trax]] (2013-2020)<br />[[w:Chevrolet Equinox#Third generation (2018)|Chevrolet Equinox]] (2018-2024)<ref>{{Cite web|url=https://vpic.nhtsa.dot.gov/mid/home/displayfile/7c659360-416a-4e96-ae38-0b69d916c106|title=GM Vehicle Identification Numbering Standard - 2021 - United States and Canada|date=August 14, 2020}}</ref><br />[[w:GMC Terrain#Second generation (2018)|GMC Terrain]] (2018-2024) |- |&nbsp;||San Luis Potosí Transmission||[[w:San Luis Potosí, San Luis Potosí|San Luis Potosí]]||[[w:Mexico|Mexico]]||FWD GF9 9 Speed Transmissions||2009||&nbsp;||[[w:GM-Ford 6-speed automatic transmission|GM-Ford 6-speed automatic transmission]] 6T40/45 (GF6) |- |B||[[w:General Motors do Brasil|São Caetano do Sul Assembly]]||[[w:São Caetano do Sul|São Caetano do Sul]], [[w:São Paulo (state)|São Paulo]]||[[w:Brazil|Brazil]]|| [[w:Chevrolet Montana#Third generation (2022)|Chevrolet Montana]] <br /> [[w:Chevrolet Spin|Chevrolet Spin]]<br />[[w:Chevrolet Tracker (2019)|Chevrolet Tracker]]<br /> ||1930||&nbsp;||Past Models: [[w:Opel Astra#G|Chevrolet Astra]], [[w:Opel Astra#H |Chevrolet Vectra/Vectra GT]] (both until 2011), [[w:Chevrolet C/K#1985–1996|Chevrolet Bonanza]], [[w:Chevrolet C/K#1964–1984|Chevrolet C-10/C-14/C-15/Chevy 4/D-10/A-10]], [[w:Chevrolet D-20|Chevrolet A-10/C-10/A-20/C-20/D-20]], Chevrolet A40/D40, [[w:Chevrolet Cobalt#Second generation (2011)|Chevrolet Cobalt]], [[w:Chevrolet Comodoro|Chevrolet Comodoro]], [[w:Opel Corsa#Corsa B (S93; 1993)|Chevrolet Corsa B]], [[w:Chevrolet Corsa|Chevrolet Corsa Classic]], [[w:Chevrolet Cruze#First generation (J300; 2008)|Chevrolet Cruze]], [[w:Chevrolet Diplomata|Chevrolet Diplomata]], [[w:Chevrolet Onix|Chevrolet Joy]], [[w:Chevrolet Kadett|Chevrolet Kadett]] 1996-1998, [[w:Chevrolet Montana#Second generation (2011–2021)|Chevrolet Montana]], [[w:Opel Ascona#Chevrolet Monza|Chevrolet Monza]], [[w:Chevrolet Omega#Omega A|Chevrolet Omega A]], [[w:Chevrolet Opala|Chevrolet Opala]], [[w:Opel Vectra#Vectra A (1988–1995)|Chevrolet Vectra A]], [[w:Opel Vectra#Vectra B (1995–2002)|Chevrolet Vectra B]], [[w:Chevrolet Veraneio|Chevrolet C-1416/Veraneio]], Chevrolet 3100/Brasil/Amazona/Alvorada/Corisco, Chevrolet 6500, Chevrolet C64/C65/C68/D64/D65/D68/D74/D75/D78,<br> Bus bodies, Frigidaire appliances |- |C||[[w:General Motors do Brasil|São José dos Campos Assembly]]||[[w:São José dos Campos|São José dos Campos]], [[w:São Paulo (state)|São Paulo]]||[[w:Brazil|Brazil]]|| [[w:Chevrolet S-10#Third generation (2012)|Chevrolet S-10]]<br/>[[w:Chevrolet Trailblazer (SUV)#Second generation (RG; 2011)|Chevrolet Trailblazer]] Engines:<br/> 2.8L turbodiesel <br> 4-cylinder engines<br /> Transmissions |1959||&nbsp;||Supplied 1.8L & 2.0L SOHC Family II I4 engines to the US from 1982-1994. <br />Past Models: [[w:Chevrolet Montana#First generation (2003–2010)|Chevrolet Montana]]<br /> [[w:Chevrolet S-10 Blazer#Second generation (1995)|Chevrolet Blazer]], [[w:Opel Corsa#Corsa C (X01; 2000)|Chevrolet Corsa C]], [[w:Opel Corsa#Corsa C (X01; 2000)|Chevrolet Corsa Sedan C]], [[w:Opel Meriva#First generation (2003)|Chevrolet Meriva]], [[w:Opel Zafira#Zafira A (1999–2006)|Chevrolet Zafira]] (all until 2012)<br />[[w:Chevrolet Chevette|Chevrolet Chevette]], [[w:Chevrolet Chevette#Chevy 500|Chevrolet Chevy 500]], [[w:Chevrolet Kadett|Chevrolet Kadett]] 1989-1996, [[w:Chevrolet S-10#Second generation (1994)|Chevrolet S-10]], [[w:Chevrolet C/K#1997–2002|Chevrolet Silverado D20]], Chevrolet 11000/12000/14000/22000, [[w:GMC Chevette|GMC Chevette]], [[w:GMC Chevette|GMC 500]], [[w:Chevrolet C/K#1997–2002|GMC 6-100/6-150/3500HD]], [[w:Chevrolet Kodiak#Second generation (1990–2002)|GMC 12-170/14-190/16-220]], [[w:Isuzu Forward|GMC 15-190]] Engines including: [[w:Chevrolet Stovebolt engine#261|Chevrolet Jobmaster 261 I6]], [[w:Chevrolet 153 4-cylinder engine#Brazil|Chevrolet 153 4-cylinder]], [[w:Chevrolet Turbo-Thrift engine|Chevrolet Turbo-Thrift engine]], [[w:GM Family 1 engine|GM Family 1 engine]], [[w:GM Family II engine|GM Family II engine]]<br />Detroit Diesel Series 53<br />Transmissions |- |G||[[Silao Assembly]]||[[w:Silao, Mexico|Silao]]||[[w:Mexico|Mexico]]||[[w:Chevrolet Silverado|Chevrolet Silverado]] (2006-)<br />[[w:Chevrolet Silverado|GMC Sierra]] (2006-), Chevrolet Cheyenne (Mexico)||1995||&nbsp;|| Stamping plant added in 1997. Began by building full-size SUVs for 1995. Was the sole assembler of GM's full-size SUTs. Began building full-size pickups for 2006. Full-size SUV production moved entirely to Arlington Assembly after the 2009 model year.<br> Past production models: [[w:Chevrolet Suburban|Chevrolet Suburban]] (1995-2009), [[w:Chevrolet Suburban#Eighth generation (1992)|GMC Suburban]] (1995-1999), [[w:GMC Yukon XL|GMC Yukon XL]] (2000-2006), [[w:Cadillac Escalade#Second generation (2002)|Cadillac Escalade ESV]] (2003-2006),<br> [[w:Chevrolet Suburban (eighth generation)#Holden Suburban|Holden Suburban (K8)]] (1998-2001),<br> [[w:Chevrolet Avalanche|Chevrolet Avalanche]] (2002-2013),<br> [[w:Cadillac Escalade EXT|Cadillac Escalade EXT]] (2002-2013) |- |&nbsp;||Silao Engine||[[w:Silao, Mexico|Silao]]||[[w:Mexico|Mexico]]||[[w:General Motors LS-based small-block engine#Generation V (2013–present)|Gen V Small Block V8]]||2001||&nbsp;||[[w:General Motors LS-based small-block engine#Generation IV (2005–2020)|Gen IV Small Block V8]] |- |&nbsp;||Silao Transmission||[[w:Silao, Mexico|Silao]]||[[w:Mexico|Mexico]]||[[w:GM 8L45 transmission|8L45]], [[w:GM 8L90 transmission|8L90]], [[w:Ford-GM 10-speed automatic transmission|10L80]]||2008||&nbsp;||[[w:GM 6L50 transmission|6L50]], [[w:GM 6L80 transmission|6L80/90]] |- |Z,<br />S (Traverse & Vue)||[[w:Spring Hill Manufacturing|Spring Hill Manufacturing]]||[[w:Spring Hill, Tennessee|Spring Hill, Tennessee]]||United States||<br /> [[w:Cadillac XT5|Cadillac XT5]] (2017-)<br />[[w:Cadillac Lyriq|Cadillac Lyriq]] (2023-) <br />[[w:Cadillac Vistiq|Cadillac Vistiq]] (2026-) <br /><br /> [[w:Chevrolet Blazer|Chevrolet Blazer]] (Starting 2027) <br /> <br />[[w:GM small gasoline engine#1.5|1.5L Turbo I4]]<br />[[w:GM Ecotec engine#Generation III|Ecotec Gen III 2.0L Turbo I4]]<br />[[w:GM L3B engine|2.7L L3B turbo I4]]<br />5.3 & 6.2 [[w:LS based GM small-block engine#Generation V (2013–present)|Gen V <br />Small-Block V8 Engine]]<br /><br />Stamping<br />Components||1990||2009-2012||Located at 100 Saturn Parkway. The original home of the [[w:Saturn Corporation|Saturn]] brand. Originally, Saturn built everything here - all its vehicles, engines, transmissions, stampings, and components. But, gradually, Saturn production was broadened to other plants and by 2007, Saturn production in Spring Hill had ended. Spring Hill made products for other GM brands and has continued to do so since Saturn was closed down during GM's bankruptcy. <br /> Past models: [[w:Saturn S-Series|Saturn S-Series]] (1991-2002), [[w:Saturn Ion|Saturn Ion]] (2003-2007), [[w:Saturn Vue#First generation (2002)|Saturn Vue]] (2002-2007), [[w:Chevrolet Traverse#First generation (2009)|Chevrolet Traverse]] (2009-2010), [[w:Chevrolet Equinox#Second generation (2010)|Chevrolet Equinox]] (2013-2016), [[w:GMC Acadia#Second generation (2017)|GMC Acadia]] (2017-2023), [[w:Holden Acadia|Holden Acadia (AC)]], [[w:Cadillac XT6|Cadillac XT6]] (2020-2025),<br /> [[w:Acura ZDX#Second generation (2024)|Acura ZDX EV]] (2024).<br /> Past Engines: [[w:Saturn I4 engine|Saturn I4 engine]], [[w:GM Ecotec engine#2.4|Ecotec Gen II 2.4L I4]],<br> [[w:GM Ecotec engine#LHU (A20NFT Opel)|Ecotec Gen II LHU 2.0L Turbo I4]], [[w:GM Ecotec engine#Generation III|Ecotec Gen III 2.5L I4]] <br /> [[w:Saturn MP transmission|Saturn MP series manual and automatic transmissions]] Transmission production in Spring Hill ended in 2002. Ion production ended March 28, 2007 and was replaced by the Belgian-built Astra for the 2008 model year. Vue production ended March 30, 2007 and moved to Mexico for the 2008 model year. Assembly was idled for more than a year beginning April 1, 2007 for conversion to Chevy Traverse production. Traverse production began September 2, 2008. Assembly idled in November 2009 when Chevy Traverse production was moved to Lansing Delta Township Assembly. Assembly reopened in September 2012<ref>{{cite news| url=https://www.nytimes.com/2011/09/18/business/general-motors-said-to-offer-bonuses-in-new-deal-with-workers.html | work=The New York Times | author1=Bill Vlasic | author2=Nick Bunkley | title=G.M. Will Offer Bonuses in New Deal With Workers | date=September 17, 2011}}</ref> to produce the [[w:Chevrolet Equinox#Second generation (2010)|Chevrolet Equinox]]. Spring Hill also includes a plastic injection molding operation that produce various plastic components. Plastic components have also been produced for models not built in Spring Hill such as [[w:Chevrolet Traverse|Chevrolet Traverse]] and the [[w:Chevrolet Corvette (C7)|Chevrolet Corvette (C7)]]. |- |&nbsp;||[[w:St. Catharines Engine Plant|St. Catharines Propulsion Plant]]||[[w:St. Catharines, Ontario|St. Catharines, Ontario]]||[[w:Canada|Canada]]||[[w:General Motors LS-based small-block engine#Generation V (2013–present)|Gen V Small Block V8]]<br />[[w:Tremec|Tremec]] TR-9080 8-speed dual clutch transmission<br />Engine components||1954||&nbsp;||Located at 570 Glendale Avenue. Operated as part of GM subsidiary McKinnon Industries, Ltd. until 1969 when it became "General Motors of Canada Limited, St. Catharines".<br />Previously:<br />[[w:Chevrolet Turbo-Thrift engine|Chevrolet Turbo-Thrift I6 engine]] (1963-1967)<br />[[w:Oldsmobile V8 engine|Oldsmobile Rocket V8 engine]] (through 1966)<br />[[w:Buick V6 engine#225|Buick 225 V6 engine]] (through 1966)<br />[[w:Buick V8 engine|Buick V8 engine]] (300, 340, 401) (through 1966)<br /> [[w:General Motors 60° V6 engine|Chevrolet 60° OHV V6 engine]] (2.8, 3.1)<br />[[w:General Motors 60° V6 engine#LQ1|Chevrolet 3.4L DOHC LQ1 V6 engine]]<br />[[w:GM High Feature engine|High Feature V6 engine]] (2.8, 3.6)<br />[[w:Chevrolet small-block engine (first and second generation)|Chevrolet Small-Block V8]] (265/267/283/305/307/327/350)<br />[[w:General Motors LS-based small-block engine#Generation III (1997–2007)|Gen III Small Block V8]]<br />[[w:GM LS engine#Generation IV (2005–2020)|Gen IV Small Block V8]]<br />[[w:GM 6T40 transmission|(GF6) 6T45 6-speed automatic]] |- |&nbsp;||[[w:Toledo Transmission|Toledo Transmission]]||[[w:Toledo, Ohio|Toledo, Ohio]]||United States||Transmissions:<br /> RWD GM-Allison 10-speed (10L1000) (AB1V) / 8-speed ([[w:GM 8L45 transmission|8L45]] & [[w:GM 8L90 transmission|8L90]]) <br /> FWD GF9 9 Speed Transmissions||1956|| ||Located at 1455 West Alexis Road. Acquired from the former Martin-Parry Corporation in 1955. Replaced the older Toledo plant on Central Ave. <br />Previously:<br /> [[w:Turbo-Hydramatic#THM350|THM350 3-speed automatic]]<br />[[w:Turbo-Hydramatic#THM700R4 / 4L60 / 4L60E / 4L65E / 4L70E|THM700R4/4L60 4-speed automatic]]<br />[[w:GM 4L60-E transmission|4L60-E/4L65-E/4L70-E 4-speed automatic]]<br />[[w:GM 6T40 transmission|(GF6) 6T30/35/40/45/50 6-speed automatic]] <br /> ([[w:GM 6L50 transmission|6L45/6L50]] & [[w:GM 6L80 transmission|6L80/6L90]]) 6-speed automatics |- ||&nbsp;||Toluca Engine||[[w:Toluca|Toluca]], [[w:State of Mexico|State of Mexico]] |[[w:Mexico|Mexico]] |[[w:GM small gasoline engine|GM Small Gasoline Engine 1.4L/1.5L I4]] (including 1.5 turbo LSD I4 for Equinox/Terrain) [[w:Chevrolet 153 4-cylinder engine#Vortec 3000|Vortec 3000 Marine & Industrial 4-cyl. engine]]<br /> 5.0 & 5.7 Marine & Industrial V8 engines<br /> Small-Block V8 engines for the aftermarket<br /> Aluminum Foundry<br /> |1965 | |Past engines: [[w:GM Family 1 engine|GM Family 1 I4 engine]] <br />[[w:Chevrolet Turbo-Thrift engine#292|Chevrolet 292 (4.8L) Inline-6]] |- |&nbsp;||[[w:Tonawanda Engine|Tonawanda Engine]]||[[w:Buffalo, New York|Buffalo, New York]]||United States||[[w:LS based GM small-block engine#LV1|LV1]] 4.3L V6 [[w:LS based GM small-block engine#L84|L84]] 5.3L V8 [[w:LS based GM small-block engine#L86/L87|L87]] 6.2L V8 [[w:General Motors LS-based small-block engine#LT2|LT2]] 6.2L V8 [[w:LS based GM small-block engine#L8T|L8T]] 6.6L V8 [[w:GM Ecotec engine#LSY|LSY]] 2.0T I4 |1938 |&nbsp;||Located at 2995 River Rd. Includes 3 plants. Plant #1 opened in 1938. Plant #4 opened in 1941. Plant #5 opened in 2001. Past engines: Built the [[w:Pratt & Whitney R-1830 Twin Wasp|Pratt & Whitney R-1830 Twin Wasp]] radial engine used in the [[w:B-24 Liberator|B-24 Liberator]] bomber during WW-2 Built the [[w:Pratt & Whitney R-2800 Double Wasp|Pratt & Whitney R-2800 Double Wasp]] radial engine used in the [[w:P-61 Black Widow|P-61 Black Widow]] & [[w:P-47 Thunderbolt|P-47 Thunderbolt]] fighters during WW-2 [[w:Chevrolet 2300 engine|Chevrolet 2300 engine]] (Vega I4) [[w:General Motors 122 engine|Chevrolet 122 engine]] (1.8/2.0/2.2L OHV I4) [[w:GM Ecotec engine#2.2|Ecotec 2.2L Gen I]] (L850) [[w:GM Ecotec engine#2.2_2|Ecotec 2.2L Gen II]], [[w:GM Ecotec engine#2.4|Ecotec 2.4L Gen II]] [[w:GM Ecotec engine#LTG|Ecotec Gen III LTG 2.0T I-4]], [[w:GM Ecotec engine#2.5|Ecotec 2.5L Gen III]] [[w:General Motors Atlas engine#LK5 (Vortec 2800)|Atlas 2.8/2.9 I4]]<br />[[w:General Motors Atlas engine#L52 (Vortec 3500)|Atlas 3.5/3.7 I5]] [[w:Chevrolet Turbo-Air 6 engine|Corvair Flat-6 (all)]] [[w:Chevrolet Stovebolt engine#Second generation: 1937–1962|Chevrolet Stovebolt / Blue Flame I6]] [[w:Chevrolet 90° V6 engine|Chevrolet 3.3L/3.8L/4.3L 90° V6]] [[w:General Motors 60° V6 engine|Chevrolet 60° V6 engine]], [[w:GM High Value engine|High Value 3.9L V6]] [[w:Chevrolet small-block engine (first and second generation)|Chevrolet Small-Block V8]] [[w:Chevrolet Big-Block engine|Chevrolet Big-Block V8]] Gen V Small-Block 90° V6/V8: [[w:LS based GM small-block engine#LV3|LV3]] 4.3L V6, [[w:LS based GM small-block engine#L82|L82]] 5.3L V8, [[w:LS based GM small-block engine#L83|L83]] 5.3L V8, [[w:LS based GM small-block engine#L86|L86]] 6.2L V8, [[w:LS based GM small-block engine#LT1|LT1]] 6.2L V8, [[w:LS based GM small-block engine#LT4|LT4 6.2L Supercharged V8]] |- |&nbsp;||[[w:Ultium#Production|Ultium Cells LLC - Spring Hill]]||[[w:Spring Hill, Tennessee|Spring Hill, Tennessee]]||United States||Ultium lithium-ion battery cells for EV's||2024|| || Owned by Ultium Cells LLC, a 50/50 joint venture between General Motors and [[w:LG Energy Solution|LG Energy Solution]]. This is Ultium Cells' second plant. Located at 301 Donald F Ephlin Pkwy. |- |&nbsp;||[[w:Ultium#Production|Ultium Cells LLC - Warren]]||[[w:Warren, Ohio|Warren, Ohio]]||United States||Ultium lithium-ion battery cells for EV's||2022|| || Owned by Ultium Cells LLC, a 50/50 joint venture between General Motors and [[w:LG Energy Solution|LG Energy Solution]]. This is Ultium Cells' first plant. Located at 7400 Tod Ave SW. |- |1||[[w:Wentzville Assembly|Wentzville Assembly]]||[[w:Wentzville, Missouri|Wentzville, Missouri]]||United States||[[w:Chevrolet Express|Chevrolet Express]] (1996-)<br />[[w:GMC Savana|GMC Savana]] (1996-)<br />[[w:Chevrolet Colorado|Chevrolet Colorado]] (2015-)<br />[[w:GMC Canyon|GMC Canyon]] (2015-)||1983||&nbsp;||Located at 1500 E. Rte. A. Originally opened to build the 1985 Fwd C-bodies. Began building Fwd H-bodies for 1986. On Oct. 29, 1991, Wentzville built the 30 millionth Pontiac, a white 1992 Bonneville SSEi. Ended passenger car production in 1994. Converted to truck production. Began building full-size vans in 1996. Added midsize pickups in 2014. <br />Past models: [[w:Buick Electra#Sixth generation (1985–1990)|Buick Electra]] (1985-1990), [[w:Buick Park Avenue#First generation (1991–1996)|Buick Park Avenue]] (1991-1994), [[w:Oldsmobile 88#Ninth generation (1986–1991)|Oldsmobile Delta 88/88]] (1986-1991),<br> [[w:Oldsmobile 88#Tenth generation (1992–1999)|Oldsmobile 88]] (1992-1993), [[w:Oldsmobile 98#Eleventh generation (1985–1990)|Oldsmobile 98]] (1985-1989), [[w:Oldsmobile Touring Sedan|Oldsmobile Touring Sedan]] (1989),<br> [[w:Pontiac Bonneville#Eighth generation (1987–1991)|Pontiac Bonneville]] (1989-1991), [[w:Pontiac Bonneville#Ninth generation (1992–1999)|Pontiac Bonneville]] (1992-93) |- |A||[[w:SAIC-GM|SAIC-GM]] Shanghai plant||[[w:Jinqiao|Jinqiao]], [[w:Pudong|Pudong]] district, [[w:Shanghai|Shanghai]]||[[w:China|China]]||[[w:Cadillac CT4|Cadillac CT4]]<br />[[w:Cadillac CT5|Cadillac CT5]]<br />[[w:Cadillac CT6|Cadillac CT6]]<br />[[w:Cadillac Lyriq|Cadillac Lyriq]]<br />[[w:Cadillac Vistiq|Cadillac Vistiq]]<br>[[w:Cadillac XT4|Cadillac XT4]]<br />[[w:Cadillac XT5|Cadillac XT5]]<br />[[w:Cadillac XT6|Cadillac XT6]]<br />[[w:Chevrolet Blazer (crossover)#Chinese version|Chevrolet Blazer]]<br />[[w:Chevrolet Malibu#Ninth generation (2016)|Chevrolet Malibu XL]]<br />[[w:Buick Enclave#China (2020)|Buick Enclave]]<br />[[w:Buick GL8#Third generation (2017–present)|Buick GL8 ES/Avenir/PHEV (Mk III)]]<br />[[w:Buick GL8#Fourth generation (2022)|Buick GL8 Century (Mk IV)]]<br />[[w:Buick LaCrosse|Buick LaCrosse]]<br />[[w:Buick Regal#Sixth generation (2018)|Buick Regal]] (E2XX)<br />Engines<br />Engine components<br />Transmissions<br />Ultium batteries||1998||&nbsp;||Operated by [[w:SAIC-GM|SAIC-GM]]. There are 3 vehicle production plants (North, South, & East). North was the original plant. South began production in 2005. The East or "Cadillac" plant began production in 2016. On October 28, 2025, the Shanghai plant produced its 4 millionth vehicle, a 2026 Cadillac XT5. Past models: [[w:Buick Century#Sixth generation (1997–2005)|Buick New Century]] (W-body)<br />[[w:Buick Excelle#First generation (J200; 2003)|Buick Excelle]]<br />[[w:Buick GL8#First generation (2000–2016)|Buick GL8 Mk I (1999-2004)]]<br />[[w:Buick Park Avenue#Third generation (2007–2012)|Buick Park Avenue (WM)]] (CKD)<br />[[w:Buick Regal#China|Buick Regal]] (W-body)<br />[[w:Buick Regal#Fifth generation (2008)|Buick Regal]] (Epsilon II)<br />[[w:Buick Sail|Buick Sail]]<br />[[w:Buick Velite 5|Buick Velite 5]]<br />[[w:Buick Velite 7|Buick Velite 7]]<br />[[w:Chevrolet Malibu#Eighth generation (2013)|Chevrolet Malibu]]<br />[[w:Cadillac ATS#ATS-L|Cadillac ATS-L]]<br />[[w:Cadillac CTS#First generation (2003)|Cadillac CTS]]<br />[[w:Cadillac STS#Chinese Cadillac SLS|Cadillac SLS]]<br />[[w:Cadillac XTS|Cadillac XTS]]<br /> Past Engines: [[w:General Motors 60° V6 engine#Production in China by SAIC-GM|Chevrolet 60° OHV V6]] |- |D||[[w:SAIC-GM|SAIC-GM]] Dongyue Motors||[[w:Yantai|Yantai]], [[w:Shandong|Shandong]]||[[w:China|China]]||[[w:Buick Envision|Buick Envision]]<br />[[w:Cadillac GT4|Cadillac GT4]]||2001||&nbsp;||Operated by [[w:SAIC-GM|SAIC-GM]]. Originally founded in 2001 as Yantai Bodyshop Corp. which built Daewoo vehicles ([[w:Daewoo Lanos|Daewoo Lanos]]) under license from Daewoo Motor Co. SAIC-GM took over the plant in 2002. There are 2 vehicle production plants (North & South). SAIC-GM Dongyue Motors joint venture is owned 50% by SAIC-GM, 25% by GM China, & 25% by SAIC. <br /> Past models: [[w:Buick Encore#First generation (2013)|Buick Encore]]<br />[[w:Buick Encore GX|Buick Encore GX]]<br />[[w:Buick Encore GX|Buick Encore Plus]]<br />[[w:Buick Excelle#Second generation (2018)|Buick Excelle]]<br />[[w:Buick Excelle GT#First generation (2009)|Buick Excelle GT/XT]]<br />[[w:Chevrolet Sail#Buick Sail|Buick Sail]]<br />[[w:Chevrolet Aveo#Second generation (T300; 2012)|Chevrolet Aveo (T300)]]<br />[[w:Chevrolet Sail#Third generation (2014)|Chevrolet Aveo (Mex.)]]<br />[[w:Chevrolet Sail#Chevrolet Sail|Chevrolet Corsa Plus (Chile)]]<br />[[w:Daewoo Magnus|Chevrolet Epica (V200)]]<br />[[w:Daewoo Tosca|Chevrolet Epica]] (V250)<br />[[w:Chevrolet Aveo (T200)|Chevrolet Lova]]<br />[[w:Chevrolet Lova RV|Chevrolet Lova RV]]<br />[[w:Chevrolet Onix#Second generation (2019)|Chevrolet Onix]]<br />[[w:Chevrolet Orlando#Second generation (2018)|Chevrolet Orlando]]<br />[[w:Chevrolet Sail|Chevrolet Sail]]<br />[[w:Chevrolet Trailblazer (crossover)|Chevrolet Trailblazer]]<br />[[w:Chevrolet Trax|Chevrolet Trax]] |- |&nbsp;||[[w:SAIC-GM|SAIC-GM]] Dongyue Powertrain||[[w:Yantai|Yantai]], [[w:Shandong|Shandong]]||[[w:China|China]]||Engines<br />Transmissions including: [[w:GM 6T40 transmission|6T30/6T40/6T45/6T50]], [[w:Continuously variable transmission|CVT]]||1999||&nbsp;||Operated by [[w:SAIC-GM|SAIC-GM]]. Originally founded in 1999 as Shandong Daewoo Automotive Engine Co., Ltd., a 50/50 joint venture between Daewoo Motor Co. & Chinese partners owned by the Shandong provincial govt. SAIC-GM took over the plant in 2005. SAIC-GM Dongyue Powertrain joint venture is owned 50% by SAIC-GM, 25% by GM China, & 25% by SAIC. <br /> Past Engines: [[w:GM Family 1 engine#Generation III|Family I, Gen 3 engine]] |- |&nbsp;||[[w:SAIC-GM|SAIC-GM]] Norsom Motors||[[w:Shenyang|Shenyang]], [[w:Liaoning|Liaoning]]||[[w:China|China]]|| ||1992||2025||Operated by [[w:SAIC-GM|SAIC-GM]]. Originally founded in 1992 as Jinbei GM Automotive Co. Ltd., a 30/70 joint venture between GM & Shenyang Jinbei Automotive. Restructured into a 50/50 joint venture between GM & Jinbei in 1998. SAIC-GM took over the joint venture in 2004, buying out Jinbei. The new SAIC-GM Norsom Motors joint venture is owned 50% by SAIC-GM, 25% by GM China, & 25% by SAIC. Plant closed in February 2025 due to declining sales in China by SAIC-GM. Past models:<br /> Jinbei GM:<br />[[w:Chevrolet S-10 Blazer#Second generation (1995–2005)|Chevrolet Blazer]]<br />[[w:Chevrolet S-10#Second generation (1994)|Chevrolet S-10 Crew Cab]]<br />SAIC-GM:<br />[[w:Chevrolet Cruze|Chevrolet Cruze]]<br />[[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]]<br />[[w:Chevrolet Tracker (2019)|Chevrolet Tracker]] <br />[[w:Chevrolet Seeker|Chevrolet Seeker]]<br/> [[w:Buick Encore#Second generation (2020)|Buick Encore]]<br />[[w:Buick Envista|Buick Envista]]<br />[[w:Buick GL8#First generation (2000–2016)|Buick GL8 Mk I (2004-2016)]]<br />[[w:Buick GL8#Second generation (2010-present)|Buick GL8 Land Business Class (Mk II) (2010-2025)]]<br />[[w:Buick Verano#Second generation (2016)|Buick Verano]] <br/> Engines |- |V||[[w:SAIC-GM|SAIC-GM]] Wuhan Branch||[[w:Wuhan|Wuhan]], [[w:Hubei|Hubei]]||[[w:China|China]]||[[w:Chevrolet Equinox#Fourth generation (2025)|Chevrolet Equinox Plus]]<br />[[w:Chevrolet Monza (China)|Chevrolet Monza]]<br />[[w:Chevrolet Menlo|Chevrolet Menlo]]<br />[[w:Buick Verano#Third generation (Pro, 2021)|Buick Verano Pro]]<br />[[w:Buick Velite 6|Buick Velite 6]]<br />[[w:Buick Electra E5|Buick Electra E5]]<br />[[w:Buick Electra L7|Buick Electra L7]]<br />[[w:Cadillac Optiq|Cadillac Optiq]]<br /> Engines||2015<ref>{{Cite news |author=Joseph Szczesny |date=30 January 2015 |title=Ford, GM Implement Expansion Plans in China |work=The Detroit Bureau |url=https://www.thedetroitbureau.com/2015/01/ford-gm-implement-expansion-plans-in-china/ |access-date=19 June 2022}}</ref>||&nbsp;||Operated by [[w:SAIC-GM|SAIC-GM]].<ref>{{Cite news |author=Jamie L. LaReau |date=27 February 2020 |title=Restart of GM's plant in China stalls due to coronavirus crisis |work=Detroit Free Press |url=https://www.freep.com/story/money/cars/general-motors/2020/02/27/gm-delays-start-production-china-plant-due-coronavirus-crisis/4884203002/ |access-date=19 June 2022}}</ref> Past models: [[w:Chevrolet Cavalier#China|Chevrolet Cavalier]] <br />[[w:Chevrolet Equinox#Third generation (2018)|Chevrolet Equinox]]<br />[[w:Buick Electra E4|Buick Electra E4]]<br />[[w:Buick Excelle GT#Second generation (2015)|Buick Excelle GT/GX]]<ref>{{Cite news |author=Sam McEachern|date=28 February 2020 |title=GM Delays Production Restart At Wuhan Plant As Coronavirus Crisis Continues |work=GM Authority |url=https://gmauthority.com/blog/2020/02/gm-delays-production-restart-at-wuhan-plant-as-coronavirus-crisis-continues/ |access-date=19 June 2022}}</ref><br />[[w:Buick GL6|Buick GL6]] |- |&nbsp;||[[w:SAIC-GM-Wuling|SAIC-GM-Wuling]] (HQ plant)||[[w:Liuzhou|Liuzhou]], [[w:Guangxi Zhuang Autonomous Region|Guangxi Zhuang Autonomous Region]]||[[w:China|China]]|| [[w:SAIC-GM-Wuling|Wuling]] models<br />Engines||1982||&nbsp;||Operated by [[w:SAIC-GM-Wuling|SAIC-GM-Wuling]]. There are 2 vehicle production plants (East & West). SAIC & GM jointly created the joint venture with Wuling in 2002. The SAIC-GM-Wuling joint venture was originally owned 50.1% by SAIC, 34% by GM China, & 15.9% by Liuzhou Wuling Automobile Industry Co., Ltd. Since 2011, SAIC-GM-Wuling is now owned 50.1% by SAIC, 44% by GM China, & 5.9% by Liuzhou Wuling Motors Co., Ltd. Engine plant added in 2007. Past models: [[w:Chevrolet Spark#Lechi (China)|Chevrolet Lechi (Spark)]], [[w:Baojun 630|Baojun 630]] |- |&nbsp;||[[w:SAIC-GM-Wuling|SAIC-GM-Wuling]] [[w:Baojun|Baojun]] Base||Liudong New District, [[w:Liuzhou|Liuzhou]], [[w:Guangxi Zhuang Autonomous Region|Guangxi Zhuang Autonomous Region]]||[[w:China|China]]|| [[w:Baojun|Baojun]] models<br />Engines||2012||&nbsp;||Operated by [[w:SAIC-GM-Wuling|SAIC-GM-Wuling]]. SAIC & GM jointly created the joint venture with Wuling in 2002. The SAIC-GM-Wuling joint venture was originally owned 50.1% by SAIC, 34% by GM China, & 15.9% by Liuzhou Wuling Automobile Industry Co., Ltd. Since 2011, SAIC-GM-Wuling is now owned 50.1% by SAIC, 44% by GM China, & 5.9% by Liuzhou Wuling Motors Co., Ltd. Engine plant added in 2015. Past models: [[w:Chevrolet Spark#Lechi (China)|Baojun Lechi]], [[w:Baojun 610|Baojun 610]], [[w:Baojun 630|Baojun 630]] |- |&nbsp;||[[w:SAIC-GM-Wuling|SAIC-GM-Wuling]] Chongqing Branch||[[w:Chongqing|Chongqing]]||[[w:China|China]]|| [[w:SAIC-GM-Wuling|Wuling]] models<br />Engines||2014||&nbsp;||Operated by [[w:SAIC-GM-Wuling|SAIC-GM-Wuling]]. Since 2011, SAIC-GM-Wuling is owned 50.1% by SAIC, 44% by GM China, & 5.9% by Liuzhou Wuling Motors Co., Ltd. |- |&nbsp;||[[w:SAIC-GM-Wuling|SAIC-GM-Wuling]] Qingdao Branch||[[w:Qingdao|Qingdao]], [[w:Shandong|Shandong]]||[[w:China|China]]|| [[w:SAIC-GM-Wuling|Wuling]] models<br />Engines||2000||&nbsp;||Operated by [[w:SAIC-GM-Wuling|SAIC-GM-Wuling]]. Originally founded in 1997 as [[w:Etsong Vehicle Manufacturing|Etsong Vehicle Manufacturing]]. SAIC-GM-Wuling took over the plant in 2005. Since 2011, SAIC-GM-Wuling is owned 50.1% by SAIC, 44% by GM China, & 5.9% by Liuzhou Wuling Motors Co., Ltd. Engine plant added in 2009. |- |J||[[w:SGMW Motor Indonesia|SGMW Motor Indonesia]]||[[w:Cikarang|Cikarang]], [[w:West Java|West Java]]||[[w:Indonesia|Indonesia]]|| [[w:Wuling Air EV|Wuling Air EV]]<br />[[w:Wuling Binguo|Wuling Binguo EV]]<br />[[w:Wuling Cloud EV|Wuling Cloud EV ]]<br />[[w:Wuling Almaz|Wuling Almaz]]<br />[[w:Wuling Alvez|Wuling Alvez]]<br />[[w:Wuling Confero|Wuling Confero]]<br />[[w:Wuling Cortez|Wuling Cortez]]<br />[[w:Wuling Formo|Wuling Formo]]<br />[[w:MG4 EV|MG4 EV]], [[w:MG ZS (crossover)|MG ZS EV]]||2017||&nbsp;||100% owned and operated by [[w:SAIC-GM-Wuling|SAIC-GM-Wuling]]. Since 2011, SAIC-GM-Wuling is owned 50.1% by SAIC, 44% by GM China, & 5.9% by Liuzhou Wuling Motors Co., Ltd. In 2024, SGMW Motor Indonesia began producing MG models on behalf of PT SAIC Motor Indonesia. MG is owned by SAIC, a shareholder of SGMW. Past models: [[w:Chevrolet Captiva#Second generation (CN202S; 2019)|Chevrolet Captiva]] |} == Current partner factories == {| class="wikitable sortable" style="font-size:90%" !VIN !! Name !! City/State !! Country !! class="unsortable" | Products !! Opened !! Idled !! class="unsortable" | Comments |- |&nbsp;||[[Azermash CP LLC]]||[[w:Hajiqabul|Hajiqabul]]||[[w:Azerbaijan|Azerbaijan]]||[[w:Chevrolet Cobalt#Second generation (2011)|Chevrolet Cobalt]], [[w:Chevrolet Lacetti|Chevrolet Lacetti]], [[w:Chevrolet Malibu#Ninth generation (2016)|Chevrolet Malibu]], [[w:Chevrolet Onix#Second generation (2019)|Chevrolet Onix]], [[w:Chevrolet Aveo (T200)|Chevrolet Nexia (T250)]], [[w:Chevrolet Tracker (2019)|Chevrolet Tracker]], [[w:Suzuki Carry#Daewoo Damas|Chevrolet Damas/Labo]] ||2017|| ||Built under contract by Azermash CP LLC for GM & UzAuto Motors. |- |A||[[w:GM Uzbekistan|GM Uzbekistan]]/[[w:UzAuto Motors|UzAuto Motors]]||[[w:Asaka, Uzbekistan|Asaka]], [[w:Andijan Region|Andijan Region]]||[[w:Uzbekistan|Uzbekistan]]||[[w:Chevrolet Cobalt#Second generation (2011)|Chevrolet Cobalt]], [[w:Chevrolet Lacetti|Chevrolet Lacetti]], [[w:Chevrolet Onix#Second generation (2019)|Chevrolet Onix]], [[w:Chevrolet Tracker (2019)|Chevrolet Tracker (2022-)]]||1996|| ||Originally established as Uz-DaewooAuto, a 50/50 joint venture between Daewoo Motor & the Uzbek government. Became GM Uzbekistan, a 25/75 joint venture between GM & state owned UzAvtosanoat in 2008. GM was bought out by the Uzbek govt. in 2019 & the company was renamed UzAuto Motors. Vehicles now built under license from GM by UzAuto Motors. Previous models: [[w:Daewoo Tico|Daewoo Tico]], [[w:Chevrolet Spark#First generation (M100, M150; 1998)|Daewoo Matiz (M150)]], [[w:Daewoo Nexia|Daewoo Nexia]], [[w:Daewoo Nexia|Chevrolet Nexia]], [[w:Daewoo Gentra#Uzbekistan (2013–2015)|Daewoo Gentra]], [[w:Daewoo Damas|Daewoo Damas]], [[w:Daewoo Labo|Daewoo Labo]], [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]], [[w:Chevrolet Epica|Chevrolet Epica]], [[w:Chevrolet Aveo (T200)|Chevrolet Nexia 3]], [[w:Chevrolet Spark#Third generation (M300; 2009)|Chevrolet Spark (M300)]], [[w:Chevrolet Tacuma|Chevrolet Tacuma]], [[w:Chevrolet Trax|Chevrolet Tracker]], [[w:Chevrolet Spark#First generation (M100, M150; 1998)|Ravon Matiz]], [[w:Chevrolet Spark#Third generation (M300; 2009)|Ravon R2]], [[w:Chevrolet Aveo#Ravon Nexia R3|Ravon Nexia R3]], [[w:Chevrolet Cobalt#Second generation (2011)|Ravon R4]], [[w:Daewoo Gentra|Ravon Gentra R5]] |- |&nbsp;||[[w:GM Uzbekistan|GM Uzbekistan]]/[[w:UzAuto Motors|UzAuto Motors]]||[[w:Pitnak|Pitnak]], [[w:Khorezm Region|Khorezm Region]]||[[w:Uzbekistan|Uzbekistan]]||[[w:Chevrolet Damas|Chevrolet Damas]]<br> [[w:Chevrolet Labo|Chevrolet Labo]] ||2014|| ||Was part of GM Uzbekistan, a 25/75 joint venture between GM & state owned UzAvtosanoat formed in 2008. GM was bought out by the Uzbek govt. in 2019 & the company was renamed UzAuto Motors. Vehicles now built under license from GM by UzAuto Motors. In 2021, a new press shop opened at the Pitnak plant. Previous models: [[w:Chevrolet Orlando#First generation (J309; 2010)|Chevrolet Orlando]], [[w:Daewoo Damas|Daewoo Damas]], [[w:Daewoo Labo|Daewoo Labo]] |- |&nbsp;||[[w:GM Uzbekistan|GM Uzbekistan]]/[[w:UzAuto Motors|UzAuto Motors]]||[[w:Tashkent|Tashkent]]||[[w:Uzbekistan|Uzbekistan]]||Repair of used cars ||2009||2019||Was part of GM Uzbekistan, a 25/75 joint venture between GM & state owned UzAvtosanoat formed in 2008. GM was bought out by the Uzbek govt. in 2019 & the company was renamed UzAuto Motors. Vehicles now built under license from GM by UzAuto Motors. Plant assembled SKD vehicles. SKD production ended in 2019. Plant is now used to repair & overhaul used cars acquired as trade-ins for new cars, which are then resold by UzAuto. Previous models: [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]], [[w:Chevrolet Malibu#Eighth generation (2013)|Chevrolet Malibu]], [[w:Chevrolet Malibu#Ninth generation (2016)|Chevrolet Malibu]], [[w:Chevrolet Trax|Chevrolet Tracker (initial production from SKD)]] |- |&nbsp;||[[w:GM Uzbekistan|GM Powertrain Uzbekistan]]/[[w:GM Uzbekistan|UzAuto Motors Powertrain]]||[[w:Tashkent|Tashkent]]||[[w:Uzbekistan|Uzbekistan]]||[[w:Daewoo S-TEC engine|1.2L & 1.5L DOHC I4 engines]]<br />[[w:GM E-Turbo engine|1.2L GM E-Turbo I3 engine]]<br />Engine components (crankshaft, block, heads)<br />Aluminum Foundry ||2011|| ||GM Powertrain Uzbekistan is a 52/48 joint venture between GM & state owned UzAvtosanoat. In 2019, the company was renamed UzAuto Motors Powertrain after UzAvtosanoat bought out GM's share of the joint venture. It now builds engines & components under license from GM. |- |0,4,7,8,9||[[w:Isuzu|Isuzu]] Fujisawa plant||[[w:Fujisawa, Kanagawa|Fujisawa, Kanagawa]]||[[w:Japan|Japan]]||[[w:Isuzu Elf|Chevrolet Low Cab Forward 4500 & 5500 diesel]] (2016-)<br />[[w:Isuzu N-Series|Isuzu N-Series]]<br />[[w:Isuzu F-Series|Isuzu F-Series]]||1961||&nbsp;||[[w:Isuzu|Isuzu]] plant. <br /> Previous models:<br /> [[w:Isuzu Gemini#In other markets|Buick Opel]] (1976-1979)<br />[[w:Chevrolet LUV|Chevrolet LUV]] (1972-1982)<br />[[w:Chevrolet Spectrum|Chevrolet Spectrum]] (1985-1988)<br />[[w:Chevrolet W-Series|Chevrolet W-Series]] (1986-2009)<br />[[w:Geo Spectrum|Geo Spectrum]] (1989)<br />[[w:Geo Storm|Geo Storm]] (1990-1993)<br />[[w:GMC W-Series|GMC W-Series]] (1986-2009)<br />[[w:Isuzu Faster#First generation (1972–1980)|Bedford KB25]]<br />[[w:Isuzu Faster#Second generation (1980–1988)|Bedford KB26/41]]<br />[[w:Opel Campo#Third generation (TF; 1988–2002)|Opel Campo/Bedford Brava/Vauxhall Brava]]<br />[[w:Holden Jackaroo#First generation (1981)|Holden Jackaroo (Gen 1)]]<br />[[w:Opel Monterey#Second generation (1991)|Opel/Vauxhall Monterey/Holden Jackaroo (Gen 2)/Monterey]]<br />[[w:Holden Rodeo|Holden Rodeo]] (1981-2002) (KB/TF)<br />[[w:Holden Piazza#First generation (JR120/130; 1980)|Holden Piazza]]<br />[[w:Holden Shuttle|Holden Shuttle]]<br />[[w:Isuzu I-Mark|Isuzu I-Mark]], [[w:Isuzu Impulse|Isuzu Impulse]], [[w:Isuzu Stylus|Isuzu Stylus]] |- |H||[[w:Navistar|Navistar]] - Springfield Assembly Plant (Main Line)||[[w:Springfield, Ohio|Springfield, Ohio]]||[[w:United States|United States]]||[[w:Chevrolet Silverado#Medium duty version (4500HD, 5500HD, 6500HD, and International CV)|Chevrolet Silverado Medium Duty (2019-)<br />International CV]] (2019-)||2019|| ||Located at 6125 Urbana Road. Jointly developed by GM & Navistar. Built under contract by [[w:Navistar|Navistar]] for GM. |- |N||[[w:Navistar|Navistar]] - Springfield Assembly Plant (Secondary Line)||[[w:Springfield, Ohio|Springfield, Ohio]]||[[w:United States|United States]]||[[w:Chevrolet Express|Chevrolet Express]] cutaway (2017-),<br /> [[w:GMC Savana|GMC Savana]] cutaway (2017-)||2017|| ||Located at 6125 Urbana Road. Built under contract by [[w:Navistar|Navistar]] for GM. |- |&nbsp;||PACE (Planta Automotiva do Ceará=Ceará Automotive Plant)||[[w:Horizonte, Ceará|Horizonte, Ceará]]||[[w:Brazil|Brazil]]||[[w:Chevrolet Spark EUV|Chevrolet Spark EUV]] (2026-),<br /> [[w:Wuling Starlight S|Chevrolet Captiva EV]]||2025|| ||Assembled from semi-knockdown kits imported from China under contract for GM. Production for GM began on December 3, 2025 with the Spark EUV. Production for non-GM brands is also expected. The plant is the former [[w:Troller|Troller]] plant that was bought by Ford in 2007 and closed in 2021. The plant is now operated by Comexport. |- |&nbsp;||[[SaryarkaAvtoProm]]/<br>Allur Automobile Plant||[[w:Kostanay|Kostanay]]||[[w:Kazakhstan|Kazakhstan]]||[[w:Chevrolet Cobalt#Second generation (2011)|Chevrolet Cobalt]], [[w:Chevrolet Onix#Second generation (2019)|Chevrolet Onix]], [[w:Chevrolet Tracker (2019)|Chevrolet Tracker]]||2017|| ||Built under contract by SaryarkaAvtoProm for GM & UzAuto Motors. Past models: [[w:Chevrolet Malibu#Ninth generation (2016)|Chevrolet Malibu]], [[w:Chevrolet Aveo (T200)|Chevrolet Nexia]], [[w:Chevrolet Niva|Chevrolet Niva]], [[w:Suzuki Carry#Daewoo Damas|Chevrolet Damas/Labo]], [[w:Chevrolet Aveo (T200)|Ravon Nexia R3]] |- |S||[[w:Shyft Group|Shyft Group]] - Charlotte plant||[[w:Charlotte, Michigan|Charlotte, Michigan]]||[[w:United States|United States]]||[[w:Isuzu Elf|Chevrolet Low Cab Forward 3500/4500/5500 gas]] (2016-)<br />[[w:Isuzu F-Series|Chevrolet Low Cab Forward 6500XD & 7500XD]] (2018- & 2023-)<br />[[w:Isuzu N-Series|Isuzu N-Series gas]] (2012-)<br />[[w:Isuzu F-Series|Isuzu FTR/FVR]] (2018- & 2023-)||1961||&nbsp;||[[w:Shyft Group|Shyft Group]] plant. Built under contract for Isuzu and GM. |} == Former factories == {| class="wikitable sortable" style="font-size:90%" ! style="width:20px;"|VIN ! style="width:60px;"| Name ! style="width:20px;"| City/State ! style="width:20px;"| Country ! style="width:90px;" class="unsortable" | Products ! style="width:10px;"| Opened ! style="width:10px;"| Idled ! style="width:190px;" class="unsortable" |Comments |- |&nbsp;||AC Electronics||[[w:Oak Creek, Wisconsin|Oak Creek, Wisconsin]]||[[w:United States|United States]]||Automotive Electronics; Avionics, precision guidance systems, & electro-mechanical devices for military use and space exploration (Apollo program) ||1948||1999||Located at 7929 S. Howell Ave. First known as GM's Electronics Division. In 1965, the Milwaukee Operations became known as AC Electronics Division of GM. In 1970, the division merged with Delco Radio and became known as Delco Electronics Division. Spun off with Delphi Automotive Systems (Delphi Electronics & Safety) in 1999. Closed by Delphi in 2008. Is now Drexel Town Square, a retail, commercial, residential and civic development. |- |&nbsp;||[[w:ACDelco#AC Spark Plug Division|AC Spark Plug Division]]||[[w:Flint, Michigan|Flint, Michigan]]||United States||AC Spark Plugs||1929||1975||Located on Industrial Ave at Harriet St. Built in 1909. Champion Ignition Co. moved here from their original location on the 3rd floor of a Buick building on Hamilton Ave. that they used from 1908. This complex was expanded multiple times and was on both sides of Industrial Ave. with 2 overhead walkways connecting the 2 sides. Champion Ignition Co. changed its name to AC Spark Plug in 1922. After founder Albert Champion died in 1927, GM took over AC Spark Plug in 1929. It became a GM division in 1933. Production gradually moved to the Flint East complex until the Industrial Ave. complex closed in 1975. Demolished in 1975-76. Site later used by Buick for parking as it was next to the Buick City complex. |- |&nbsp;||[[w:Flint East|AC Spark Plug Flint East]]||[[w:Flint, Michigan|Flint, Michigan]]||United States||Components (spark plugs, dashboard components such as instrument clusters, fuel system components, air/oil/fuel filters, and fuel pumps)||1929||1999||Located at 1300 North Dort Highway. (Now referred to as 2926 Davison Road, which is the north side instead of the west side of the property.) Purchased by AC Spark Plug in 1925. Plant previously belonged to [[w:Dort Motor Car Company|Dort Motor Car Company]], which went out of business in 1924. Initially produced all products other than spark plugs that were made by AC Spark Plug Co. After founder Albert Champion died in 1927, GM took over AC Spark Plug in 1929. It became a GM division in 1933. Production gradually moved from the old Industrial Ave. complex to the Flint East complex until the Industrial Ave. complex closed in 1975. Became known as Flint East in 1987, when AC took over the "Chevy in the Hole" complex from Chevrolet on Flint's west side, which became known as Flint West. Became AC Rochester in 1988 when AC Spark Plug Division merged with Rochester Products Division. AC Rochester initially had its world headquarters here, just as AC Spark Plug had before the merger. Subsequently, AC Rochester headquarters moved to the Great Lakes Technology Center in the old Flint Fisher Body plant. In 1994, AC Rochester merged with Delco Remy and became AC Delco Systems. Grouped under GM's Delphi Automotive Systems subsidiary in 1995. Spun off with [[w:Delphi Corporation|Delphi Corporation]] in 1999. GM supplied the UAW workers from 2007 under agreement with Delphi and the UAW. Closed by Delphi in 2013. |- |&nbsp;||[[w:ACDelco#AC Spark Plug Division|AC Spark Plug]]||[[w:Sioux City, Iowa|Sioux City, Iowa]]||[[w:United States|United States]]||[[w:Throttle#Throttle body|Throttle Body Fuel Injection Systems]]||1981||1993||Located at 1805 Zenith Drive. Formerly a Zenith Radio Factory. Now the headquarters of Bomgaars Supply, Inc. |- |&nbsp;||[[w:ACDelco#AC Spark Plug Division|AC Spark Plug]]||[[w:Wichita Falls, Texas|Wichita Falls, Texas]]||United States||AC Air Filters||1972||1999||Located at 8600 Interstate 44 Service Rd. Spun off with Delphi Automotive Systems in 1999. Closed by Delphi in 2008. Now owned by Panda Biotech. |- |&nbsp;||[[w:ACDelco#AC Spark Plug Division|AC Spark Plug Overseas Corp. - Kirkby plant]]||[[w:Kirkby|Kirkby]], [[w:Merseyside|Merseyside]], [[w:England|England]]||[[w:United Kingdom|United Kingdom]]||Instrument panels, Gauges, Fuel pumps, Fuel/temperature senders, Oil pressure switches, Radiator caps, Thermostats||1958||?||Plant is near Liverpool. Located on Moorgate Road. Kirkby was originally part of the AC-Delco division of GM Ltd. When the Kirkby plant opened in 1958, production of fuel pumps, thermostats, and instruments was moved there from the Dunstable components plant. In 1979, Kirkby became aligned with AC Spark Plug in the US. In 1982, GM Ltd. was dissolved and the Kirkby plant became part of AC Spark Plug Overseas Corp., part of GM Overseas Corp. |- |&nbsp;||[[w:ACDelco#AC Spark Plug Division|AC Spark Plug Overseas Corp. - Southampton plant]]||[[w:Southampton|Southampton]], [[w:Hampshire|Hampshire]], [[w:England|England]]||[[w:United Kingdom|United Kingdom]]||Air filter elements, Oil filters, Fuel filters, Catalytic converters||1952||?|| Located on West Bay Road in the New Dock area of Southampton. Originally opened in 1938 as a vehicle assembly plant making Chevrolets (See listing for "GM Ltd."). Plant acquired by GM Ltd. in 1951. Southampton was originally part of AC-Sphinx Plug Co., a division of GM Ltd. In 1952, AC-Sphinx Plug Co. was renamed AC-Delco division of GM Ltd. When the Southampton plant opened in 1952, production of automotive filters (air filters, fuel filters) was moved there from the Dunstable components plant. In 1979, Southampton became aligned with AC Spark Plug in the US. In 1982, GM Ltd. was dissolved and the Southampton plant became part of AC Spark Plug Overseas Corp., part of GM Overseas Corp. |- |&nbsp;||Allison,<br> [[w:Allison Transmission|Allison Transmission]], Allison Gas Turbine||[[w:Indianapolis|Indianapolis]], Indiana||United States||Allison Transmissions,<br> Engines for airplanes & helicopters,<br> Bearings and Gears||1929||2007||Located at 4700 W. 10th St. Founded in 1915 as Speedway Team Co. In 1920, it was renamed Allison Engineering Co. Acquired by GM in 1929, it became the Allison Division of GM. GM began designing the CD-850 transmission for tracked military vehicles in 1941; the design was completed in 1944 and Allison was awarded the contract to manufacture the prototypes. In February 1945, General Motors formed the Allison Transmission Engineering Section. In 1946, GM divided the division into 2 sections: Aircraft Operations and Transmission Operations. In 1970, Allison Division merged with the Detroit Diesel Engine Division to become the Detroit Diesel-Allison Division. In 1983, the aviation turbine engine operations were separated out to form a separate division called the Allison Gas Turbine Division. In 1987, the transmission operations are separated out to form the Allison Transmission Division. Allison Gas Turbine was sold in a management buyout in 1993 becoming the Allison Engine Company. [[w:Allison Engine Company|Allison Engine Company]] was then sold in 1995 to [[w:Rolls-Royce Holdings|Rolls-Royce PLC]]. GM sold Allison Transmission in 2007 to private equity groups Carlyle Group & Onex Corp., becoming Allison Transmission Inc. Allison went public as Allison Transmission Holdings Inc. in 2012, trading on the New York Stock Exchange. |- |&nbsp;||Cadillac Amsterdam Street plant||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||[[w:Cadillac|Cadillac]]s||1903||1920||Cadillac's first volume production plant. Located at 450 Amsterdam Street, at the intersection with Cass Avenue. Rebuilt in 1904 after a fire destroyed the original plant. This plant predated Cadillac being part of GM. Replaced by the Clark Street plant in 1921. |- |5 (Plant 2)<br /><br /> 6 (Plant 1)<br /><br />9 (Pre-1976)||Antwerp||[[w:Antwerp|Antwerp]]||[[w:Belgium|Belgium]]||[[w:Opel Astra|Opel Astra]]/[[w:Vauxhall Astra|Vauxhall Astra]]<br />[[w:Opel Astra#Astra H (A04; 2004)|Opel/Vauxhall Astra GTC & OPC/VXR (H)]]<br />[[w:Opel Astra#TwinTop|Opel/Vauxhall Astra TwinTop]]<br />[[w:Opel Astra#Saturn Astra|Saturn Astra]] (2008 & in Canada '09)<br />[[w:Holden Astra#Fourth generation (TS; 1998)|Holden Astra (TS)]]<br />[[w:Holden Astra#Fifth generation (AH; 2004)|Holden Astra (AH)]] ||1925||2010||Originally known as GM Continental SA, then as Opel Antwerp from 1994-2004, & finally as GM Belgium from 2004 on. The original plant was an ex-abbey on Fortuinstraat. In 1926, production moved to an old velodrome on the corner of St. Laureystraat & Haantjeslei. In 1929, production moved to a site in the port of Antwerp near the Albert dock. The site at the port was destroyed by bombing raids in World War II. Production temporarily moved back to the velodrome from 1946-1953. In 1953, a new plant opened on the Noorderlaan which would later come to be known as Plant 1. In 1967, a second plant opened about 6.2 miles (10&nbsp;km) north of the Noorderlaan plant near the Churchill dock. This was called Plant 2. In August 1988, production was consolidated in Plant 2 and Plant 1 was used as a parts warehouse until 1992 and the property was then sold. Plant 2 ended production in December 2010. First vehicle off the line was a Chevrolet. Assembled Opel & Vauxhall cars, Bedford trucks and American GM brands (Chevrolet, Pontiac, Oldsmobile, Buick, & Cadillac) from CKD kits. Also built the [[w:Ranger (automobile)#Europe|Ranger]]. The plant finally closed its doors on December 17, 2010, about two days after last Opel car rolled off the assembly line.&nbsp;<br />Past models: [[w:Chevrolet Camaro (first generation)|Chevrolet Camaro]] (first generation from CKD kits)<br />[[w:Chevrolet Corvair|Chevrolet Corvair]] (from CKD kits supplied from Oshawa)<br />[[w:Opel Ascona|Opel Ascona]]<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Manta|Opel Manta]]<br />[[w:Opel Olympia|Opel Olympia]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Opel Vectra|Opel Vectra]]<br />[[w:Vauxhall Cresta|Vauxhall Cresta]]<br />[[w:Vauxhall Velox|Vauxhall Velox]]<br />[[w:Vauxhall Victor|Vauxhall Victor]] |- |&nbsp;||[[w:General Motors de Argentina|General Motors de Argentina]]||[[w:San Telmo, Buenos Aires|San Telmo]] and [[w:Barracas, Buenos Aires|Barracas]] in [[w:Buenos Aires|Buenos Aires]] & [[w:San Martín, Buenos Aires|San Martin]]||[[w:Argentina|Argentina]]||Chevrolet (cars and trucks) including [[w:Chevrolet 400|Chevrolet 400]], [[w:Chevrolet Chevy Malibu|Chevrolet Chevy]], & [[w:Chevrolet C/K|Chevrolet C/K]] <br />[[w:Chevrolet C/K (second generation)#Medium-duty trucks|Chevrolet C-50/C-60/C-70]]<br />[[w:Chevrolet/GMC B series|Chevrolet B-60 bus chassis]]<br /> Oldsmobile <br />[[w:Opel K 180|Opel K 180]]<br />[[w:Bedford TJ|Bedford TJ]]<br />[[w:Chevrolet 153 4-cylinder engine#Argentina|Chevrolet 153 4-cylinder]]<br />[[w:Chevrolet Turbo-Thrift engine|Chevrolet Turbo-Thrift engine]]<br />Bedford diesel engines||1925 (San Telmo)<br />1928 (Barracas)<br />1940 (San Martin plant)||1978 (San Martin plant)||Other GM brands manufactured included GMC, Opel, and Bedford trucks along with Pontiac, Oakland, Marquette, Buick, LaSalle, Cadillac, Opel, and Vauxhall passenger cars.<ref>{{cite web|url=https://history.gmheritagecenter.com/wiki/index.php/GM_Argentina|title=GM Argentina}}</ref> Also Frigidaire refrigerators. |- |&nbsp;||[[w:Aymesa|Aymesa]]||[[w:Quito, Ecuador|Quito]]||[[w:Ecuador|Ecuador]]|| ||1973||1999 (Last GM production)|| First automotive assembler in Ecuador. GM bought 36.95% of AYMESA in 1982 & increased its stake to 45.9% in 1984. GM sold off its stake in 1999 and switched to using OBB as its Ecuadorian partner. Aymesa now assembles vehicles for Kia and Hyundai. Past models: [[w:Opel Corsa#Corsa B (S93; 1993)|Chevrolet Corsa]]<br />[[w:Suzuki Cultus#First generation (1983)|Suzuki Forsa]]<br />[[w:Suzuki Cultus#Second generation (1988)|Suzuki Forsa II/Chevrolet Swift]]<br />[[w:General Motors T platform (1973)|Chevrolet San Remo]]<br />Aymesa Gacela<br />Aymesa Condor<br />[[w:Bedford HA#The BTV|Aymesa Andino]]<br />Aymesa Amigo |- |3 (since 1993)<br />A (before 1993)||Azambuja||[[w:Azambuja|Azambuja]]||[[w:Portugal|Portugal]]||[[w:Opel Combo#Kadett Combo (Combo A; 1986)|Opel Kadett Combo A/Bedford & Vauxhall Astravan & Astramax]]<br />[[w:Opel Combo#Combo B (1993-2001)|Opel/Vauxhall/Holden Combo]] B<br />[[w:Opel Combo#Combo C (2001-2012)|Opel/Vauxhall/Holden Combo]] C||1963||2006||Past models:<br />[[w:Opel Corsa#Corsa Van|Opel Corsavan]]<br /> [[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Bedford HA#The BTV|Amigo]]<br />[[w:Bedford CF|Bedford CF]]<br />[[w:Bedford TJ|Bedford TJ]]<br />[[w:Bedford TK|Bedford TK]]<br />Various Opel, Vauxhall, & Bedford models. |- |B <br />(1953-1964 [[w:Chevrolet|Chevrolet]]<br />and 1964 [[w:Pontiac (automobile)|Pontiac]]<br /> and 1965-2005)<br /><br />14 (1935-1952 [[w:Chevrolet|Chevrolet]]) <br /><br /> 7 (1964 [[w:Buick|Buick]])||[[w:Baltimore Assembly|Baltimore Assembly]]||[[w:Baltimore|Baltimore]], [[w:Maryland|Maryland]]||United States||[[w:Chevrolet Astro|Chevrolet Astro]] (1985-2005)<br />[[w:Chevrolet Astro|GMC Safari]] (1985-2005) ||1935||2005||Located at 2122 Broening Highway. Production began in March 1935 (March 11 for trucks and March 26 for cars). Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Baltimore Assembly began making Pontiac and Buick passenger cars for 1964. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Baltimore Assembly joined the GM Assembly Division in 1968. During WWII, the Chevrolet side of the plant operated as a military parts depot where parts were received, processed, and packaged for shipment around the world. It also built 2,650 [[w:GMC CCKW 2½-ton 6×6 truck|GMC CCKW 6x6 trucks]]. The Fisher Body side of the plant became part of GM's Eastern Aircraft Division and assembled the rear fuselage, tail assembly, & all control surfaces for Grumman carrier-based aircraft. Car production ended on March 31, 1984. Converted to a Truck and Bus Group assembly plant for 1985. Production restarted in August 1984. Closed on May 13, 2005. Baltimore Assembly produced over 12 million vehicles. Demolished. Now the Chesapeake Commerce Center and an Amazon distribution center.<br /> Past models:<br /> [[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br />[[w:Buick Gran Sport|Buick GS]] (1965-1968),<br /> [[w:Buick Skylark|Buick Skylark]] (1964-68),<br /> [[w:Buick Special|Buick Special]] (1964-67), [[w:Chevrolet 150|Chevrolet 150]] (1953-57), [[w:Chevrolet 210|Chevrolet 210]] (1953-57), [[w:Chevrolet AK Series|Chevrolet AK Series]], [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1963), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1963), [[w:Chevrolet C/K|Chevrolet C/K]] (1960-1980), [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1964-1977), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet El Camino|Chevrolet El Camino]] (1959-1960, 1964-1977), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1963), [[w:Chevrolet Malibu#Fourth generation (1978)|Chevrolet Malibu]] (1978-1983), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1970-1984), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Chevrolet Suburban|Chevrolet Suburban]] (1957, 1962, 1964-1966), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:Chevrolet C/K (second generation)|GMC C/K (Action Line)]] (1967-1972), [[w:Chevrolet C/K (third generation)|GMC C/K (Rounded Line)]] (1973-1980), [[w:GMC Sprint|GMC Sprint]] (1971-1977), [[w:Pontiac Bonneville#Seventh generation (1982–1986)|Pontiac Bonneville]] (1983-1984), [[w:Pontiac Grand Prix#Fifth generation (1978–1987)|Pontiac Grand Prix]] (1983-1984), [[w:Pontiac GTO|Pontiac GTO]] (1964-1970), [[w:Pontiac LeMans|Pontiac LeMans]] (1964-1970, 1978-1981), [[w:Pontiac Tempest|Pontiac Tempest]] (1964-1970) |- |&nbsp;||[[w:Baltimore Transmission|Baltimore Transmission]]||[[w:White Marsh, Maryland|White Marsh]], [[w:Maryland|Maryland]]||United States||Allison 1000 Series transmissions: [[w:Chevrolet Silverado|Silverado HD]], [[w:GMC Sierra|Sierra HD]]<br />Hybrid 2-mode transmissions ([[w:Global Hybrid Cooperation|2ML70]]): [[w:Chevrolet Tahoe#Third generation (2007)|Chevrolet Tahoe Hybrid]], [[w:Chevrolet Tahoe#Third generation (2007)|GMC Yukon Hybrid]], [[w:Cadillac Escalade#Hybrid|Cadillac Escalade Hybrid]], [[w:Chevrolet Silverado#Second-generation Silverado / third-generation Sierra (GMT900; 2007)|Chevrolet Silverado Hybrid]], [[w:Chevrolet Silverado#Second-generation Silverado / third-generation Sierra (GMT900; 2007)|GMC Sierra Hybrid]]<br />Electric motor (MME) & final-drive unit (1ET35) for [[w:Chevrolet Spark#Spark EV|Chevy Spark EV]]<br />Torque converters for 6-speed rwd automatic transmissions||2000||2019||Located at 10301 Philadelphia Road. Originally part of Allison Transmission. Became a GM Powertrain facility in 2004. Name changed to Baltimore Operations in 2012 with the addition of the Electric Motor Plant built next to the existing Transmission Plant. Closed in 2019.<ref>{{Cite web|url=https://gmauthority.com/blog/2019/04/gm-baltimore-employees-irate-over-plant-closure/|title = GM Baltimore Employees Irate over Plant Closure|author=Anthony Alaniz|publisher=GMAuthority.com|date = 19 April 2019}}</ref> Now called White Marsh Interchange Park, a complex of 9 new one-story buildings of office and warehouse space that replaces the previous GM plant which has been demolished. |- |T||[[w:Bedford Dunstable plant|Bedford Dunstable plant]]||[[w:Dunstable|Dunstable]], [[w:Bedfordshire|Bedfordshire]], [[w:England|England]]||[[w:United Kingdom|United Kingdom]]||[[w:Bedford Vehicles|Bedford trucks and buses]] including:<br> [[w:Bedford S type|Bedford S series]]<br />[[w:Bedford TA|Bedford TA/TD]]<br />[[w:Bedford TJ|Bedford TJ]]<br />[[w:Bedford TK|Bedford TK/KM]]<br />[[w:Bedford TL|Bedford TL]]<br />[[w:Bedford TM|Bedford TM]]<br />[[w:Bedford SB|Bedford SB]]<br />[[w:Bedford VAL|Bedford VAL]]<br />[[w:Bedford VAM|Bedford VAM]]<br />[[w:Bedford VAS|Bedford VAS]]<br />[[w:Bedford Y series|Bedford Y series]]<br />Bedford gas & diesel engines||1942 (for wartime production)<br><br> 1955 (for civilian production)||1987||Was located on Boscombe Road. Bedford truck and bus production was moved to Dunstable from Luton in 1955. GM sold the Bedford heavy truck business to AWD Trucks in 1987. AWD Trucks went bankrupt in 1992. Parts of the site were demolished in 1993. More was demolished in 1997. The remainder was demolished in 2005. The [[w:Commer|Commer]] plant was located across Boscombe Road in Dunstable from the 1960's. |- |&nbsp;||Bombay||[[w:Bombay|Bombay]], [[w:Maharashtra|Maharashtra]]||[[w:India|India]]||[[w:Chevrolet|Chevrolet]] cars, trucks, & buses||1928||1954||The first automobile assembly plant in India. The original GM India Ltd. was closed in 1954. |- |12 (Buffalo Assembly from 1928)||[[w:Buffalo Assembly|Buffalo Assembly]]/<br />Buffalo Gear & Axle||[[w:Buffalo, New York|Buffalo, New York]]||United States||[[w:Chevrolet Superior|Chevrolet Superior]]<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Suburban|Chevrolet Suburban]]<br /> Axles, drivetrain components||1923||1994||Located at 1001 E. Delavan Ave. Built cars until World War II & was then converted to make axles. Operation was renamed Saginaw Gear and Axle in 1984. Sold to [[w:American Axle|American Axle]] in 1994. All operations ended in 2007 & the factory closed. Called the Historic American Axle Building. Purchased by Viridi in 2018. |- |H (1965-1999)<br /><br /> 1 (1938-1964 [[w:Buick|Buick]])||[[w:Buick City|Buick City]]||[[w:Flint, Michigan|Flint, Michigan]]||United States||[[w:Buick LeSabre|Buick LeSabre]] (1959-1999)<br />[[w:Buick Park Avenue|Buick Park Avenue]] (1994-1996)<br />[[w:Oldsmobile 88|Oldsmobile 88]] (1987, 1989-1995)<br />[[w:Pontiac Bonneville#Ninth generation (1992–1999)|Pontiac Bonneville]] (1996-1999)||1904||1999||This was Buick's home plant. It predated the founding of GM in 1908. This is the part of the Buick factory complex south of Leith St. stretching south to E. Hamilton Ave. The complete complex, including both North and South portions totals 412,947 acres. The original factory was at one time the largest in the world and was completely vertically integrated, making nearly every component within the complex. During WWII, Buick built [[w:M18 Hellcat|M18 Hellcat]] tanks & [[w:M39 armored utility vehicle|M39 armored utility vehicles]] here. The plant was converted to build unibody, fwd cars for 1986 instead of the previous body-on-frame, rwd cars. The modernized plant was renamed Buick City. The factory closed in June 1999. Last car built was a 1999 Buick LeSabre. Demolished by 2002. The site of Buick's administration building, 902 E. Hamilton Ave., is now a seating plant owned by Lear Corp., which opened in 2018. It supplies seats to GM's nearby Flint Truck Assembly Plant as well as GM's Fort Wayne Assembly Plant in Indiana. A large piece of the property is now being redeveloped as Flint Commerce Center.<br> Past models: [[w:Buick Centurion|Buick Centurion]] (1971–1973),<br> [[w:Buick Century|Buick Century]] (1936-42, 1954-1958, 1973-1981), [[w:Buick Electra|Buick Electra]] (1959-1984), [[w:Buick Estate|Buick Estate]] (1940-64, 1970-76), [[w:Buick GS|Buick GS]] (1965-1972), [[w:Buick Invicta|Buick Invicta]] (1959-1963), [[w:Buick Limited|Buick Limited]] (1936-42, 1958), [[w:Buick Regal|Buick Regal]] (1973-1985), [[w:Buick Riviera|Buick Riviera]] (1963-1978), [[w:Buick Roadmaster|Buick Roadmaster]] (1936-58), [[w:Buick Skylark#1953–1954|Buick Skylark]] (1953-1954), [[w:Buick Skylark|Buick Skylark]] (1961-72), [[w:Buick Special|Buick Special]] (1936-58, 1961-69), [[w:Buick Sport Wagon|Buick Sport Wagon]] (1964-1971), [[w:Buick Super|Buick Super]] (1940-1958), [[w:Buick Wildcat|Buick Wildcat]] (1963-1970) [[w:Marquette (automobile)#Buick brand|Marquette]] (1930), [[w:Chevrolet Caprice#Third generation (1977–1990)|Chevrolet Caprice]] (1984-1985), [[w:Chevrolet Impala#Sixth generation (1977–1985)|Chevrolet Impala]] (1984-1985),<br> [[w:Oldsmobile Cutlass Supreme#Fourth generation (1978–1988)|Oldsmobile Cutlass Supreme]] (1985). |- |&nbsp;||Cadillac Stamping||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Stamped body parts for Cadillac||1956||1987||Located at 9501 Conner St. Originally built by Clayton & Lambert Manufacturing Company for their Knodell Division. Sold to Hudson Motor Car Company in 1925. Made bodies for Hudson. Bought by GM in 1956. Demolished in 2021. Site used by [[w:Lear Corp.|Lear Corp.]] to make seats to supply GM's Factory Zero plant. |- |&nbsp;||[[w:Cartercar|Cartercar]]||[[w:Pontiac, Michigan|Pontiac]], [[w:Michigan|Michigan]]||United States||Cartercar automobiles||1909||1915||Located on Franklin Rd. where Franklin turns into Linfere St. which then intersects with Brush St. This factory previously belonged to Pontiac Spring & Wagon Works. Cartercar moved into this factory in 1908. Cartercar was purchased by GM on October 26, 1909. Cartercar was known for its [[w:Friction drive|friction drive transmission]]. GM closed Cartercar in 1915. There was then talk that GM would build a 6-cylinder Oakland model at this factory but it doesn't seem to have ever happened. GM sold the factory to Olympian Motors Company in 1917, which built Olympian cars there from 1917-1919. In 1920, the factory was sold to Friend Motors Corporation. Initially, Friend Motors Corporation continued production of Olympian cars and then switched to production of new Friend cars in 1921 but production ended with less than 50 cars built and Friend Motors went out of business. In 1922, Friend Motors owner Otis Friend filed for bankruptcy and factory ownership was transferred to Gotham National Bank in a foreclosure sale. The next occupant of the plant was the Wolverine Manufacturing Company which built furniture. Later, it was used as an agricultural supply warehouse. Most of the complex is gone but one building remains at 20 Franklin Rd. It was last occupied by House of Bedrooms, a furniture store. One side of the building still says "The Wolverine" at the top. The other side that faces Brush St. still says "Pontiac Spring & Wagon Works" right under what were the highest row of windows. |- |&nbsp;||Chevrolet Gear & Axle||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Axles, gears, other components||1919||1994||Located at 1840 Holbrook Ave. Absorbed the former Northway engine plant on Holbrook Ave. in 1926 when Northway was liquidated by GM. Straddles the border of [[w:Detroit|Detroit]] and [[w:Hamtramck, Michigan|Hamtramck, Michigan]]. Sold to [[w:American Axle|American Axle]] & Manufacturing Inc. in 1994. Closed in 2012, demolished in 2013. |- |&nbsp;||Fisher Body - Chicago Metal Fabrication||[[w:Willow Springs, Illinois|Willow Springs, Illinois]]||United States||Stampings (such as floorpans) for GM vehicles||1953||1989||Located at 79th Street and Willow Springs Road. Buick produced J65-B-3 jet engines here for the [[w:Republic F-84F Thunderstreak|Republic F-84F Thunderstreak]]/RF84-F Thunderflash for use in the Korean War. Plant was associated with Buick-Oldsmobile-Cadillac Group but made body parts for all 5 of GM's passenger car divisions. Sold to [[w:United Parcel Service|UPS]]. |- |&nbsp;||[[w:General Motors de Chile|General Motors de Chile]]||[[w:Arica|Arica]]||[[w:Chile|Chile]]||[[w:Isuzu Faster#Second generation (1980–1988)|Chevrolet LUV]]<br />[[w:Isuzu Faster#Third generation (TF; 1988–2002)|Chevrolet LUV (TF)]]<br />[[w:Isuzu Faster#South America 2|Chevrolet Grand LUV (TF)]]<br />[[w:Isuzu D-Max#First generation (RA, RC; 2002)|Chevrolet D-Max]]||1968<br>1974||1971<br>2008||Originally belonged to Alberto Avayú y Cía. S.A.I.C. (part of Empresas Indumotora) which built vehicles under license for GM beginning in 1960. Avayú built the [[w:Chevrolet Chevy II / Nova|Chevrolet Chevy II / Nova]], [[w:Chevrolet C/K (first generation)|Chevrolet C-1434]], [[w:Opel Rekord|Opel Rekord]], [[w:Opel Rekord|Opel Furgón (van)]]. GM bought the plant in 1968. Built [[w:Chevrolet Chevy II / Nova|Chevrolet Chevy II / Nova]] & [[w:Chevrolet C/K (second generation)|Chevrolet C10]]. GM left Chile at the end of 1971 but returned in 1974. Past models: [[w:Chevrolet C/K (third generation)|Chevrolet C-10 and C-30]], [[w:Chevrolet C/K|Chevrolet C/K]] medium duty truck, [[w:Chevrolet Chevette#Latin America|Brazilian Chevrolet Chevette]], and Japanese [[w:Isuzu Aska#South America (Chile, Ecuador)|Chevrolet Aska]] |- |&nbsp;||Fisher Body - Cleveland Division||[[w:Cleveland|Cleveland]], [[w:Ohio|Ohio]]||United States||Bodies for GM vehicles||1921||1983||Located at Coit Road and E. 140th Street. Founded as Fisher Body Ohio Co. GM bought 60% of Fisher Body in 1919 and the remaining 40% in 1926. Began by building bodies for Chandler, Cleveland (a subsidiary of Chandler), Chrysler, and the Oakland & Chevrolet divisions of GM. After 1926, it only made bodies for GM. In 1936, the plant switched from making whole bodies to doing metal trim and fabrication due to a decrease in demand for cars due to the Depression. Production of auto bodies resumed after World War II. Built bodies for low-volume models like the 55-57 Chevy Nomad and convertible models. In the 1970's, it built large stamping dies and upholstery & trim sets. Closed in August 1983 as a metal fabrication plant. |- |&nbsp;||[[w:Cleveland Diesel Engine Division|Cleveland Diesel Engine Division]]||[[w:Cleveland|Cleveland]], [[w:Ohio|Ohio]]||United States||Heavy-duty diesel engines for locomotives, marine use (ships and submarines), and stationary use||1930||1962||Founded by Alexander Winton, company began operation in Nov. 1912 as the Winton Gas Engine & Mfg. Co. at 2116 W. 106th St. Renamed the Winton Engine Works in 1916 and later as the Winton Engine Company. GM bought Winton Engine Co. on June 20, 1930 and renamed it Winton Engine Corp. on June 30, 1930. In 1938, it was renamed Cleveland Diesel Engine Division. In January 1941, locomotive engine development and production was transferred to GM's Electro-Motive Division. Marine and stationary diesel engines were still handled by Cleveland Diesel Engine Division. In the 1950s, Cleveland Diesel Engine expanded with the acquisition of plants at 2160 W. 106th St. and 8200 Clinton Rd. The advent of nuclear-powered submarines in the 1950's reduced the US Navy's need for the large diesel engines produced by Cleveland Diesel and in 1962, GM closed down the division and transferred any remaining engine production to Electro-Motive Division's La Grange plant in McCook, Illinois. |- |&nbsp;||[[w:GM Colmotores|GM Colmotores]]||[[w:Bogotá|Bogotá]]||[[w:Colombia|Colombia]]||Products from [[w:GM do Brasil|GM do Brasil]]: [[w:Chevrolet Onix#First generation (2013)|Chevrolet Joy]] <br />Products from [[w:Isuzu|Isuzu]]: [[w:Isuzu Forward|Chevrolet F-Series Bus]], [[w:Isuzu Forward|Chevrolet F-Series truck]], [[w:Isuzu Elf|Chevrolet N-Series Bus]], [[w:Isuzu Elf|Chevrolet N-Series truck]], Chevrolet LV-series Bus ||1979||2024||Founded in 1956 as Colmotores, production began in 1962 with the [[w:Austin Motor Company|Austin]] brand, then switched to the [[w:Dodge|Dodge]] brand in 1965 when Chrysler took a 60% stake in what was now Colmotores-Chrysler. GM took over Colmotores in 1979 (Chrysler was dropped from the company name at this point). Chevrolet truck production began in 1980. Chevrolet car production began in 1982. Colmotores became GM Colmotores in 1991. Closed in April 2024.<ref>{{Cite web|url=https://gmauthority.com/blog/2024/04/gm-shutting-down-manufacturing-operations-in-colombia-and-ecuador/|title = GM Shutting Down Manufacturing Operations In Colombia And Ecuador|author=Deivis Centeno|publisher=GMAuthority.com|date = April 29, 2024}}</ref><ref>{{Cite web|url=https://www.americaeconomia.com/en/business-industries/general-motors-announces-end-car-manufacturing-operations-colombia-and-ecuador/|title = General Motors announces the end of car manufacturing operations in Colombia and Ecuador|publisher=AmericaEconomia.com|date = April 26, 2024}}</ref> Past products from [[w:Chevrolet|Chevrolet]]: [[w:Chevrolet C/K#Third generation (1973–1991)|Chevrolet C-10]], [[w:Chevrolet C/K#Third generation (1973–1991)|Chevrolet C-30]], [[w:Chevrolet Celebrity|Chevrolet Celebrity]], [[w:Chevrolet Cruze#First generation (J300; 2008)|Chevrolet Cruze]], [[w:Chevrolet Kodiak|Chevrolet Kodiak]], [[w:GMC Brigadier|Chevrolet Brigadier/Super Brigadier]]<br />Past products from [[w:GM do Brasil|GM do Brasil]]: [[w:Chevrolet Chevette#Latin America|Chevrolet Chevette]], [[w:Chevrolet Cobalt#Second generation (2011)|Chevrolet Cobalt]], [[w:Opel Ascona#Chevrolet Monza|Chevrolet Monza]]<br />Past products from [[w:Isuzu|Isuzu]]: [[w:Isuzu Faster|Chevrolet LUV]], [[w:Isuzu Trooper#First generation (1981–1991)|Chevrolet Trooper]]<br />Past products from [[w:Suzuki|Suzuki]]: [[w:Suzuki Cultus#First generation (1983)|Chevrolet Sprint]] (note: this is the same name as the one that was sold in the U.S. and Canada in the 80's), [[w:Suzuki Cultus#Second generation (1988)|Chevrolet Swift]], [[w:Suzuki Alto#Fifth generation (1998)|Chevrolet Alto]], [[w:Suzuki Cultus Crescent|Chevrolet Esteem]], [[w:Suzuki Jimny#Third generation (1998)|Chevrolet Jimny]], [[w:Suzuki Jimny#Second generation (1981)|Chevrolet Samurai]], [[w:Suzuki Solio#Predecessor: Wagon R-Wide (MA61S/MB61S; 1997)|Chevrolet Wagon R+]]<br />Past products from [[w:Opel|Opel]]: [[w:Opel Corsa|Chevrolet Corsa]]<br />Past products from [[w:GM Korea|Daewoo/GM Korea]]: [[w:Daewoo Matiz#Second generation (M200, M250; 2005)|Chevrolet Spark]], [[w:Daewoo Matiz#Third generation (M300; 2009)|Chevrolet Spark GT]], [[w:Daewoo Lacetti|Chevrolet Optra]], [[w:Daewoo Kalos|Chevrolet Aveo]]<br />Products from [[w:SAIC-GM|SAIC-GM]]: [[w:Chevrolet Sail#Second generation (2010)|Chevrolet Sail]] |- |&nbsp;||Constantine Transmission||[[w:Constantine, Michigan|Constantine, Michigan]]||United States||Automatic Transmissions||Between 1977 and 1980||Between 1987 and 1994|| Part of GM St. Joseph County Operations & GM Hydramatic Division. |- |&nbsp;||Danville Foundry||[[w:Danville, Illinois|Danville, Illinois]]||United States||[[w:Casting|Iron castings]]||1943||1995|| Was part of GM's Central Foundry Division. Leased by [[w:Defense Plant Corporation|Defense Plant Corporation]] to pour castings for military equipment during [[w:World War II|World War II]]. Also supplied castings to Ford, Chrysler, and AMC. |- |&nbsp;||Delco Chassis||[[w:Livonia, Michigan|Livonia, Michigan]]||United States||Bumpers||1953||1998||Site bought by GM in 1953. Located at 12950 and 13000 Eckles Road. Buildings demolished in 2001. Redeveloped into multi-tenant commercial use. One of the tenants is Amazon. |- |&nbsp;||[[Delco Moraine NDH]] Dayton North (NDH=New Departure Hyatt)||[[w:Dayton, Ohio|Dayton, Ohio]] (Needmore Rd.)||United States||Master Cylinders/Brake Pads/Brake Calipers/ABS Assemblies||1965||1999||Located at 3100 Needmore Road. Spun off with [[w:Delphi Automotive|Delphi]] in 1999. Closed by Delphi in 2008. Demolished. |- |&nbsp;||[[Delco Moraine NDH]] Dayton South (NDH=New Departure Hyatt)||[[w:Dayton, Ohio|Dayton, Ohio]] (Wisconsin Blvd.)||United States||Engine Bearings/Master Cylinders/Brake Pads/Brake Calipers/ABS Assemblies||1936||1999||Located at 1420 Wisconsin Boulevard. Delphi Chassis Systems. Spun off with [[w:Delphi Automotive|Delphi]] in 1999. Demolished in 2003. |- |&nbsp;||[[Delco Moraine NDH]] (NDH=New Departure Hyatt)||[[w:Sandusky, Ohio|Sandusky, Ohio]]||United States||Wheel Bearings & Wheel Bearing Assemblies||1946||1999||Located at 2509 Hayes Ave. Transferred to Delphi in 1995 which was then spun off in 1999, later sold to Hephaestus Holdings Inc. (HHI, Inc.), through its subsidiary Kyklos Bearing International (KBI) in 2008. HHI's parent, KPS Capital Partners, sold HHI to American Securities LLC in 2012. American Securities combined HHI with Metaldyne, which it also acquired in 2012, to form Metaldyne Performance Group (MPG) in 2014. Metaldyne closed the plant in 2017 when it exited the wheel bearing business. |- |&nbsp;||[[Delco Products]]||[[w:Kettering, Ohio|Kettering, Ohio]]||United States||Shock Absorbers, Struts, Impact Absorbers, Electric Motors, Windshield Wiper Assemblies||1957||1999||Located at 2555 Woodman Dr. (Administrative offices were at 2000 Forrer Blvd.) Spun off with Delphi Automotive Systems in 1999. A large portion of the site has been used by [[w:Tenneco|Tenneco Inc.]] since 2008. |- |&nbsp;||[[Delco Products Overseas Corp.]]||[[w:Dunstable|Dunstable]], [[w:Bedfordshire|Bedfordshire]], [[w:England|England]]||[[w:United Kingdom|United Kingdom]]||Windshield wiper motors, Wiper/washer units, Heater blower motors, Cooling fan motors, Ignition coils, Distributors, etc.||1934|| ?||Located on High Street North. In 1923, AC Sphinx Sparking Plug Co., Ltd. was created by a 50/50 merger of the British branch of AC Spark Plug Co. and the Sphinx Manufacturing Co., a British spark plug manufacturer based in Birmingham. When AC Spark Plug founder Albert Champion died in 1927, AC Sphinx became wholly owned by AC Spark Plug Co. of Flint, MI. GM was already the major shareholder in AC Spark Plug and took it over completely in 1933, including AC Sphinx in the UK. AC Sphinx Sparking Plug Co., Ltd. moved to Dunstable from their original site in Birmingham beginning in 1934. The transfer to Dunstable was completed in 1936 and the Birmingham plant was relinquished. Dunstable made spark plugs as well as many other automotive components. In 1946, GM Ltd. acquired AC Sphinx as well as Delco-Remy and Hyatt Ltd. from parent GM in the US. In 1947, AC Sphinx was renamed AC-Sphinx Plug Co., a division of GM Ltd. In 1952, AC-Sphinx Plug Co. was renamed AC-Delco division of GM Ltd. When the Southampton plant was added in 1952, production of automotive filters (air filters, fuel filters) was moved there from Dunstable. When the Kirkby plant was added in 1958, production of fuel pumps, thermostats, and instruments was moved there from Dunstable. In 1979, Dunstable became aligned with Delco Products in the US. In 1982, GM Ltd. was dissolved and Dunstable became Delco Products Overseas Corp., part of GM Overseas Corp. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Anaheim, California|Anaheim, California]]||United States||Batteries||1954||1999||Known as Plant 13. Located at 1201 N. Magnolia St. Supplied batteries to GM's California assembly plants like Fremont, Southgate and Van Nuys and to the West Coast aftermarket. Spun off with Delphi Automotive Systems in 1999. Closed by Delphi in 2005. Demolished. Is now Northgate Gonzalez Market. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Anderson, Indiana|Anderson, Indiana]]||United States||Starters, Generators, HEI Ignition, DIS Ignition, Switches, Magnets||1906||1994/1999|| The Heavy Duty Systems unit and a portion of the Automotive Systems unit (passenger car cranking motors) were spun off as [[w:Remy International|Delco Remy International]] in 1994, which was renamed [[w:Remy International|Remy International]] in 2004. Delco Remy International closed all manufacturing in Anderson in 2003. These parts of Delco Remy (the parts not spun off into Remy International) - Ignition (Plant 20) and Generator (Plant 11) products along with the Engineering Center (Plant 18) and Tooling (Plant 16) - merged with AC Rochester in 1994 to form AC Delco Systems. AC Delco Systems became part of GM's Delphi Automotive Systems subsidiary in 1995. Spun off with Delphi Automotive Systems in 1999. Delphi has since closed all 4 facilities in Anderson. Plant 11 closed in 2005 & was demolished in 2006. Plant 16 (2316 Jefferson St.) was sold in 2011 ERTL Enterprises & is now used by multiple businesses. Plant 18 (2900 South Scatterfield Road) closed in 2003 & was turned over to the city Of Anderson in 2006. Plant 20 (2812 E 38th St.) closed in 2007 & is now a distribution center for Sutong Tire Resources, a Chinese tire importer. Plant 45, at 6435 South Scatterfield Road, was the Magnequench plant that produced rare earth neodymium magnets. That business is now owned by NEO Material Technologies of Toronto, Ontario, Canada but the plant itself is now owned by Home Design Products, which makes plastic chairs and other products. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Bloomfield, New Jersey|Bloomfield, New Jersey]]||United States||Batteries||1936||1945||Located on 55 La France Ave. During WWII, became part of GM's Eastern Aircraft Division from 1942 making wiring harnesses, hydraulic tubing and assemblies, and ammunition boxes for the Avenger bombers & Wildcat fighters made by Eastern Aircraft. After WWII, it was replaced by the New Brunswick Battery Plant as it wasn't considered economically practical to convert back to battery production. Bloomfield produced 8 million batteries for Delco Remy. In 1950, the plant was sold to General Plastics for doing fluoropolymer coating. General Plastics and the building still exist today. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Fitzgerald, Georgia|Fitzgerald, Georgia]]||United States||Batteries||1973||1999||Known as Plant 22. Located at 342 Perry House Road. Supplied batteries to GM's Georgia assembly plants like Lakewood and Doraville and to the regional aftermarket. Spun off with Delphi Automotive Systems in 1999. Delphi sold its battery business to Johnson Controls in in July 2005 but the Fitzgerald plant continued supplying batteries to Johnson Controls through 2007. Closed by Delphi in 2007. Demolished. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Meridian, Mississippi|Meridian, Mississippi]]||United States||Starting motors, permanent magnet gear reduction cranking motors, powdered metal forge||1976||1994||Plant was originally built for National Homes Corp. Known as Plant 25. Spun off with [[w:Remy International|Delco Remy International]] in 1994. Closed by Delco Remy International in 1998. Production consolidated in Anderson, Indiana. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]/<br>[[w:Sheridan (automobile)|Sheridan]]||[[w:Muncie, Indiana|Muncie, Indiana]]||United States||Sheridan automobiles <br>Batteries||1919<br>1928||1921<br>1978||Located on West Willard Street. Originally built in 1908 by [[w:Inter-State Automobile Company|Inter-State Automobile Company]] which went bankrupt in 1913 and was renamed Inter-State Motor Company, resuming production in 1914. Built tractors for the military in WWI but did not resume civilian production in 1918 and the factory was idled. GM owned the plant from 1919-1921 to build the [[w:Sheridan (automobile)|Sheridan]] brand. Sold to [[w:Durant Motors|Durant Motors]] in 1921. Bought by Delco Remy division of GM in 1928. Known as Plant 9. Replaced by more modern Plant 26 in 1978. Plant 9 was demolished in 1978-79. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Muncie, Indiana|Muncie, Indiana]]||United States||Batteries||1977||1994|| Located at 4500 S. Delaware Dr. Known as Plant 26. Replaced Plant 9 in 1978. Plant 26 closed and was demolished in 1998. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:New Brunswick, New Jersey|New Brunswick, New Jersey]]||United States||Batteries||1946||1999||Known as Plant 12. Located at 167 Jersey Ave. Replaced the pre-war Bloomfield plant. Supplied batteries to GM's East Coast assembly plants like Tarrytown, Wilmington, and Baltimore and to the East Coast aftermarket. Started making Freedom batteries in 1973 for Chevy Vega. Spun off with Delphi Automotive Systems in 1999. Delphi sold to Johnson Controls in August 2006. Closed by Johnson Controls in 2007. Partly demolished in 2014 (the south half of the building along with the guard shack in front of the plant). The remaining facility at the north end of the property is now the Cal-Chlor Corp. East Packaging and Distribution Facility. The former south end of the plant is now used for storage by Cal-Chlor. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Olathe, Kansas|Olathe, Kansas]]||United States||Batteries||1956||1999||Known as Plant 14. Located at 400 W. Dennis Ave. Supplied batteries to GM's Midwest assembly plants like Fairfax, Oklahoma City and Wentzville. Olathe was the first plant to produce the maintenance-free battery in 1970-1971 employing what was described as wire wound grid technology. The product was sold exclusively to JC Penny. Spun off with Delphi Automotive Systems in 1999. Last product produced was a heavy duty battery for Caterpillar. Closed by Delphi in 2005. Demolished. Site being redeveloped as Olathe Commerce Park. Some of the site is now a Jett Trucking terminal. |- |9 (1979-1988)<br /><br /> Q&nbsp;(1971-1978)||[[w:Detroit Assembly|Detroit Assembly]] (Cadillac Clark Street plant)||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||[[w:Cadillac|Cadillac]]s including <br> [[w:Cadillac Series 62|Cadillac Series 62]] (1940-1942, 1946-1964),<br> [[w:Cadillac Calais|Cadillac Calais]] (1965-1976), <br> [[w:Cadillac DeVille|Cadillac DeVille]] (1949-1984),<br> [[w:Cadillac Sixty Special|Cadillac Sixty Special]] (1938-1942, 1946-1976),<br> [[w:Cadillac Fleetwood Brougham|Cadillac Fleetwood Brougham]] (1977-1986),<br> [[w:Cadillac Brougham|Cadillac Brougham]] (1987-1988),<br> [[w:Cadillac Eldorado|Cadillac Eldorado]] (1953-1978),<br> [[w:Cadillac Eldorado#1957–1958 Eldorado Brougham|Cadillac Eldorado Brougham (Series 70)]] (1957-1958),<br> [[w:Cadillac Eldorado#1959–60 Eldorado Brougham|Cadillac Eldorado Brougham (Series 6900)]] (1959-1960) (chassis & final finishing),<br> [[w:Cadillac Seville#First generation (1976–1979)|Cadillac Seville]] (1976-1979), <br />[[w:LaSalle (automobile)|LaSalle]] (1934-1940)<br />[[w:Chevrolet Caprice#Third generation (1977–1990)|Chevrolet Caprice]] (1986-1987)<br />[[w:Oldsmobile Custom Cruiser#Second generation (1977–1990)|Oldsmobile Custom Cruiser]] (1985-1987)<br />[[w:Oldsmobile 88#Eighth generation (1977–1985)|Oldsmobile Delta 88]] (1984-1985) <br />Cadillac engines (V8, V12, V16) <br /> LaSalle straight-8 (1934-1936) (based on Oldsmobile straight-8 but assembled by Cadillac from Oldsmobile supplied components)||1921||1987||Located at 2860 Clark St. This was Cadillac's home plant and built all Cadillacs until 1971. During WWII, it built M5 & M5A1 Stuart tanks and M24 Chaffee tanks. Cadillac also built the V8 engines that powered these tanks & it also supplied engines to power these tank models made by other GM divisions and other companies as well as to power other types of armored vehicles. Cadillac also made components for aircraft engines made by GM's Allison Division. Cadillac also made M8 75mm howitzer motor carriages & M19 Twin 40mm anti-aircraft carriages. Factory closed December 1987. Chrome plating operation closed in March 1993. Engineering building (including tool room) closed in March 1994. Demolished entirely. Redeveloped into Clark Street Technology Park in 1997. |- |&nbsp;||[[w:Fleetwood Metal Body#Purchase by Fisher|Fleetwood - Detroit Body Assembly]] (Fisher Body No. 18)||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Bodies for [[w:Cadillac|Cadillac]] & [[w:LaSalle (automobile)|LaSalle]]||1917||1987||Originally built to build aircraft for World War I. Taken over by Fisher Body in 1919 & given to Fleetwood Metal Body after Fisher Body took over Fleetwood in 1925. Fleetwood Metal Body plant. Also known as Fisher Body Plant #18. Supplied bodies to Cadillac's Clark St. plant in Detroit. Located at 261 West End Ave in the [[w:Delray, Detroit|Delray]] neighborhood of Detroit. Redeveloped into Container Port Group's Detroit facility. |- |&nbsp;||[[w:Detroit Diesel|Detroit Diesel]]||[[w:Redford, Michigan|Redford, Michigan]]||United States||Diesel engines for commercial vehicles||1938||1994||Located at 13400 W. Outer Drive. Was the Detroit Diesel-Allison Division from 1970 through 1987 when it again became the the Detroit Diesel Division. Spun off in 1988 as the Detroit Diesel Corp., a joint venture with Penske Corp., which had a majority stake of 60%. Penske increased its stake to 80% later in 1988 and then to 100% in 1994. Penske sold Detroit Diesel to DaimlerChrysler in 2000. DaimlerChrysler became Daimler AG in 2007. In 2019, Daimler AG spun off its truck and bus operations including Detroit Diesel into a separate company called Daimler Truck Holding AG. |- |&nbsp;||Detroit Forge||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Forged metal components||c.1919||1994||Located at 8435 St Aubin St. Straddles the border of [[w:Detroit|Detroit]] and [[w:Hamtramck|Hamtramck]]. Sold to [[w:American Axle|American Axle]] & Manufacturing Inc. in 1994. Closed in 2008, subsequently demolished around 2014. |- |3||Chevrolet-Detroit Truck & Bus Plant||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||[[w:Chevrolet Step-Van|Chevrolet Step-Van]]<br />[[w:Chevrolet Step-Van|GMC Value-Van]]<br />Chevrolet & GMC P-Series motorhome & commercial chassis<br />[[w:Chevrolet van#1992–1996|Chevrolet Van G30 HD/ GMC Vandura G3500 HD cutaway]] (Based on P-series P30 chassis with extended front end & forward-tilting hood) 1993-1996||1974||1999||Located at 601 Piquette Ave. in Detroit (Formerly Fisher Body No. 23). P-Series motorhome & stepvan chassis business (Commercial and Motorhome Chassis Division) was sold to investors (not including the Detroit plant) and became Workhorse Custom Chassis in 1999. Workhorse was later acquired by Navistar International in 2005, which later closed the Workhorse business in 2012 and sold the assets to AMP Electric Vehicles in 2013. |- |&nbsp;||Detroit Transmission Division - Detroit||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||[[w:Hydramatic|Hydramatic]] automatic transmissions||1939||1949||Was located at 5140 Riopelle St. (between Farnsworth St. & Theodore St.) in what had been Fisher Body Plant #10. Original assembly site for the world's first production, fully automatic transmission and the headquarters of the new GM division created to produce it - the Detroit Transmission Division. First production Hydramatic shipped to Oldsmobile in October 1939. Debuted on the 1940 Oldsmobile. A heavier-duty version then launched on the 1941 Cadillac. Hydramatics continued to be produced during World War II for use in M5/M5A1 Stuart and M24 Chafee tanks (mated to Cadillac V8s), T17E1 Staghound and T18E2 Boarhound armored cars (mated to GMC inline-6's), M8 75mm howitzer motor carriages (mated to Cadillac V8s), LVT-3 Bushmaster amphibious landing vehicles (mated to Cadillac V8s), & Mark 1 Armored Snowmobiles made by Bombardier of Canada (mated to a Cadillac V8). Hydramatic became optional on Pontiacs in 1948. Hydramatic also became optional on Lincolns in 1949. The 1 millionth Hydramatic was built in January 1949. Needing more production capacity than the original factory in Detroit could handle, the Detroit Transmission Division relocated to a newer and much bigger plant in Livonia, Michigan in September 1949. Was later used by Cadillac as a parts warehouse supplying its Clark St. plant in Detroit. Closed by GM in the early 1980's and sold. Was subsequently used by Total Foods. Last occupied by Palmer Promotional Products. Heavily damaged by a fire in February 2014. The remains of the building were then demolished by summer 2014. |- |&nbsp;||Detroit Transmission Division - Livonia||[[w:Livonia, Michigan|Livonia]], [[w:Michigan|Michigan]]||United States||[[w:Hydramatic|Hydramatic]] automatic transmissions||1949||1953||The Detroit Transmission Division moved from Detroit to a newer and larger factory in Livonia in 1949. In addition to Pontiac, Oldsmobile, & Cadillac, Livonia also supplied Hydramatics to Lincoln, Nash, Hudson, Kaiser, and Fraser. However, the factory burned down in August 1953 causing 6 deaths and more than $80 million in damage. GM quickly arranged to lease Kaiser’s Willow Run factory to replace the destroyed Livonia plant and GM then bought the plant outright in November 1953 for $26 million. Salvaged equipment from Livonia was taken to [[w:Willow Run#General Motors operations|Willow Run]]; see [[w:Willow Run Transmission|Willow Run Transmission]]. |- |5<br /><br />C (1962-1978)||[[w:General Motors Diesel|General Motors Diesel]]||[[w:London, Ontario|London, Ontario]]||[[w:Canada|Canada]]||[[w:List of GM-EMD locomotives|EMD Locomotives]]<br />[[w:GM New Look (Fishbowl) Bus|GM New Look bus]] (1961-1978)<br />Terex earthmovers (1965-1980)<br />Military vehicles including:<br />[[w:AVGP|Grizzly/Cougar/Husky LAV I]]<br />[[w:LAV II|LAV II (LAV-25/Bison/Coyote)]]<br />[[w:LAV III|LAV III]]<br />[[w:Stryker|Stryker]]||1950 (GM Electro-Motive Division)<br /><br />1961 (Transit bus)||1979 (Transit bus)<br /><br />2003 (GM Defense)<br /><br />2005 (GM Electro-Motive Division)||Transit bus production began in London, Ontario in late 1961. Transit bus production moved to Saint-Eustache factory in 1979. The part of the property making military vehicles (armored fighting vehicles like the [[w:Stryker|Stryker]]) as GM Defense was sold in 2003 to [[w:General Dynamics Land Systems|General Dynamics Land Systems]], becoming [[w:General Dynamics Land Systems#General Dynamics Land Systems Canada|General Dynamics Land Systems – Canada (GDLS-C)]]. Located at 1991 Oxford St E. Interestingly, General Dynamics Land Systems was originally formed in 1982 when General Dynamics bought Chrysler Defense, Chrysler's tank division in the US, which was then renamed General Dynamics Land Systems. The locomotive operations were sold in 2005 and renamed [[w:Electro-Motive Diesel|Electro-Motive Diesel]], Inc. Electro-Motive was then sold to [[w:Caterpillar Inc.|Caterpillar's]] [[w:Progress Rail|Progress Rail]] subsidiary in 2010. The London, ON plant was then shuttered in 2012 & operations moved to a new plant in Muncie, Indiana. This part of the plant is now used by HCL Logistics, which provides logistics services to next door General Dynamics Land Systems – Canada. Located at 2021 Oxford St. E. |- |3 (1981-1987)<br /><br />M (1979-1980)||[[w:General Motors Diesel|General Motors Diesel]] Saint-Eustache Bus Plant||[[w:Saint-Eustache, Quebec|Saint-Eustache, Quebec]]||[[w:Canada|Canada]]||[[w:GM New Look (Fishbowl) Bus|GM New Look bus]] (1979-1986)<br />[[w:Classic (transit bus)|GM Classic bus]] (1983-1987)||1979||1987||Located at 1000 Industriel Blvd. Manufactures [[w:transit bus|transit bus]]es. GM consolidated Canadian transit bus production here from the London, Ontario and St. Laurent, Quebec plants in 1979. New Look transit bus production ended in 1986. Sold to [[w:Motor Coach Industries|Motor Coach Industries]], along with the designs for the [[w:Classic (transit bus)|Classic]] bus models this factory still produced in 1987. Later sold to [[w:Nova Bus|Nova Bus]] in 1993. Production of the Classic model bus ended in 1997. Still owned by [[w:Nova Bus|Nova Bus]], which is owned by [[w:Volvo AB|Volvo AB]] through [[w:Prevost (bus manufacturer)|Prevost Car]]. Prevost bought 51% of Nova Bus in 1998 and bought the remaining 49% from Henlys Group in 2004. |- |M|| [[w:General Motors Diesel|General Motors Diesel]] Saint Laurent Bus Plant || [[w:Saint Laurent, Quebec|Saint Laurent, Quebec]] || Canada || [[w:GM New Look bus|GM New Look bus]] (1975-1979) || 1974 || 1979 || Bus operations moved to [[w:Saint-Eustache, Quebec|Saint-Eustache, Quebec]]. |- |D <br />(1960-1964 [[w:Pontiac (automobile)|Pontiac]] and 1965-2009)<br /><br /> C (1964 [[w:Chevrolet|Chevrolet]])<br /><br />A (Pre-1965 [[w:Oldsmobile|Oldsmobile]] and Pre-1960 [[w:Pontiac (automobile)|Pontiac]])<br /><br />6 (Pre-1964 [[w:Buick|Buick]])||[[w:Doraville Assembly|Doraville Assembly]]||[[w:Doraville, Georgia|Doraville, Georgia]]||United States||[[w:Chevrolet Uplander|Chevrolet Uplander]] (2005-2008 & '09 in Canada)<br />[[w:Pontiac Montana#Second generation (2005)|Pontiac Montana SV6]] (2005-2006 & '07-'09 in Canada)<br />[[w:Buick Terraza|Buick Terraza]] (2005-2007)<br />[[w:Saturn Relay|Saturn Relay]] (2005-2007)||1947||2008||Located at 3900 Motors Industrial Way. Was originally part of the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. First vehicle built in Nov. 1947 was an Oldsmobile. Some of the original property bought by GM for the Doraville plant in 1945 was deemed as excess and was sold off. One of the parts that was sold (82 acres) was sold to Chevrolet to build a parts warehouse. Doraville began making Chevrolet passenger cars for 1964. BOP Assembly Division became GM Assembly Division in 1965. Oldsmobile and Pontiac production ended in Dec. 1965, leaving just Chevrolet and Buick. Oldsmobile production resumed in Aug. 1967 for the 1968 model year. Oldsmobile production again ended in April 1970 followed by Buick production in July 1970. Pontiac production resumed in Aug. 1970 for the 1971 model year. B-body full-size Chevrolet and Pontiac production ended in Dec. 1973 and midsize A-body Chevrolet and Oldsmobile production began in Jan. 1974.[https://dekalbhistory.org/wp-content/uploads/2020/04/history-of-doraville-gm-plant.pdf] Doraville switched to building fwd A-body Oldsmobiles and Buicks for 1982. Doraville then switched to building W-body Oldsmobiles for 1988. Passenger car production ended in 1995 and the Cutlass Supreme coupe & sedan were moved to Fairfax II during 1995 while the convertible was discontinued. Doraville was converted to build minivans for 1997. Production ended in September 2008. Last vehicle built was a Chevy Uplander. Demolished in 2014-2015. Site is being redeveloped. Parts of the site are now occupied by Nalley Automotive Group (Infiniti dealership & a Collision Center), Mike Rezi Nissan (formerly Nalley Nissan), Assembly Studios Atlanta, Third Rail Studios at Assembly Atlanta, and Serta Simmons Bedding.<br />Past models: [[w:Chevrolet Venture|Chevrolet Venture]] (1997-2005), [[w:Oldsmobile Silhouette#Second generation (1997–2004)|Oldsmobile Silhouette]] (1997-2004), [[w:Pontiac Trans Sport#Second generation (1997-1999)|Pontiac Trans Sport]] (1997-1998), [[w:Pontiac Montana|Pontiac Montana]] (1999-2005), [[w:Pontiac Trans Sport#Second generation (Chevrolet)|Chevrolet Trans Sport]] (Europe: '97-'04), [[w:Buick Century#Second generation (1954–1958)|Buick Century]] (1954-1958), [[w:Buick Century#Fifth generation (1982–1996)|Buick Century]] (1982-1987), [[w:Buick Electra|Buick Electra]] (1959-1962), [[w:Buick Invicta|Buick Invicta]] (1959-1962), [[w:Buick LeSabre|Buick Lesabre]] (1959-1970), [[w:Buick Roadmaster|Buick Roadmaster]] (1951-1952, 1954-1958), [[w:Buick Special|Buick Special]] (1950-1958), [[w:Buick Super|Buick Super]] (1955, 1957-1958), [[w:Buick Wildcat|Buick Wildcat]] (1963, 1965-1970), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1964-1970), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1964-70), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-74), [[w:Chevrolet Chevelle#Third generation (1973–1977)|Chevrolet Chevelle]] (1974-77), [[w:Chevrolet Impala|Chevrolet Impala]] (1964-1974), [[w:Chevrolet Malibu#Fourth generation (1978)|Chevrolet Malibu]] (1978-1981), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1975-1980), [[w:Oldsmobile Cutlass#Fourth generation (intermediate) 1973–1977|Oldsmobile Cutlass]] (Gen 4) (1974-1977), [[w:Oldsmobile Cutlass#Fifth-generation (intermediate) 1978–1988|Oldsmobile Cutlass]] (Gen 5) (1978-1981), [[w:Oldsmobile Cutlass Ciera|Oldsmobile Cutlass Ciera]] (1982-1987), [[w:Oldsmobile Cutlass Supreme#Fifth generation (1988–1997)|Oldsmobile Cutlass Supreme]] (1988-1995), [[w:Oldsmobile 88|Oldsmobile 88]] (1949-1966, 1968-1970), [[w:Oldsmobile 98|Oldsmobile 98]] (1948-1963), [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1966), [[w:Pontiac 2+2|Pontiac 2+2]] (1964-1966), [[w:Pontiac Bonneville|Pontiac Bonneville]] (1958, 1960-1966), [[w:Pontiac Grand Prix#First generation (1962–1964)|Pontiac Grand Prix]] (1962-1964), [[w:Pontiac Catalina|Pontiac Catalina]] (1960-1966, 1971-1974), [[w:Pontiac Chieftain|Pontiac Chieftain]] (1951, 1953, 1955, 1958), [[w:Pontiac Grand Ville|Pontiac Grand Ville]] (1973-1974), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1955-1958, 1964), [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1961),<br> [[w:Chevrolet El Camino|Chevrolet El Camino]] (1974-1981), [[w:GMC Sprint |GMC Sprint]] (1974-77), [[w:GMC Caballero|GMC Caballero]] (1978-1981),<br> [[w:Opel Sintra|Opel Sintra]]/[[w:Vauxhall Sintra|Vauxhall Sintra]] (1997-1999). |- |&nbsp;||General Motors East Africa||[[w:Nairobi|Nairobi]]||[[w:Kenya|Kenya]]||[[w:Isuzu F-Series|Isuzu F-Series]]<br />[[w:Isuzu N-Series|Isuzu N-Series]]<br />Isuzu buses<br /><br />||1977||2017||Originally established in 1975 as GM Kenya, a joint venture with the Kenyan govt. Renamed GM East Africa in 2003. Other shareholders are Kenya’s Industrial and Commercial Development Corporation (ICDC): 20%, Centum Investment Co. Ltd.: 17.8%, & Itochu Corporation: 4.5%. Isuzu moved pickup production to South Africa in 2012 so it could focus on trucks & buses at the Nairobi plant. <br /> GM sold its 57.7% stake in the factory to Isuzu in 2017 and left the Kenyan market. Now known as Isuzu East Africa. <br /> Past models: [[w:Isuzu D-Max|Isuzu D-Max]], [[w:Bedford Vehicles|Bedford trucks]], [[w:Bedford HA#The BTV|BTV]] |- |&nbsp;||ELAZ-GM||[[w:Yelabuga|Yelabuga]], [[w:Tatarstan|Tatarstan]]||[[w:Russia|Russia]]||[[w:Chevrolet S-10 Blazer#Second generation (1995)|Chevrolet Blazer]]||1996||2001||GM owned about 25% & ELAZ owned the other 75%. Joint venture dissolved in 2001. |- |&nbsp;||[[w:Electro Motive Division|Electro Motive Division]] - [[w:Electro-Motive Diesel#EMD La Grange (McCook)|La Grange Operations]]||[[w:McCook, Illinois|McCook, Illinois]]||United States||[[w:List of GM-EMD locomotives|Locomotives]]<br />Engines<br />Components||1936|| ||Located at 9301 W. 55th St.<br /> Electro-Motive headquarters and R&D operations. Locomotive production ended in 1991 and was moved to London, ON, Canada. Sold in 2005, renamed [[w:Electro-Motive Diesel|Electro-Motive Diesel]], bought by Caterpillar's Progress Rail subsidiary in 2010. |- |&nbsp;||[[w:Elmore Manufacturing Company|Elmore]]||[[w:Clyde, Ohio|Clyde]], [[w:Ohio|Ohio]]||United States||Elmore automobiles||1909||1912|| Factory was located on Amanda St. Bought by GM in November 1909. Elmore was known for its two-stroke engines. GM closed it down in the fall of 1912. GM sold the factory to a truckmaker named Krebs Commercial Car Company in 1912. In 1917, Krebs Commercial Car Company merged with Clyde Cars Company and Lincoln Motor Truck Company to form what became Clydesdale Motor Truck Company in 1919. Clydesdale Motor Truck Company closed in 1939 and the factory was then used by Clyde Porcelain Steel Company until the factory burned down November 11, 1945. The factory would be rebuilt and used for making washing machines by various companies, most recently, Whirlpool Corp. |- |&nbsp;||Ewing||[[w:Geneva, Ohio|Geneva]], [[w:Ohio|Ohio]]||United States||Ewing automobiles||1909||1911||Bought by GM in October 1909. Made taxis. GM closed it down in 1911. |- |X (1965–1987)<br /><br />K (Pre-1965 [[w:Oldsmobile|Oldsmobile]] & [[w:Pontiac (automobile)|Pontiac]])<br /><br />4 (Pre-1965 [[w:Buick|Buick]])||[[w:Fairfax Assembly|Fairfax Assembly]] (Fairfax I)||[[w:Kansas City, Kansas|Kansas City, Kansas]]||United States||[[w:Buick Centurion|Buick Centurion]] (1971-1973), [[w:Buick Century#Second generation (1954–1958)|Buick Century]] (1954-1958), [[w:Buick Electra|Buick Electra]] (1959-1963, 1971-1974), [[w:Buick Estate|Buick Estate]] (1970-1979), [[w:Buick Estate#1977–1990|Buick Electra Estate]] (1980-1987), [[w:Buick Invicta|Buick Invicta]] (1959-1962), [[w:Buick LeSabre|Buick LeSabre]] (1959-1985), [[w:Buick Estate#1977–1990|Buick LeSabre Estate]] (1980-1987), [[w:Buick Limited|Buick Limited]] (1958), [[w:Buick Roadmaster|Buick Roadmaster]] (1948-1949, 1951, 1953, 1956-1958), [[w:Buick Skylark#First generation (1961–1963)|Buick Skylark]] (1962-1963), [[w:Buick Special|Buick Special (B-body)]] (1947-1950, 1952-1958), [[w:Buick Special#1961–1963|Buick Special (Y-body)]] (1962-1963), [[w:Buick Super|Buick Super]] (1954-1958), [[w:Buick Wildcat|Buick Wildcat]] (1963-1970), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1982-1987), [[w:Chevrolet Impala|Chevrolet Impala]] (1982-1985), [[w:Oldsmobile 88|Oldsmobile 88]] (1949-1984), [[w:Oldsmobile 98|Oldsmobile 98]] (1948-1963), [[w:Oldsmobile F-85|Oldsmobile F-85/<br>Cutlass]] (1962-1963), [[w:Oldsmobile Custom Cruiser|Oldsmobile Custom Cruiser]] (1974-1984), [[w:Oldsmobile Jetstar I|Oldsmobile Jetstar I]] (1964-1965), [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1966), [[w:Pontiac 2+2|Pontiac 2+2]] (1964-1967), [[w:Pontiac Bonneville#Sixth generation (1977–1981)|Pontiac Bonneville]] (1958-70, 1975-1981), [[w:Pontiac Catalina|Pontiac Catalina]] (1959-1981), [[w:Pontiac Chieftain|Pontiac Chieftain]] (1950-1958), [[w:Pontiac Executive|Pontiac Executive]] (1967-1968), [[w:Pontiac Grand Prix|Pontiac Grand Prix]] (1962-1968), [[w:Pontiac Grand Ville|Pontiac Grand Ville]] (1971-1975), [[w:Pontiac LeMans#First generation (1961–1963)|Pontiac LeMans]] (1962-1963), [[w:Pontiac Parisienne#Fifth generation: 1977–1986|Pontiac Parisienne]] (1984-1986), [[w:Pontiac Safari|Pontiac Safari]] (1987), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1954-1959, 1964, 1966), [[w:Pontiac Tempest#First generation (1961–1963)|Pontiac Tempest]] (1962-1963), [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1960-1961) ||1946||1987||Located at 100 Kindelberger Road. Originally, the location of the [[w:North American Aviation|North American Aviation]] Bomber Production Plant (built in 1940) where the [[w:B-25 Mitchell|B-25 Mitchell]] was manufactured during World War II. After the war, GM leased it in 1945 and converted the plant to auto production. Automotive production began in June 1946. GM later bought the plant in 1960. Was originally part of the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. BOP Assembly Division became GM Assembly Division in 1965. Fairfax mostly focused on full-size cars ([[w:General Motors A platform (RWD)#1926-1959|A-]], B-, & C-body) but it also built B-O-P Y-body compact cars for 1962-1963. Fairfax only began making Chevrolet passenger cars for 1982. Also built [[w:F-84F Thunderstreak|F-84F Thunderstreak]] fighter jets alongside cars beginning in 1952 and ending in May 1955 when the contract ended. Plant closed May 1987. Production moved to new building on adjacent site (Fairfax II) for 1988 model year production. |- |&nbsp;||[[w:History of General Motors#Corporate restructuring and operating losses|Fiat-GM Powertrain Polska]]||[[w:Bielsko-Biala|Bielsko-Biala]]||[[w:Poland|Poland]]||[[w:Fiat JTD engine#1.3 JTDm/Multijet/CDTI/D/DDiS/HDi|GM Small Diesel Engine]] ||2003||2010|| Engine began production here in 2003 as part of Fiat-GM Powertrain, a 50/50 joint venture between GM & Fiat involving joint development and production of engines and transmissions. The joint venture was disbanded in 2005. As part of the dissolution, GM took a 50% stake in the Bielsko-Biala engine plant and the intellectual property of the 1.3 liter diesel engine produced there. In 2010, GM sold its half of the Bielsko-Biala engine plant back to Fiat. However, GM kept its half of the intellectual property of the 1.3 liter diesel engine produced there and continued to source the 1.3 liter diesel engine from the Bielsko-Biala engine plant. Chevrolet stopped using this engine around 2015. Opel was still using this engine when it was sold by GM to PSA in 2017. Opel last used this engine in 2019. This plant became part of [[w:Fiat Chrysler Automobiles|FCA]] in 2014 when Fiat and Chrysler Group merged. This plant became part of [[w:Stellantis|Stellantis]] in 2021 when FCA merged with PSA Group. Stellantis has announced that the Bielsko-Biala engine plant will close by the end of 2024. |- |&nbsp;||Fisher Body No. 10||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Auto bodies ||1917-<br />1919||1939||Was located at 5140 Riopelle St. (between Farnsworth St. & Theodore St.).GM bought 60% of Fisher Body in 1919 and bought the remainder in 1926. From 1926, Fisher Body only supplied bodies to GM brands. In 1939, became headquarters and manufacturing site of GM's new Detroit Transmission Division, which manufactured Hydramatic fully automatic transmissions that first appeared on the 1940 Oldsmobile. |- |&nbsp;||[[w:Fisher Body#Fisher Body Corporation and General Motors|Fisher Body No. 12]]||[[w:Detroit|Detroit]], Michigan||United States|| ||1916||1942||Located at 1961 E. Milwaukee Ave. Previously used by Metzger Motor Car Company from 1910-1913 and [[w:Maxwell Motor Company|Maxwell Motor Company]] from 1913-1916. Owned by Fisher from 1916-1942 then sold to J. Lee Hackett Co. which owned it until 1973. Used for warehousing from 1973-1981 and then demolished. |- |&nbsp;||[[w:Fisher Body#Fisher Body Corporation and General Motors|Fisher Body No. 21]]||[[w:Detroit|Detroit]], Michigan||United States||Bodies for Buick & Cadillac<br />Engineering and Tool & Die operations<br />Bodies for Cadillac limousines<br />Pre-production Pilot bodies||1919||1984||Located at 700 Piquette Ave. In 1999, was re-addressed as 6051 Hastings Street. Made bodies for Buick through 1926 when Buick body production moved to Fisher Body Plant No. 1 - Flint on S. Saginaw St. Made bodies for Cadillac through 1929 when Cadillac body production moved to the Fisher Body Plant No. 18/Fleetwood Body plant. Became an engineering facility from 1930-1955. Produced parts for B-25 & B-29 bombers in World War II (Aircraft Unit). Also did product development and engineering during World War II (Central Development and Experimental Unit). In 1955, GM transferred production of Cadillac limousine bodies from the Fleetwood plant in Detroit to Fisher #21 plant due to it being a low-volume operation. Closed April 1984. Sold to Cameo Color Coat in 1985 which transferred it to Carter Color Coat in 1990. Carter Color Coat then went bankrupt and the property was abandoned in 1993. GM removed some paints and other hazardous materials in the early 1990s. It's been owned by the city of Detroit since 2000. Now being converted into Fisher 21 Lofts, a mixed residential and commercial development scheduled to open in 2027. |- |&nbsp;||[[w:Fisher Body#Fisher Body Corporation and General Motors|Fisher Body No. 23/23B]]||[[w:Detroit|Detroit]], Michigan||United States||Tool & Die plant through 1972.||1921||1972||Located at 601 Piquette Ave. #23 was the six story portion while #23B was the one story portion. Known as the Detroit Die and Machine Plant. In WWII, made B-25, B-29, P-80 aircraft tools and fixtures; M4, M10, M36, M26, M18 tank parts; 3-inch and 5-inch Naval Gun Breech Housings, 155mm and 8-in. gun parts, Diesel Engine parts and Torqmatic Transmission parts. Became Chevrolet's Detroit Truck & Bus plant in 1974. |- |&nbsp;||[[w:Fisher Body#Fisher Body Corporation and General Motors|Fisher Body No. 37]]||[[w:Detroit|Detroit]], Michigan||United States||Large bodyside stampings||1919||1985||Located at 950 E Milwaukee Ave. Produced aircraft and tank assemblies, 90 mm AA guns, 5” naval gun housings and Lockheed missile parts during World War II. In 1989, bought by Lakeside Stamping which was renamed New Center Stamping in 1994. In 2019, New Center Stamping Inc. was taken over by Soave Enterprises and still stamps parts for automakers including GM, Ford, and Stellantis. |- |&nbsp;||Fisher Body No. 40||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Tooling ||1928||1983-1984||Was located at 1500 E. Ferry St. Plant 41 was next door and was used for storage. |- |&nbsp;||Fisher Body Overseas Corp. - Dundonald plant||[[w:Dundonald, County Down|Dundonald]], [[w:Northern Ireland|Northern Ireland]]||[[w:United Kingdom|United Kingdom]] ||Seat Belts, window regulators, door locks, door switches, & other automotive hardware||1980||1988||Located at 770 Upper Newtownards Road at the corner of Carrowreagh Road. Dundonald is an eastern suburb of Belfast. From 1966-1977, was a Rolls-Royce plant making aircraft engine parts. GM's Fisher Body division bought the plant in 1978 and reopened it in 1979. Production began in 1980. In 1982, the Dundonald plant became part of Fisher Body Overseas Corp., part of GM Overseas Corp. Sold to Takata Corp. in 1988. Operated as European Components Corp. (ECC) and later as TK-ECC, still making seat belts, until it was closed in 2004. Plant was later demolished. |- |&nbsp;||Fisher Body Overseas Corp. - Kennedy Way plant||[[w:Belfast|Belfast]], [[w:Northern Ireland|Northern Ireland]]||[[w:United Kingdom|United Kingdom]] ||Seat Belt Buckles, Door switches, & other automotive hardware||1982||?||Located in Kennedy Way Industrial Estate on Blackstaff Road in western Belfast. The Kennedy Way plant was part of Fisher Body Overseas Corp., part of GM Overseas Corp. |- |&nbsp;||[[w:Flint, Michigan auto industry#Flint Plant #1|Flint Body Assembly]] (Fisher Body Flint Plant #1)||[[w:Flint, Michigan|Flint]], Michigan||United States||Bodies for Buick and later also Chevrolet & Oldsmobile<br />||1923||1987||Located at 4000-4500 S. Saginaw St. Originally a [[w:Durant Motors|Durant Motors]] plant. Bought by GM in 1926. Became Fisher Body Plant No. 1 - Flint. Supplied bodies to the Buick plant in Flint (later known as Buick City). After Buick City switched to unibody, fwd cars for 1986, Flint Body began supplying bodies for G-cars built at the Pontiac Assembly plant in Pontiac, MI. Closed in Dec. 1987 when G-body production at Pontiac Assembly ended. Last body built was a Buick Regal Grand National to be completed at Pontiac Assembly. Most of the site was demolished and the remainder was converted into the Great Lakes Technology Center. GM leased space there for R&D and offices (including AC Rochester world headquarters) until 2009. Various medical-related companies now occupy much of the property. The original administration building at 4300 S. Saginaw St. still stands as of 2022 and still has a Fisher Body logo at the top of the front of the building in the center. |- |&nbsp;||[[w:Flint, Michigan auto industry#Flint V8 Engine Plant/Flint Engine South|Chevrolet-Flint (V8) Engine Plant]] (Van Slyke Road)||[[w:Flint, Michigan|Flint, Michigan]]||United States||[[w:Chevrolet small-block engine (first and second generation)|Chevrolet small-block V8]]<br />[[w:Chevrolet Turbo-Thrift engine|Chevrolet Turbo-Thrift I6]]<br />[[w:Chevrolet 153 4-cylinder engine|Chevrolet 153 4-cylinder engine]]<br />[[w:List of Isuzu engines#Isuzu G engine|Isuzu G140 & G161Z SOHC gas<br> 4-cylinder engine for Chevy Chevette & Pontiac 1000/Acadian]]<ref>{{cite news| title = 1975, Chevrolet Turns to Opel for the New Fuel-Saving Chevette| url = https://web.archive.org/web/20180116081057/https://history.gmheritagecenter.com/wiki/index.php/1975%2C_Chevrolet_Turns_to_Opel_for_the_New_Fuel-Saving_Chevette| archive-date = 2018-01-16| publisher = General Motors| access-date = 2014-06-05| url-status = dead}}</ref>||1954||1999||Located at 3848 Van Slyke Road, down the block from the Flint Truck Assembly Plant. Only V8 engines were made until 1961, when 4 & 6 cylinder engines began to be made for the 1962 Chevy II. Around 45 million Chevy small-block V8 engines were built at this plant. Plant closed in 1999 and was demolished. Land is now used by a new paint shop for the [[w:Flint Truck Assembly|Flint Truck Assembly Plant]]. The new paint shop (Flint Assembly Paint Operations) was announced in December 2013 and opened in 2016, replacing the previous paint shop inside the assembly plant. |- |1 (1928-1947)||[[w:Flint, Michigan auto industry#Flint Manufacturing Div./Delphi Flint West/Flint Tool and Die|Chevrolet-Flint Manufacturing Complex]] ("Chevy in the Hole") /<br /> Flint West||[[w:Flint, Michigan|Flint, Michigan]]||United States||[[w:Chevrolet|Chevrolet]] vehicles including [[w:Chevrolet Series 490|Chevrolet Series 490]]<br />[[w:Chevrolet Superior|Chevrolet Superior]]<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Stylemaster|Chevrolet Stylemaster]]<br />[[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br />[[w:Chevrolet AK Series|Chevrolet AK Series]]<br />[[w:Chevrolet Suburban|Chevrolet Suburban]] (Gen 1 & 2)<br /><br />[[w:Chevrolet|Chevrolet]] engines including [[w:Chevrolet Inline-4 engine#171|Chevrolet Inline-4 engine]]<br />[[w:Chevrolet Stovebolt engine|Chevrolet Stovebolt / Blue Flame I6]]<br />||1913||2004||Located at 300 N. Chevrolet Ave. (formerly known as Wilcox Street). This was Chevrolet's home plant. It predated Chevrolet becoming part of GM in 1918. The complex originally included metal stamping, body assembly, vehicle assembly, engine assembly, and various component manufacturing plants. On January 11, 1940, the 25 millionth GM vehicle built in the US, a 1940 Chevrolet Special Deluxe Sedan, was built here. Plant 2 (vehicle assembly) & 2A (Fisher Body) were replaced by new plants on Van Slyke Road elsewhere in Flint in 1947 (now the [[w:Flint Truck Assembly|Flint Truck Assembly Plant]]). Plant 4 was the engine plant. It closed in 1984 but was ultimately reopened later. In 1987, the complex was taken over by the AC Spark Plug division and became AC Spark Plug Flint West. In 1988, it became AC Rochester Flint West, and in 1994 AC Delco Systems Flint West following further consolidations. In early 1995, it was renamed Delphi Flint West. Around this time, plants in the complex began to be demolished until Plant 4 closed in 2004 and was subsequently demolished. Plant 4 last made generators and fuel filters. Building 35 still exists as part of [[w:Kettering University|Kettering University]]. It is now the C.S. Mott Science and Engineering Building after the addition of another floor and a new façade. Plant 38 still exists as GM's Flint Tool & Die plant. All the other buildings are gone. Much of the property is being redeveloped into a park called [[w:Chevy Commons|Chevy Commons]]. |- |&nbsp;||[[w:Flint North|Flint North]] Powertrain||[[w:Flint, Michigan|Flint, Michigan]]||United States||[[w:Buick V8 engine|Buick V8 engine]]<br />[[w:Buick V6 engine|Buick V6 engine]]<br />Engine Components<br />[[w:Dynaflow|Dynaflow]] transmissions<br />transmission components<br /> torque converters<br />coil springs||1905||2010||Complex was made up of several factories. Flint North is the part of the Buick City factory complex north of Leith St. stretching north to E. Pierson Rd. [[w:Liberty L-12|Liberty aircraft engines]] were made here during WWI. Factory 36 was the engine plant. Factory 36 opened in 1952 and closed in 2008. The remainder of the complex closed by December 2010. Demolished by 2012. Part of the site (1225 E. Marengo Ave.) is now occupied by American SpiralWeld Pipe Co. |- ||7||[[w:Arlington Assembly#History|Fort Worth Assembly]]||[[w:Fort Worth, TX|Fort Worth, Texas]]||United States||[[w:Chevrolet Series 490|Chevrolet Series 490]]||1917||1924 |Built by Chevrolet before it became part of GM. Located at 2601 W. 7th St. (then known as Arlington Heights Blvd.). Is across the street from what is now Montgomery Plaza. A 3rd story was added to the building in 1920. Closed due to flood damage from the April 1922 flooding of the Trinity River and the subsequent imposition of flood-control taxes.<ref>https://books.google.com/books?id=mTvuAwAAQBAJ&dq=1920+fort+worth+chevrolet+factory&pg=PA52 Lost Fort Worth, page 52</ref> Montgomery Ward leased the empty Chevy plant between 1924 and 1928 to house a temporary store while its main Fort Worth facility was built across what is now West Seventh Street. That building is now Montgomery Plaza. The Chevy plant was later used by various different companies including GM's Frigidaire division as a sales and warehouse facility and later by Tandy Corp., first for its Radio Shack division and later for its corporate HQ. Demolished in 1986. Site is now Olympus 7th Street Station, a luxury apartment building. |- |G <br />(1960-1964 [[w:Chevrolet|Chevrolet]] and 1965-1989)<br /><br /> B (Pre-1960 [[w:Oldsmobile|Oldsmobile]])<br /><br /> F (Pre-1960 [[w:Pontiac (automobile)|Pontiac)]]<br /><br /> 7 (Pre-1960 [[w:Buick|Buick]])||[[w:Framingham Assembly|Framingham Assembly]]||[[w:Framingham, Massachusetts|Framingham, Massachusetts]]||United States||[[w:General Motors A platform (1925)#1964|GM rwd A-bodies]]: [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1965-1969), [[w:Pontiac Tempest|Pontiac Tempest]] (1967-1970), [[w:Pontiac LeMans|Pontiac LeMans]] (1967-1972, 1974-1976), [[w:Pontiac GTO|Pontiac GTO]] (1966-1969, 1971-1972), [[w:Oldsmobile Cutlass|Oldsmobile Cutlass]] (1967-1981), [[w:Oldsmobile Cutlass Supreme|Oldsmobile Cutlass Supreme]] (1967-1981), [[w:Oldsmobile 442|Oldsmobile 442]] (1967-1977), [[w:Oldsmobile Vista Cruiser|Oldsmobile Vista Cruiser]] (1968-1977), [[w:Buick Skylark#Third generation (1968–1972)|Buick Skylark]] (1970-1972), [[w:Buick GS|Buick GS]] (1970-1972), [[w:Buick Century|Buick Century]] (1973-1981), [[w:Buick Regal|Buick Regal]] (1973-1981) [[w:General Motors A platform (1982)|GM fwd A-bodies]]: [[w:Chevrolet Celebrity|Chevrolet Celebrity]] (1982-1988), [[w:Pontiac 6000|Pontiac 6000]] (1982), [[w:Oldsmobile Cutlass Ciera|Oldsmobile Cutlass Ciera]] (1983-1989), [[w:Buick Century#Fifth generation (1982–1996)|Buick Century]] (1989) ||1948||1989|| Located at 63 Western Ave. First vehicle produced was a 1948 Buick on February 26, 1948. Was originally part of the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. Framingham is the only BOP Assembly Division plant to switch to the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Framingham switched to Chevrolet Assembly Division in August 1959 [https://www.worthpoint.com/worthopedia/gm-framingham-ma-canada-pontiac-buick-olds-plant]. Framingham began making Chevrolet passenger cars for 1960. BOP Assembly Division became GM Assembly Division in 1965. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were then gradually transferred to the GM Assembly Division. Framingham Assembly joined the GM Assembly Division in 1968. Idled October 1, 1982 but reopened March 14, 1983. Closed August 1, 1989. Sold to ADESA to use as a vehicle auction site. <br/>Past models: <br/> [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1960-1966), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1960-1966), [[w:Chevrolet Impala|Chevrolet Impala]] (1960-1966), [[w:Chevrolet Chevy II / Nova#First generation (1962–1965)|Chevrolet Chevy II/Nova]] (1962-1963), [[w:Buick Century#Second generation (1954–1958)|Buick Century]] (B-body), [[w:Buick Roadmaster|Buick Roadmaster]] (1949-1950, 1955, 1958), [[w:Buick Special#1949–1958|Buick Special]] (1952-1953, 1955-1958), [[w:Buick Super|Buick Super]] (1954), [[w:Oldsmobile 88|Oldsmobile 88]], [[w:Oldsmobile 98|Oldsmobile 98]], [[w:Pontiac Bonneville|Pontiac Bonneville]] (1958), [[w:Pontiac Chieftain|Pontiac Chieftain]] (1951, 1954, 1956), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1955, 1957, 1959) |- |&nbsp;||General Motors France S.A.||[[w:Gennevilliers|Gennevilliers]]||[[w:France|France]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Buick|Buick]]||1939||1940||Operations interrupted by German invasion of France and seizure of the plant in 1940 during WWII. |- |Z (1965-1982)<br /><br />H (1963-1964 [[w:Chevrolet|Chevrolet]] and [[w:GMC (automobile)|GMC]])<br /><br />F (1964 [[w:Pontiac (automobile)|Pontiac]] and [[w:Oldsmobile|Oldsmobile]])<br /><br />3 (1964 [[w:Buick|Buick]])||[[w:Fremont Assembly|Fremont Assembly]]||[[w:Fremont, California|Fremont, California]]||United States||[[w:Buick Century|Buick Century]] (1973-1981)<br />[[w:Buick GS|Buick GS]] (1965-1972)<br />[[w:Buick Regal|Buick Regal]] (1973-1981)<br />[[w:Buick Skylark|Buick Skylark]] (1964-1972)<br />[[w:Buick Special|Buick Special]] (1964-1969)<br />[[w:Buick Sport Wagon|Buick Sport Wagon]] (1965)<br />[[w:Chevrolet K5 Blazer#1973–1991|Chevrolet K5 Blazer]] (1977-1979)<br />[[w:Chevrolet C/K|Chevrolet C/K]] (1963-1982)<br />[[w:Chevrolet Celebrity|Chevrolet Celebrity]] (1982)<br />[[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1964-1969, 1973-1977)<br />[[w:Chevrolet El Camino|Chevrolet El Camino]] (1964-1969, 1973-1981)<br />[[w:Chevrolet Malibu|Chevrolet Malibu]] (1978-1981)<br />[[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1973-1981)<br />[[w:Chevrolet Suburban|Chevrolet Suburban]] (1964-1971)<br />[[w:GMC C/K|GMC C/K]] (1963-1982)<br />[[w:GMC Caballero|GMC Caballero]] (1978-1981)<br />[[w:Chevrolet K5 Blazer#1973–1991|GMC Jimmy]] (1977-1979)<br />[[w:GMC Sprint|GMC Sprint]] (1973-1977)<br />[[w:GMC Suburban|GMC Suburban]] (1964-1971)<br />[[w:Oldsmobile Cutlass|Oldsmobile Cutlass]] (1964-1972)<br />[[w:Oldsmobile Cutlass Ciera|Oldsmobile Cutlass Ciera]] (1982)<br />[[w:Oldsmobile Cutlass Supreme|Oldsmobile Cutlass Supreme]] (1966-1972)<br />[[w:Oldsmobile 442|Oldsmobile 442]] (1964-1972)<br />[[w:Oldsmobile Vista Cruiser|Oldsmobile Vista Cruiser]] (1965-1966)<br />[[w:Pontiac Grand Prix#Third generation (1969–1972)|Pontiac Grand Prix]] (1970)<br />[[w:Pontiac LeMans|Pontiac LeMans]] (1964-1974)<br />[[w:Pontiac GTO|Pontiac GTO]] (1964-1973)<br />[[w:Pontiac Tempest|Pontiac Tempest]] (1964-1969)||1963||1982||Located at 45500 Fremont Blvd.<br /> Operated from 1963-1982 as a GM factory. Was originally part of the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]] though it also built Chevrolet passenger cars from the beginning. Fremont built GM's midsize A-bodies. Was the first BOP Assembly Division plant to also build Chevrolet and GMC trucks. Regular truck production began June 10, 1963. First production car built September 3, 1963. BOP Assembly Division became GM Assembly Division in 1965. Plant was idled March 1982.<br /> From 1984-2010, operated as [[w:NUMMI|New United Motor Manufacturing Inc. (NUMMI)]], which was a 50/50 joint venture between GM and [[w:Toyota|Toyota]] and assembled both GM and Toyota vehicles.<br /> Sold to [[w:Tesla Motors|Tesla, Inc.]] in May 2010.<ref>{{cite news|author=Sam Abuelsamid|title=Tesla to buy old resources from GM, Toyota for NUMMI plant|url=http://www.autoblog.com/2010/08/22/tesla-to-buy-old-resources-from-gm-toyota/|access-date=20 August 2015|publisher=Autoblog.com|date=August 22, 2010}}</ref> Tesla began production at Fremont in 2012. |- |P||[[w:Fabryka Samochodów Osobowych|FSO]]||[[w:Warsaw|Warsaw]]||[[w:Poland|Poland]]||[[w:Opel Astra#F|Opel Astra]]<br />[[w:Opel Vectra#Vectra B (1995–2002)|Opel Vectra]]||1994||2000||Built by an [[w:Fabryka Samochodów Osobowych|FSO]] - GM joint venture operating out of a converted old FSO warehouse. |- |W||[[w:Fabryka Samochodów Osobowych|FSO]]||[[w:Warsaw|Warsaw]]||[[w:Poland|Poland]]||[[w:Chevrolet Aveo (T200)|Chevrolet Aveo]]||2007||2011||Built by [[w:Fabryka Samochodów Osobowych|FSO]] for GM as part of a joint venture between [[w:Ukrainian Automobile Corporation|UkrAvto]] (parent of FSO) & GM. [[w:Ukrainian Automobile Corporation|Ukravto]] owned 60% & [[w:GM Daewoo|GM Daewoo]] owned 40%. The production license ended in 2011 & was not renewed. |- |&nbsp;||[[General Motors Gmbh]]||[[w:Berlin|Berlin]]||Germany||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]||1927||1932||Replaced Hamburg plant. Located in Borsigwalde area of Berlin. Also predates the acquisition of [[w:Opel|Opel]] by GM. |- |&nbsp;||[[General Motors Gmbh]]||[[w:Hamburg|Hamburg]]||Germany||[[w:Chevrolet|Chevrolet]] trucks||1926||1927||GM's first German plant predating the acquisition of [[w:Opel|Opel]]. Located in a leased warehouse. |- |&nbsp;||[[General Motors Ltd.]]||[[w:Hendon|Hendon]], [[w:England|England]]||United Kingdom||[[w:Chevrolet|Chevrolet]] <br /> [[w:GMC (automobile)|GMC]] ||1924||1930||GM's first British plant predating the acquisition of [[w:Vauxhall Motors|Vauxhall]]. Operated out of a leased plant. When Chevrolet production was moved to Luton in 1930, Hendon was used for parts distribution. Later, Frigidaire made appliances at Hendon. In 1970, Hendon began producing steering columns. In 1971, more automotive components began to be produced in place of Frigidaire appliances. In 1980, GM sold the Hendon site for redevelopment but leased back an area for construction of a new plant for Saginaw Steering Gear. The new plant opened in 1981. See listing for "Saginaw Steering Gear Overseas Corp. - Southampton plant" for more details. |- |&nbsp;||[[General Motors Ltd.]]||[[w:Southampton|Southampton]], [[w:Hampshire|Hampshire]], [[w:England|England]]||United Kingdom||[[w:Chevrolet|Chevrolet]]||1938||1946||Located on West Bay Road in the New Dock area of Southampton. Operations interrupted by German bombing of the UK during WWII. Plant was bombed in 1940 & 1941. Plant was reoccupied in 1946. Plant acquired by GM Ltd. in 1951 and converted to produce automotive components in 1952. See listing for "AC Spark Plug Overseas Corp. - Southampton plant" for more details. |- |&nbsp;||[[w:Ghandhara Industries|Ghandhara Industries]]||[[w:Karachi|Karachi]], [[w:Sindh|Sindh]]||[[w:Pakistan|Pakistan]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford trucks and buses]] including [[w:Bedford TJ|Bedford TJ]]<br />[[w:Holden|Holden]]||1953||1970's||Originally a GM owned plant (General Motors Overseas Distribution Corporation). Sold to [[w:Ghandhara Industries|Ghandhara Industries]] Ltd. in 1963. Nationalized in 1972, it then became National Motors Ltd. Privatized to the [[w:Bibojee Group|Bibojee Group]] in 1992 who reverted back to the previous name, Ghandhara Industries. Ghandara Industries assembles Isuzu vehicles today. |- |&nbsp;||[[GM-Auto]]||[[w:Saint-Petersburg|Saint-Petersburg]]||[[w:Russia|Russia]]||[[w:Chevrolet Cruze|Chevrolet Cruze]]<br />[[w:Opel Astra|Opel Astra]] [[w:Chevrolet Trailblazer (SUV)#Second generation (RG; 2011)|Chevrolet Trailblazer]] [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]]<br />[[w:Opel Antara|Opel Antara]] ||2007||2015||Includes operations at the temporary "Arsenal plant" & the permanent plant in [[w:Shushary, Saint Petersburg|Shushary]]. GM ceased most operations in Russia back in 2015 and the GM-Auto plant closed. Sold to Hyundai Motor in 2020. |- |&nbsp;||[[w:GM-AvtoVAZ|GM-AvtoVAZ]]||[[w:Tolyatti|Togliatti]]||[[w:Russia|Russia]]||[[w:Chevrolet Niva|Chevrolet Niva]]<br />[[w:Chevrolet Viva|Chevrolet Viva]]||2002||2019||Was originally owned 41.5% by GM, 41.5% by AvtoVAZ, & 17% by [[w:EBRD|EBRD]]. In 2012, [[w:EBRD|EBRD]] was bought out & GM-AvtoVAZ became 50/50 owned by GM & AvtoVAZ. The GM-AvtoVAZ joint venture was dissolved in 2019 when AvtoVAZ bought out GM. The Chevrolet Niva was renamed Lada Niva Travel during 2020. AvtoVAZ was a part of [[w:Renault Group|Renault Group]] from 2016 until 2022. |- |4||GM España S.A.||[[w:Figueruelas|Figueruelas]], [[w: Zaragoza (province)| Zaragoza (province)]]||[[w:Spain|Spain]]||[[w:Opel Corsa|Opel/Vauxhall Corsa]] A, B, C, D, E (5 door, van)<br />[[w:Opel Meriva|Opel/Vauxhall Meriva]] A, B<br />[[w:Opel Combo#Combo C (2001-2012)|Opel/Vauxhall/Holden Combo]] C<br />[[w:Opel Tigra#Tigra A (1994–2000)|Opel/Vauxhall Tigra A]]<br />[[w:Vauxhall Nova|Vauxhall Nova]]<br />[[w:Holden Barina#Third generation (SB; 1994–2000)|Holden Barina (SB)]]<br />[[w:Holden Barina#Fourth generation (XC; 2001–2005)|Holden Barina (XC)]]||1982||2017|| [[w:Adam Opel AG|Opel plant]]. Sold to [[w:PSA Group|PSA Group]] in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. |- |&nbsp;||GM Indonesia||Pondok Ungu, [[w:Bekasi|Bekasi]], [[w:West Java|West Java]]||[[w:Indonesia|Indonesia]]||After reopening:<br /> [[w:Chevrolet Spin|Chevrolet Spin]]<br /><br />Before temporary closure in 2005:<br /> [[w:Chevrolet S-10 Blazer#Second generation (1995)|Chevrolet Blazer]]<br />[[w:Opel Blazer|Opel Blazer]]<br />[[w:Opel Astra#F|Opel Optima]]<br />[[w:Opel Vectra#Vectra A (1988–1995)|Opel Vectra]]||1995||2015||PT Garmak Motor assembled models under license from GM beginning in 1976, before the establishment of their joint venture with GM in 1993. These license built models include: [[w:Bedford Vehicles|Bedford]] trucks, [[w:Bedford HA#The BTV|Morina]], [[w:Opel Rekord Series E|Opel Rekord E 3-d panel van]], [[w:Opel Kadett#Kadett D (1979–1984)|Opel Kadett D]], [[w:Isuzu Faster#First generation (1972–1980)|Chevrolet LUV (Mk 1)]], [[w:Isuzu Faster#Second generation (1980–1988)|Chevrolet LUV (Mk II)]], & [[w:Isuzu Trooper#First generation (1981–1991)|Chevrolet Trooper/Stallion]]. Originally established as PT General Motors Buana Indonesia, which was owned 60% by GM and 40% by PT Garmak Motor. GM bought out Garmak in 1997 taking 100% of the shares. The assembly plant was closed from 2005-2011 and reopened in 2012 to make the Chevy Spin. Closed again in June 2015. |- |&nbsp;||GM Java||[[w:Tanjung Priok|Tanjung Priok]], [[w:North Jakarta|North Jakarta]], [[w:Jakarta|Jakarta]]||[[w:Indonesia|Indonesia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Opel|Opel]] ([[w:Opel 1.2 Liter|1.2 Liter]])<br />[[w:Vauxhall Motors|Vauxhall]] ([[w:Vauxhall 10-4|10-4]])||1927||1953||First Car Factory in what is now Indonesia (at the time, it was the Dutch East Indies). GM pulled out of Indonesia in 1954 and liquidated the company by 1956. Sold to P.N. Gaja Motors, which assembled the Opel Rekord and Kadett in the 1960's. Eventually became part of Astra International and its joint ventures with Toyota/Daihatsu. |- |&nbsp;||GM Malaysia Sdn. Bhd.||[[w:Tampoi, Johor|Tampoi]], [[w:Johor|Johor]]||[[w:Malaysia|Malaysia]]||[[w:Opel Ascona|Opel Ascona]]<br />[[w:Opel Commodore|Opel Commodore]]<br />[[w:Opel Gemini|Opel Gemini]]<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Manta|Opel Manta]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Bedford HA#The BTV|Bedford Harimau]]<br />[[w:Holden|Holden]]||1968||1982||Originally Capital Motor Assembly Corp., which assembled Opel models under license from GM beginning in 1968. These license built models include: [[w:Opel Commodore|Opel Commodore]] A, [[w:Opel Kadett|Opel Kadett B]], [[w:Opel Rekord Series C|Opel Rekord C]], & components. Capital Motor also assembled cars for Honda and Datsun (Nissan). GM bought Capital Motor Assembly in 1971 and renamed it GM Malaysia. Malaysian government policies that said Malaysians had to own a majority of local auto assembly plants forced GM to sell GM Malaysia to Oriental Holdings in 1980 which then renamed the unit Oriental Assemblers. Assembly of GM vehicles ended in 1982. Oriental Assemblers continued making Honda cars at this plant until around 2004. |- |&nbsp;||GM Philippines, Inc.||[[w:Paco, Manila|Paco district]], [[w:Manila|Manila]]||[[w:Philippines|Philippines]]||[[w:Buick Electra|Buick Electra]]<br />[[w:Chevrolet Bel Air|Chevrolet Bel Air]]<br />[[w:Chevrolet Camaro (first generation)|Chevrolet Camaro]]<br />[[w:Chevrolet Impala|Chevrolet Impala]]<br />[[w:Chevrolet Malibu|Chevrolet Malibu]]<br />Chevrolet trucks<br />[[w:Holden EH|Holden EH]]<br />[[w:Holden HD|Holden HD]]<br />[[w:Holden HR|Holden HR]]<br />[[w:Holden HK|Holden HK]]<br />[[w:Holden HT|Holden HT]]<br />[[w:Holden HG|Holden HG]]<br />[[w:Holden HQ|Holden HQ]]<br />[[w:Holden Torana|Holden Torana]]<br />[[w:Isuzu Gemini|Isuzu Gemini]]<br />[[w:Opel Ascona|Opel Ascona]]<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Manta|Opel Manta]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Pontiac Parisienne#Philippines|Pontiac Parisienne]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Vauxhall VX4/90|Vauxhall VX4/90]]<br />[[w:Bedford HA#The BTV|GM Amigo/Tiger/Harabas]]<br />[[w:Bedford Vehicles|Bedford trucks]] ||1953||1985||Originally Yutivo Sons Hardware Co. Yutivo assembled various models under license from GM beginning in 1953. GM bought a 49% stake in Yutivo in 1972 and renamed it GM Philippines. Isuzu invested in the company in 1979 and it was renamed GM Pilipinas, Inc. Assembly of GM vehicles ended in 1985 and GM sold the plant to Isuzu in 1994. Isuzu closed this plant and company in 1995 and replaced it with a new plant in Biñan, Laguna owned by a new subsidiary (Isuzu Philippines Corporation). |- |G||[[w:GM Manufacturing Poland|GM Manufacturing Poland Sp. z o.o.]]||[[w:Gliwice|Gliwice]]||[[w:Poland|Poland]]||[[w:Opel Astra#Astra K (B16; 2015)|Opel Astra]] K (5-door)<br />[[w:Holden Astra#Seventh generation (BK, BL; 2016)|Holden Astra (BK)]] (5-door)<br />[[w:Opel Astra#Astra J (P10; 2009)|Opel/Vauxhall Astra J]] (3-door, 4-door sedan, 5-door)<br />[[w:Opel Astra#Astra H (A04; 2004)|Opel Astra Classic III]] sedan<br />[[w:Holden Astra#Sixth generation (PJ; 2015)|Holden Astra (PJ)]] (GTC, VXR)<br />[[w:Opel Astra#Astra H (A04; 2004)|Opel Astra H]] sedan<br />[[w:Opel Astra#Astra G (T98; 1998)|Opel Astra Classic II]]<br />[[w:Holden Astra#Fourth generation (TS; 1998)|Holden Astra Classic (TS)]]<br />[[w:Opel Astra#Astra F (T92; 1992)|Opel Astra Classic I]]<br />[[w:Opel Agila#First generation (H00; 2000)|Opel/Vauxhall Agila A]]<br />[[w:Suzuki Solio#First generation (MA63S/MA64S/MA32S; 1999)|Suzuki Wagon R+ (2005-2007)]]<br />[[w:Opel Cascada|Opel/Vauxhall Cascada]]<br />[[w:Buick Cascada|Buick Cascada]]<br />[[w:Holden Cascada|Holden Cascada (CJ)]]<br />[[w:Opel Zafira#Zafira B (2005)|Opel/Vauxhall Zafira B]]||1998||2019|| [[w:Adam Opel AG|Opel]] plant. Sold to [[w:PSA Group|PSA Group]] in 2017. Continued to supply the [[w:Buick Cascada|Buick Cascada]] to GM through 2019. Part of [[w:Stellantis|Stellantis]] since 2021. |- |&nbsp;||GM Powertrain Fredericksburg||[[w:Fredericksburg, Virginia|Fredericksburg, Virginia]]||United States||Torque converter clutches for automatic transmissions||1979||2010|| Located at 11032 Tidewater Trail. Originally part of Delco Moraine Division, which bought the plant in 1978 from American Poclain. Moved to GM Powertrain division in 1993. Sold to idX Corp. in 2017. |- |&nbsp;||[[w:GM Powertrain Poland|GM Powertrain Poland]]||[[w:Tychy|Tychy]]||[[w:Poland|Poland]]||Diesel engines including the Isuzu [[w:Circle L engine|Circle L engine]]||1999||2017|| [[w:Adam Opel AG|Opel]] plant. Originally founded as Isuzu Motors Polska (ISPOL) in 1996. GM bought 60% in 2002 & the remaining 40% in 2013. Sold to [[w:PSA Group|PSA Group]] along with Opel in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. |- |&nbsp;||[[w:Grand Blanc Metal Center|Grand Blanc Metal Center]]||[[w:Grand Blanc, Michigan|Grand Blanc, Michigan]]||United States||Metal stampings and metal fabrication of body components, Tooling jigs-and-fixtures||1942||2013||Located at 10800 S. Saginaw St. Originally built by the US govt. and opened in 1942 to build tanks. Also known as the Fisher Body Tank Plant as it was operated by GM's Fisher Body Div. Built [[w:M4 Sherman|M4 Sherman]] (M4A2, M4A3 & M4A3E2) and [[w:M26 Pershing|M26 Pershing]] (T26E3) tanks as well as M10 & M10A1 "Wolverine" Tank Destroyers during WWII and [[w:M48 Patton|M48 Patton]] (M48 and M48A1) tanks beginning in 1952 for the Korean War. Grand Blanc also made a 90mm main gun that Grand Blanc installed on the last 300 M10A1s built at Grand Blanc, thus converting them into the M36 "Jackson". The Grand Blanc-built 90mm main gun was also installed on other M10A1s by other companies and by Grand Blanc on the M4A3 Sherman tank to create the M36B1 & M36B2 tank destroyers. Grand Blanc also supplied 2,445 turrets and 1,511 hulls for the 2,507 M18 Hellcats built by the Buick Division. Production ended in 1945 as WWII wound down. Buick then leased Grand Blanc and used it as a warehouse from 1947 until Fisher Body bought it in 1951. The M48 Patton was built from 1952-1955. Converted in 1955 into an automotive body metal fabricating plant. Became part of GM's Metal Fabricating Division in 1994 and became Grand Blanc Weld Tool Center in 2002, making tooling for GM. Closed July 2013. Most of the work done at Grand Blanc was transferred to Parma, OH. Now called Grand Blanc Center, apparently used as a warehouse. |- |&nbsp;||Grand Rapids Metal Center||[[w:Wyoming, Michigan|Wyoming, Michigan]]||United States||&nbsp;||1936||2009||Located at 300 36th Street SW. Metal fabricating plant. Demolished. |- |&nbsp;||Guide Lamp Division||[[w:Anderson, Indiana|Anderson, Indiana]]||United States||Headlamp, Taillamp assemblies||1929||1998||GM bought Guide Motor Lamp Manufacturing Company in 1928, becoming part of the Delco Remy division initially before becoming the separate Guide Lamp Division in 1929. Guide Lamp Division was renamed Guide Division in 1975. Guide Division merged with Fisher Body in 1984 to create Fisher Guide. Fisher Guide then merged with the Inland Division in 1990 to form Inland Fisher Guide. In 1998, Guide operations were sold to [[w:Palladium Equity Partners|Palladium Equity Partners]] which turned the operation into Guide Corp. In 2007, Guide Corp. closed down. |- |H||[[w:General Motors India|Halol]]||[[w:Halol|Halol]], [[w:Gujarat|Gujarat]]||[[w:India|India]]||[[w:Chevrolet Sail#India|Chevrolet Sail U-VA]] (hatchback)<br />[[w:Chevrolet Sail#India|Chevrolet Sail]] (sedan)<br />[[w:Chevrolet Cruze|Chevrolet Cruze]]<br />[[w:Chevrolet Tavera|Chevrolet Tavera]]||1995||2017||Past models: [[w:Chevrolet Aveo (T200)|Chevrolet Aveo]], [[w:Chevrolet SRV|Chevrolet SRV]] (sports hatch), [[w:Chevrolet Optra|Chevrolet Optra]], [[w:Chevrolet Enjoy|Chevrolet Enjoy]], [[w:Opel Corsa|Opel Corsa]](sedan), [[w:Opel Corsa|Opel Corsa Sail]] (hatchback), [[w:Opel Corsa|Opel Corsa Swing]](station wagon), [[w:Opel Astra|Opel Astra]]. <br /> The new [[w:General Motors India|GM India]] began as a 50/50 joint venture with [[w:Hindustan Motors|Hindustan Motors]] in 1994.The Halol plant was bought from [[w:Hindustan Motors|Hindustan Motors]] in 1995. GM bought out [[w:Hindustan Motors|Hindustan Motors]] in 1999. Sold to SAIC to produce [[w:MG Motor India|MG Motor India]] vehicles in 2017. |- |&nbsp;||Fisher Body - Hamilton-Fairfield Stamping Plant||[[w:Hamilton, Ohio|Hamilton, Ohio]]||United States||Stampings & Bodies for GM vehicles||1947||1988||Located at 4400 Dixie Highway. Now the Fisher Industrial Park. |- |&nbsp;||Harrison Radiator Division - Moraine||[[w:Moraine|Moraine]], [[w:Ohio|Ohio]]||United States||Machining and assembly of automotive A/C compressors, valves, and accumulator dehydrators||1941||1999||Located at 3600 Dryden Road. Originally built for [[w:Frigidaire|Frigidaire]]. In 1975, automotive and appliance operations were split with the automotive operations becoming Delco Air Conditioning Division. [[w:Frigidaire|Frigidaire]] appliance division was sold in 1979. Delco Air Conditioning Division merged into Harrison Radiator Division in 1981. Spun off with [[w:Delphi Automotive Systems|Delphi Automotive Systems]] in 1999. Became Delphi Harrison Thermal Systems. Closed by Delphi in 2003. Demolished by 2005. |- |H1, H2,<br> H3, H4 [https://www.uniquecarsandparts.com.au/holden_identification]||Holden Acacia Ridge Plant||[[w:Acacia Ridge, Queensland|Acacia Ridge, Queensland]]||[[w:Australia|Australia]]||[[w:Holden|Holden]] models including:<br /> [[w:Holden HD|Holden HD]]<br />[[w:Holden HR|Holden HR]]<br />[[w:Holden HK|Holden HK]]<br />[[w:Holden HT|Holden HT]]<br />[[w:Holden HG|Holden HG]]<br />[[w:Holden Torana|Holden Torana]]<br />[[w:Holden HQ|Holden HQ]]<br />[[w:Holden HJ|Holden HJ]]<br />[[w:Holden HX|Holden HX]]<br />[[w:Holden HZ|Holden HZ]]<br />[[w:Holden Gemini#First generation|Holden Gemini TX, TC, TD, TE, TF, TG]]<br />[[w:Holden Commodore (VC)|Holden Commodore (VC)]]<br />[[w:Holden Camira|Holden Camira]]||1966||1984||[[w:Holden|Holden]] plant. Replaced Fortitude Valley plant. |- |A||Holden Birkenhead Plant||[[w:Birkenhead, South Australia|Birkenhead, South Australia]]||[[w:Australia|Australia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]<br />[[w:GMC (automobile)|GMC]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]]<br />[[w:Holden|Holden]]<br />||1926||1981||[[w:Holden|Holden]] plant. Built by GM Australia before it merged with Holden's Motor Body Builders Ltd. Plant was closed from 1931 until 1938. Also produced military vehicles & equipment during WWII. Before WWII, Birkenhead combined bodies made in Woodville with CKD chassis assembled in Melbourne. After WWII, Birkenhead assembled CKD chassis imported from the US, Canada, & the UK and combined them with bodies made in Woodville. Once Holden brand cars started to be made in 1948, body and chassis components came from Woodville & powertrain came from Fishermans Bend and complete cars were assembled in Birkenhead. Vehicle production ended in 1965 when the Elizabeth plant started making complete vehicles. Birkenhead was then used as an export boxing area, a parts warehouse, and also assembled earthmoving equipment for Terex (then owned by GM) from 1969 until the mid 1970's. |- |M,<br> J1, J2, J3, <br> and J4-J9||Holden Dandenong Plant||[[w:Dandenong|Dandenong]], [[w:Victoria, Australia|Victoria]]||[[w:Australia|Australia]]||[[w:Holden|Holden]] models including:<br /> [[w:Holden FE|Holden FE]]<br />[[w:Holden FC|Holden FC]]<br />[[w:Holden FB|Holden FB]]<br />[[w:Holden EK|Holden EK]]<br />[[w:Holden EJ|Holden EJ]]<br />[[w:Holden EH|Holden EH]]<br />[[w:Holden HD|Holden HD]]<br />[[w:Holden HR|Holden HR]]<br />[[w:Holden HQ|Holden HQ]]<br />[[w:Holden HZ|Holden HZ]]<br />[[w:Holden HK|Holden HK]]<br />[[w:Holden Torana|Holden Torana]] LH, LX, UC<br />[[w:Holden Sunbird|Holden Sunbird]] LX, UC<br />[[w:Holden Commodore (VB)|Holden Commodore (VB)]]<br />[[w:Holden Commodore (VC)|Holden Commodore (VC)]]<br />[[w:Holden Commodore (VH)|Holden Commodore (VH)]]<br />[[w:Holden Commodore (VK)|Holden Commodore (VK)]]<br />[[w:Holden Commodore (VL)|Holden Commodore (VL)]]<br />[[w:Holden Camira|Holden Camira]]<br />[[w:Holden Nova|Holden Nova]] LE, LF <br /> [[w:Toyota Corolla (E90)#Australia|Toyota Corolla (E90)]]<br />Bedford by Isuzu & [[w:Isuzu|Isuzu]] trucks<br />Body making<br />Torque converters & other components||1956|||1996||[[w:Holden|Holden]] plant. Also assembled Chevrolet trucks, Bedford vans & trucks and Frigidaire appliances. Built the 1 millionth Holden (an EJ) in October 1962, the 2 millionth Holden (an HK) in March 1969, and the 4 millionth Holden (a VC Commodore) in June 1981. Vehicle production by Holden ceased in 1988, vehicle production by Toyota for itself and for Holden lasted from 1989-1994 under a plant lease agreement<ref>{{cite web |author=Takahiro Fujimoto |date=October 1998 |url=http://e-server.e.u-tokyo.ac.jp/cirje/research/dp/98/cf23/dp.pdf |title=Toyota Motor Manufacturing Australia in 1995: An Emergent Global Strategy |publisher=[[w:University of Tokyo|University of Tokyo]] |page=23 |archive-url=https://www.webcitation.org/5xJZkwEEX?url=http://e-server.e.u-tokyo.ac.jp/cirje/research/dp/98/cf23/dp.pdf |archive-date=2011-03-20 |url-status=dead }}</ref>. Minor assembly until 1996. Then became known as Holden Service Parts Operations (HSPO) which manages the distribution and marketing of Holden service parts and accessories for the Holden dealer network and international customers. |- |L,<br><br> L1, L2, <br> L3-L5||Holden Elizabeth Plant||[[w:Elizabeth, South Australia|Elizabeth, South Australia]]||[[w:Australia|Australia]]||[[w:Holden Berlina|Holden Berlina]]<br />[[w:Holden Calais|Holden Calais]]<br /> [[w:Holden Caprice|Holden Caprice]]<br /> [[w:Holden Commodore|Holden Commodore]]<br /> [[w:Holden Ute|Holden Ute]]<br /> [[w:Holden Statesman|Holden Statesman]]<br /> [[w:Vauxhall VXR8|Vauxhall VXR8]]<br />[[w:Chevrolet SS (2013)|Chevrolet SS]] (2014-2017)<br />[[w:Chevrolet Caprice PPV|Chevrolet Caprice PPV]] (2011-2017) |1959||2017||[[w:Holden|Holden]] manufacturing plant. Holden Vehicle Manufacturing Operations. Located at 180 Philip Highway. First opened as a body hardware plant making components, then expanded to making complete vehicle bodies in 1962, then expanded to making complete vehicles in 1965. Elizabeth became Holden’s only remaining car manufacturing plant in Australia in 1994. Built the 5 millionth Holden (a VN Calais) in August 1990, the 6 millionth Holden (a VX Commodore SS) in June 2001, and the 7 millionth Holden (a VE Commodore) in August 2008. Total number of vehicles built at all plants in Australia by Holden (including export models) from 1948-2017 is 7,687,675. Production ended October 20, 2017. Final vehicle made at Elizabeth and final Australian-built Holden was a VFII Commodore Redline with a manual transmission.[https://www.carsales.com.au/editorial/details/holdens-manufacturing-closure-by-the-numbers-109466/] Epicurean Food Group bought the site in 2023 and is using it as a farm to grow mushrooms. Cars produced before its final year before closure included the [[w:Pontiac GTO#Fifth generation|Pontiac GTO]] (2004-2006), [[w:Vauxhall Monaro|Vauxhall Monaro]], [[w:Holden Monaro|Holden Monaro]], [[w:Pontiac G8|Pontiac G8]] (2008-2009), [[w:Holden Gemini#Second generation|Holden Gemini (RB)]], [[w:Chevrolet Cruze#First generation (J300; 2008)|Holden Cruze (JH)]], [[w:Holden Torana|Holden Torana]], [[w:Opel Vectra#Vectra B (1995–2002)|Holden Vectra (JS)]], [[w:Statesman (automobile)|Statesman brand WB]], [[w:Holden WB|Holden WB]] Ute & One-Tonner, [[w:Holden Adventra|Holden Adventra]], [[w:Holden Crewman|Holden Crewman]], [[w:Chevrolet Lumina#Holden-based models|Chevrolet Lumina]], [[w:Chevrolet Caprice#Fifth generation (1999–2006)|Chevrolet Caprice]], [[w:Chevrolet Cruze#First generation (J300; 2008)|Chevrolet Cruze]] 5-door, [[w:Chevrolet Omega|Chevrolet Omega]] B & C, [[w:Buick Royaum|Buick Royaum]], [[w:Daewoo Statesman|Daewoo Statesman]], and [[w:Daewoo Veritas|Daewoo Veritas]]. Also, [[w:United Australian Automobile Industries#Toyota Lexcen|Toyota Lexcen]]. |- |&nbsp;||Holden Fishermans Bend Plant (Port Melbourne)||[[w:Port Melbourne|Port Melbourne]], [[w:Victoria, Australia|Victoria]]||[[w:Australia|Australia]]||[[w:GM High Feature engine|Holden Alloytec V6 engine]]<br />[[w:Buick V6 engine#3800 V6|Buick V6]]<br />[[w:GM Family II engine|GM Family II I4 engine]]<br />[[w:Holden V8 engine]]<br />[[w:Holden straight-six motor#Starfire|Holden Starfire I4]]<br />[[w:Holden straight-six motor|Holden straight-six motor]]<br />Manual transmissions<br />[[w:Holden Salisbury differential|Holden Banjo/Salisbury differentials]]<br />Axles<br />Stampings<br />Components<br />Foundry ||1936||2016||Headquarters of GM Holden Ltd. <br /> Holden's Engine Company/Holden Engine Operations.<br /> Used to build vehicles as well including the [[w:Holden 48-215|Holden 48-215]] & [[w:Holden FJ|Holden FJ]]. Vehicle assembly ended in 1956 and was moved to Dandenong. <br /> Versions of the Alloytec/High Feature V6 were also supplied to [[w:Saab Automobile|Saab]] & [[w:Alfa Romeo|Alfa Romeo]] from this plant. <br /> Sold to the Victorian state Government in 2016. |- |B||Holden Fortitude Valley Plant||[[w:Fortitude Valley|Fortitude Valley]], [[w:Queensland|Queensland]]||[[w:Australia|Australia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]<br />[[w:GMC (automobile)|GMC]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]]<br />[[w:Holden 48-215|Holden 48-215]]<br />[[w:Holden FJ|Holden FJ]]<br />[[w:Holden FE|Holden FE]]<br />[[w:Holden FC|Holden FC]]<br />[[w:Holden FB|Holden FB]]<br />[[w:Holden EK|Holden EK]]<br />[[w:Holden EJ|Holden EJ]]<br />[[w:Holden EH|Holden EH]]<br />||1927||1965||[[w:Holden|Holden]] plant. Built by GM Australia before it merged with Holden's Motor Body Builders Ltd. Plant was closed from 1931 until 1934. Fortitude Valley combined bodies made in Woodville with CKD chassis assembled in Melbourne. Replaced by Acacia Ridge plant. |- |&nbsp;||Holden Marrickville Plant||[[w:Marrickville, New South Wales|Marrickville, New South Wales]]||[[w:Australia|Australia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Marquette (automobile)#Buick brand|Marquette]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]<br />[[w:GMC (automobile)|GMC]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]]||1926||1940||[[w:Holden|Holden]] plant. Built by GM Australia before it merged with Holden's Motor Body Builders Ltd. Plant was closed from 1931 until 1934. Marrickville combined bodies made in Woodville with CKD chassis assembled in Melbourne. Building sold. Replaced by Pagewood plant. |- |&nbsp;||Holden Melbourne Plant (City Road)||[[w:Melbourne|Melbourne]], [[w:Victoria, Australia|Victoria]]||[[w:Australia|Australia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]<br />[[w:GMC (automobile)|GMC]]<br />[[w:Vauxhall Motors|Vauxhall]]||1926||1936||[[w:Holden|Holden]] plant. Acquired by GM Australia before it merged with Holden's Motor Body Builders Ltd. Melbourne combined bodies made in Woodville with CKD chassis assembled in Melbourne. Building sold. Replaced by Fishermans Bend plant. |- |P,<br> L6||Holden Mosman Park Plant||[[w:Mosman Park, Western Australia|Mosman Park (formerly Cottesloe Beach)]], [[w:Western Australia|Western Australia]]||[[w:Australia|Australia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]<br />[[w:GMC (automobile)|GMC]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]]<br />[[w:Holden|Holden]]<br />||1926||1972||[[w:Holden|Holden]] plant. Built by GM Australia before it merged with Holden's Motor Body Builders Ltd. Plant was closed from 1932 until 1935. Also produced military vehicles & equipment during WWII. Before WWII, Mosman Park combined bodies made in Woodville with CKD chassis assembled in Melbourne. After WWII, Mosman Park assembled CKD chassis imported from the US, Canada, & the UK and combined them with bodies made in Woodville. Once Holden brand cars started to be made in 1948, body and chassis components came from Woodville & powertrain came from Fishermans Bend and final assembly was done in Mosman Park. Plant was closed down in 1972. Demolished in the early 1990s. |- |S,<br> H5, H6, H7,<br> H8, H9||Holden Pagewood Plant||[[w:Pagewood, New South Wales|Pagewood, New South Wales]]||[[w:Australia|Australia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]]<br />[[w:Holden 48-215|Holden 48-215]]<br />[[w:Holden FJ|Holden FJ]]<br />[[w:Holden FE|Holden FE]]<br />[[w:Holden FC|Holden FC]]<br />[[w:Holden FB|Holden FB]]<br />[[w:Holden EK|Holden EK]]<br />[[w:Holden EJ|Holden EJ]]<br />[[w:Holden EH|Holden EH]]<br />[[w:Holden HD|Holden HD]]<br />[[w:Holden HR|Holden HR]]<br />[[w:Holden HK|Holden HK]]<br />[[w:Holden HT|Holden HT]]<br />[[w:Holden HG|Holden HG]]<br />[[w:Holden Monaro|Holden Monaro]]<br />[[w:Holden HQ|Holden HQ]]<br />[[w:Holden HJ|Holden HJ]]<br />[[w:Holden HX|Holden HX]]<br />[[w:Holden HZ|Holden HZ]]<br />[[w:Holden Torana|Holden Torana]]<br /> [[w:Holden Commodore (VB)|Holden Commodore (VB)]]<br />[[w:Statesman (automobile)|Statesman brand HQ-HZ]]<br />Body making||1940||1980||[[w:Holden|Holden]] plant. Also produced military equipment during WWII. Before WWII, Pagewood combined bodies made in Woodville with CKD chassis assembled in Melbourne. After WWII, Pagewood assembled CKD chassis imported from the US, Canada, & the UK and combined them with bodies made in Woodville. Also made Frigidaire appliances. Built the 3 millionth Holden (an HQ) in June 1974. Vehicle production ended in 1980 while plant closedown operations extended into 1981. |- |&nbsp;||[[w:Holden Woodville Plant|Holden Woodville Plant]]||[[w:Woodville, South Australia|Woodville, South Australia]]||[[w:Australia|Australia]]||[[w:Holden|Holden]]:<br />Stamping<br />Body making<br />Paint shop<br />Body Hardware<br />Trim<br />Tool & Die<br />[[w:Tri-Matic|Tri-Matic]] automatic transmission||1923||1965||[[w:Holden|Holden]] plant. Built before Holden was taken over by GM. Built car bodies for many brands of cars including GM brands (Chevrolet, Pontiac, Oakland, Oldsmobile, Marquette, Buick, LaSalle, Cadillac, GMC, Vauxhall, & Bedford) and non-GM brands (Chrysler, DeSoto, Dodge, Plymouth, Willys, Hudson, Nash, Studebaker, Austin, Morris, Rover, Standard, Fiat, & others). (Holden Motor Body Works.) Also produced military equipment during WWII. Once Holden brand cars started to be made in 1948, body and chassis components were made in Woodville. Also produced replacement parts for discontinued models. Most operations transferred to Elizabeth between 1959 & 1965. Built the Tri-Matic automatic transmission from 1969-1987. Plant sold in 1984. Tri-Matic production area was leased back until production ended. Other companies continued production of spare parts. |- |V||[[w:IBC Vehicles|IBC Vehicles Ltd.]]/<br>[[w:GMM Luton|GMM Luton]]<ref>{{cite web |title=Company Profile |publisher=Vauxhall |url=http://media.gm.com/gb/vauxhall/en/company/c_company-profile/index.html |access-date=2009-06-29 |archive-url=https://archive.today/20090629105853/http://media.gm.com/gb/vauxhall/en/company/c_company-profile/index.html |archive-date=2009-06-29}}</ref>||[[w:Luton|Luton]], [[w:Bedfordshire|Bedfordshire]]||[[w:United Kingdom|United Kingdom]]||[[w:Bedford CF#CF2|Bedford CF2]]<br />[[w:Isuzu Fargo#Bedford Midi / Vauxhall Midi|Bedford/Vauxhall/GME/Isuzu Midi/<br>Bedford Seta/Vauxhall Albany]]<br />[[w:Suzuki Carry#Bedford Rascal|Bedford/Vauxhall/GME Rascal]]<br />[[w:Suzuki Carry#Export models|Suzuki Super Carry]]<br />[[w:Isuzu MU#First generation (UCS55/UCS69GW; 1989–1998)|Opel/Vauxhall Frontera A]]<br />[[w:Isuzu MU#Second generation (UER25FW, UES25FW, UES73FW; 1998–2004)|Opel/Vauxhall Frontera B]]<br />[[w:Holden Frontera#First generation (UCS55/UCS69GW; 1989–1998)|Holden Frontera (UT)]]<br />[[w:Renault Trafic#Second generation (X83; 2001)|Opel/Vauxhall Vivaro]] A (low roof versions only)<br />[[w:Renault Trafic#Third generation (X82; 2014)|Opel/Vauxhall Vivaro]] B (low roof versions only)<br />[[w:Renault Trafic#Second generation (X83; 2001)|Renault Trafic (X83)]] (low roof versions only)<br />[[w:Renault Trafic#Second generation (X83; 2001)|Nissan Primastar (X83)]] (low roof versions only)||1950 (as AA Block of Luton plant)<br><br>1984 (as Bedford Luton Van Plant)||2017|| [[w:Vauxhall Motors|Vauxhall plant]]. Began as the Bedford van plant when Bedford vans were moved out of the Luton passenger car plant and into a separate, nearby plant (AA Block [body assembly and paint] &<br> K Block [trim and final assembly] of the Luton complex) connected by a bridge so that components for the CF van made in the car plant could be easily transferred to the van plant. Was part of the Bedford Commercial Vehicles Division of the GM Overseas Commercial Vehicles Corp. CF2 production ended in July 1987. Built the Isuzu-designed Midi from December 20, 1984 through May 23, 1996 though the Midi was still available through the 1997 model year. An upscale, 7-psgr. variant of the Midi called the Vauxhall Albany was built for 1991 only. Built the Suzuki-designed Rascal from February 1986 through July 3, 1993. Also built the Rascal's Suzuki counterpart, the Super Carry, for the UK & other European markets. Became a joint venture with [[w:Isuzu|Isuzu]] called IBC Vehicles Ltd., which was incorporated on January 20, 1987. Production under IBC Vehicles began in October 1987 after the plant was reorganized and staff was retrained. GM owned 60% & Isuzu held 40%. The Bedford brand was discontinued and replaced by the Vauxhall brand on light commercial vehicles as of June 1, 1990. GM bought Isuzu's stake in IBC Vehicles back in 1998 & the operation was again a subsidiary of GM. It was then renamed GMM (GM Manufacturing) Luton. Sold to [[w:PSA Group|PSA Group]] in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. Production ended March 28, 2025. Last vehicle produced was a Vauxhall Vivaro. Site has been sold for redevelopment into an industrial park. |- |&nbsp;||[[w:IDA-Opel|IDA-Opel]]||[[w:Kikinda|Kikinda]], [[w:Socialist Republic of Serbia|Socialist Republic of Serbia]]||[[w:Yugoslavia|Yugoslavia]]||[[w:Opel Ascona#Ascona C (1981–1988)|Opel Ascona]] C<br />[[w:Opel Corsa#Corsa A (S83; 1982)|Opel Corsa]] A<br />[[w:Opel Kadett|Opel Kadett]] D & E<br />[[w:Opel Kikinda#Senator A (1978–1986)|Opel Kikinda]] (Senator A)<br />[[w:Opel Omega#Omega A (1986–1994)|Opel Omega]] A<br />[[w:Opel Rekord Series E|Opel Rekord]] E<br />[[w:Opel Vectra#Vectra A (1988–1995)|Opel Vectra]] A<br />Iron castings, brake, and axle components||1977||1992|| [[w:Adam Opel AG|Opel affiliate]]. A joint venture owned 49% by GM & 51% by Kikinda Iron Foundry. IDA = Industrija Delova Automobila or Industry of Automobile Parts. The operation exported iron castings, brake, and axle components to GM/Opel, thus allowing partially built Opels to be imported into Yugoslavia and not be counted as imports. Ended by the wars of the breakup of Yugoslavia and imposition of sanctions on Yugoslavia in 1992. The plant was later restructured as the Livnica Kikinda metal foundry, which was taken over by Slovenia's Cimos in 2004 and manufactures auto parts for various European manufacturers including Opel. |- |&nbsp;||Indianapolis Metal Center||[[w:Indianapolis|Indianapolis]], [[w:Indiana|Indiana]]||United States||Metal stampings for trucks||1930||2011||Located at 340 S. White River Parkway W. Drive. Stamping plant. Acquired from the former Martin-Parry Corporation in 1930. Became a Chevrolet plant making truck bodies. Became part of GM Truck & Bus Group in 1982 and in early 1992, became part of NATP (North American Truck Platforms) and later transferred to CLCD (Cadillac/Luxury Car Division) before joining the Metal Fabrication Division in 1994. Closed in June 2011. Demolished in 2014-2015. |- |&nbsp;||Inland Fisher Guide Plant (Columbus, Ohio)||[[w:Columbus, Ohio|Columbus, Ohio]]||United States||Door Panel Assemblies & Small Components||1946||1999||Located at 200 Georgesville Road. Originally opened as a plant for the Ternstedt Division of General Motors. Then, Fisher Hardware Fabrication when Ternstedt merged back into Fisher Body in 1969. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. In 1995, Inland Fisher Guide became the Delphi Interior and Lighting Systems division of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary. Spun off with [[w:Delphi Automotive Systems|Delphi Automotive Systems]] in 1999. Closed by Delphi in 2007. |- |&nbsp;||Inland Fisher Guide Dayton Plant||[[w:Dayton, Ohio|Dayton]], [[w:Ohio|Ohio]]||United States||Engine Mounts<br />Transmission Mounts<br />Strut Mounts<br />Steering Wheels<br />Liteflex Springs<br />Brake Linings<br />Brake Hose<br />Brake Pads<br />Ball Joints<br />Ice Cube Trays ||1921||1999||Located at 2701 Home Avenue (originally Home Road). The first factory building was built in 1910 by the Wright Company and made airplanes and components. The 2nd factory building was built in 1911 & made airplane engines. Aircraft production ceased in 1916. 13 different types of planes had been produced. In Feb. 1917, the plants were sold to the Darling Motor Co. but they went bankrupt shortly thereafter. The Dayton-Wright Company bought the site from Darling Motor on March 22, 1917 and made aircraft parts at the site for its Moraine assembly plant from 1918 to 1919. Dayton-Wright Company was bought by GM in 1919 & it was initially run as a GM subsidiary. In 1923, the aircraft part of the business was sold to Consolidated Aircraft Co. & this site switched from aviation production to automotive production. Inland Manufacturing Division (originally Inland Mfg. Company) of GM was formed on January 6, 1923 at this site, initially to make steering wheels. Merged with Fisher Guide to became Inland Fisher Guide in 1989. In 1995, Inland Fisher Guide became the Delphi Interior and Lighting Systems division of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary. Spun off with [[w:Delphi Automotive Systems|Delphi Automotive Systems]] in 1999. Delphi closed it in 2008. The 2 original Wright Brothers' buildings were left standing and became part of Dayton Aviation Heritage National Historical Park in 2009 but the rest was demolished around 2014. The Wright Brothers factory buildings were damaged by fire in March 2023. |- |&nbsp;||Inland Fisher Guide Plant (Detroit - Fort St.)||[[w:Detroit, Michigan|Detroit, Michigan]]||United States||Door hinges and interior parts||1920||1989||Located at 6307 W. Fort St. & Livernois St. Was Ternstedt's headquarters until 1962. Originally opened by Ternstedt Manufacturing Co., which was taken over by Fisher Body Co. in 1920. Became part of GM when GM took over Fisher Body in 1926. Ternstedt became a separate division of GM in 1948 before merging back in to Fisher Body in 1969. Was a plant for the Ternstedt Division (Plant# 16) of General Motors. Then, Fisher Hardware Fabrication. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. Is now Evans Distribution Systems. |- |&nbsp;||Inland Fisher Guide Plant (Elyria, Ohio)||[[w:Elyria, Ohio|Elyria, Ohio]]||United States||Car seats||1947||1990||Located at 1400 Lowell St. Originally opened as a plant for the Ternstedt Division of General Motors. Then, Fisher Hardware Fabrication when Ternstedt merged back into Fisher Body in 1969. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. |- |&nbsp;||Inland Fisher Guide Plant (Euclid, Ohio)||[[w:Euclid, Ohio|Euclid, Ohio]]||United States||Vehicle Bodies until 1970<br />Then, trim fabrication, seat covers & backs, upholstery, door panels, sunvisors, & other interior parts.<br />Also made seats & cushions for Sea Ray Boats||1947||1993||Located at 20001 Euclid Ave. Originally built in 1943. Bought by GM in 1947 from Cleveland Pneumatic Aerol Co., which made rocket shells and aircraft landing gear there during WWII. Was a Fisher Body plant making bodies for Chevrolet, Pontiac, Oldsmobile, & Buick until 1970. Then became a Fisher Trim Fabrication plant. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. Closed in 1993. Site currently in use by an industrial supply store (HGR) and indoor sports facilities (The Sports Plant). |- |&nbsp;||[[w:Automotive industry in Flint, Michigan#Coldwater Road Plant|Inland Fisher Guide Plant (Flint - Coldwater Road)]]||[[w:Genesee Township, Michigan|Genesee Township, Michigan]]||United States||Window regulators, door hinges, door modules and seat adjusters||1953||1996||Located at 1245 East Coldwater Road. Originally opened as a plant for the Ternstedt Division of General Motors. Then, Fisher Hardware Fabrication when Ternstedt merged back into Fisher Body in 1969. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. In 1995, Inland Fisher Guide became the Delphi Interior and Lighting Systems division of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary. Sold to Peregrine Inc. in 1996, which continued making window regulators and door hinges and modules. Closed by Peregrine in 1998. A GM subsidiary called REALM bought the property in 1999 and GM used the administration building until 2000. Demolished by 2001. Site now used by Deployment Strategies Group LLC for container storage. |- |&nbsp;||Inland Fisher Guide Plant (Grand Rapids, Michigan)||[[w:Walker, Michigan|Walker, Michigan]]||United States||Interior trim||1942||1998||Located at 2150 Alpine Avenue NW. Built by Haskelite Manufacturing Corporation to make wooden gliders for use in WWII. Bought by GM in the early 1950's. Built fuselages for [[w:F-84F Thunderstreak|F-84F Thunderstreak]] fighter jets. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. In 1995, Inland Fisher Guide became the Delphi Interior and Lighting Systems division of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary. Became part of Delphi in 1995. Sold by GM to [[w:Lear Corp.|Lear Corp.]] in 1998. Closed by Lear in 2005. Now called Avastar Park, a multi-tenant industrial site. |- |&nbsp;||Inland Fisher Guide Plant (Livonia, Michigan)||[[w:Livonia, Michigan|Livonia, Michigan]]||United States||Seat Cushions, Seat Pads, Seat Backs, Door Panel Trim||1954||1995||Built on the site of the former Detroit Transmission Division plant that burned down in 1953. Located at 28400 Plymouth Road. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. In 1995, Inland Fisher Guide became the Delphi Interior and Lighting Systems division of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary. Closed in 1995. Sold to Peregrine Inc. in 1996, which continued making interior trim parts. Peregrine then closed the plant in 1998. Now the Plymouth Road Technical Center, a multi-tenant site for industrial, warehousing, and logistics purposes. |- |&nbsp;||Inland Fisher Guide Plant (Syracuse)||[[w:Salina, New York|Salina, New York]]||United States||Metal auto parts (die casting, stamping, machining, painting, plating), Plastic trim parts - exterior and interior (injection molding)||1952||1993||Located at One General Motors Drive (address sometimes listed as 1000 Town Line Road). Plastic operations were added in the early 1960's. Metal operations were subsequently reduced and ultimately replaced by the plastic operations by the early 1970's. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. Closed December 1993. Property is now Salina Industrial Powerpark, a multi-tenant industrial park. |- |&nbsp;||Inland Fisher Guide Plant (Tecumseh, Michigan)||[[w:Tecumseh, Michigan|Tecumseh, Michigan]]||United States||Seat Pads & Backs||1966||1988||Located at 5550 Occidental Highway. Fisher became Fisher Guide in 1984. Now occupied by Uniloy Inc., a plastics company. |- |&nbsp;||[[w:Inland Fisher Guide Plant (New Jersey)|Inland Fisher Guide Plant (Trenton)]]||[[w:West Trenton, New Jersey|West Trenton]], [[w:Ewing Township, New Jersey|Ewing Township]], [[w:New Jersey|New Jersey]]||United States||Door handles<br />Hinges<br />Door locks<br />Seat adjusters<br />Exterior body moldings and painted components||1938||1998||Located at 1445 Parkway Ave. Built 7,546 [[w:TBM Avenger|TBM Avenger]] torpedo bombers during WWII under license from Grumman as part of GM's Eastern Aircraft Division. In 1961, the facility became the first commercial user in the United States to use a programmable industrial robot to replace human workers. Brief article about the plant's closing and displaced workers. 1993 Plant closing date was later delayed until Summer of 1998 : [https://query.nytimes.com/gst/fullpage.html?res=9E0CEEDB1E3EF937A35751C1A964958260] Originally part of the [[w:Flint, Michigan auto industry#Ternstedt Division|Ternstedt Division]] of Fisher Body, then the Ternstedt Division of GM in 1948 before Ternstedt merged back in to Fisher Body in 1969. Then, Fisher Hardware Fabrication. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. In 1995, Inland Fisher Guide became the Delphi Interior and Lighting Systems division of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary. Closed in 1998. Plant was subsequently demolished. Site redeveloped into Ewing Town Center, a mixed retail and residential complex. |- |&nbsp;||Inland Fisher Guide Plant (Vandalia, Ohio)||[[w:Vandalia, Ohio|Vandalia, Ohio]]||United States||Door Panel Assemblies<br />Seat Pads<br />Instrument Panels||1941||1999||Located at 250 Northwoods Boulevard. Originally a GM Aeroproducts division facility making aircraft propellers, Aeroproducts division became part of GM's Allison division in 1952, site was absorbed by GM's Inland division in 1961 after propeller production moved to Allison's Indianapolis operation in 1960, merged into Inland Fisher Guide division in 1991, became part of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary in 1995 and transferred to Delphi Chassis Division. Spun off with Delphi in 1999. Transferred to Delphi Thermal Division in 2007. Sold in 2015 to [[w:Mahle GmbH|Mahle GmbH]]. Mahle transferred operations to its Behr plant in Dayton and closed the Vandalia plant by 2016. Mahle sold the property in 2017. |- |&nbsp;||General Motors International A/S||[[w:Copenhagen|Copenhagen]]||[[w:Denmark|Denmark]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Opel|Opel]]<br />[[w:Vauxhall Motors|Vauxhall]]||1924||1974||GM's 1st European assembly plant & 1st assembly plant outside North America. First vehicle off the line was a Chevrolet utility truck on January 7, 1924. Pontiac assembly began July 24, 1926. Oakland, Oldsmobile, & Buick assembly began in 1929. In the 1960's, the Chevy Chevelle & Buick Skylark were assembled along with most Opel & Vauxhall models. Station wagon-based vans were assembled as was the Opel 1500, based on the 1200. Production ended in Oct. 1974. Over 550,000 units had been produced. |- |&nbsp;||[[w:General Motors do Brasil|Ipiranga]]||[[w:Ipiranga (district of São Paulo)|Ipiranga]], [[w:São Paulo (state)|São Paulo (state)]]||[[w:Brazil|Brazil]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]||1925||1930||GM's 1st Brazilian assembly plant. Replaced by Sao Caetano do Sul plant. |- |&nbsp;||[[w:Pars Khodro|General Motors Iran]]||[[w:Tehran|Tehran]]||[[w:Imperial State of Iran|Imperial State of Iran]]||[[w:Opel Commodore#Foreign assembly|Chevrolet Iran 2500/2800/Royale]]<br />[[w:Chevrolet Nova#Fourth generation (1975–1979)|Chevrolet Iran (Nova)]]<br />[[w:Buick Skylark#Buick Skylarks in Iran|Buick Iran (Skylark)]]<br />[[w:Cadillac Seville#First generation (1976–1979)|Cadillac Iran (Seville)]]<br />[[w:Chevrolet C/K (third generation)|Chevrolet C/K pickup]] ||1974||1987||When the Shah ruled Iran, GM established a joint venture in Iran called GM Iran. GM held 45% while Pars Khodro held the other 55%. Production began on January 15, 1974 of the Opel Commodore-based Chevrolet Iran 2500/2800/Royale. By 1977, this was replaced by the American Chevrolet Nova, Buick Skylark, & Cadillac Seville. Chevy pickups followed. Once the Shah was overthrown in the 1979 Revolution and Iran was taken over by fanatics, GM abandoned the factory & Iran. The company became Pars Khodro and the local management changed. Production of GM models continued sporadically until 1987 when it finally ended. |- |J (1953-2009)<br /><br />21 (1928-1952 [[w:Chevrolet|Chevrolet]])||[[w:Janesville Assembly Plant|Janesville Assembly Plant]]||[[w:Janesville, Wisconsin|Janesville, Wisconsin]]||United States||[[w:Chevrolet K5 Blazer|Chevrolet K5 Blazer]] (1992-1994)<br /> [[w:Chevrolet Tahoe|Chevrolet Tahoe]] (1995-2009) <br />[[w:Chevrolet Suburban|Chevrolet Suburban]] (1947-1966, 1992-2009)<br /> [[w:Chevrolet Tiltmaster|Chevrolet Tiltmaster/W-Series (Gas-powered)]] (1994-2009)<br /> [[w:GMC Forward|GMC Forward/W-Series (Gas-powered)]] (1994-2009)<br /> [[w:Isuzu N-Series|Isuzu N-Series (Gas-powered)]] (1994-2009)<br />[[w:Chevrolet Tahoe|GMC Yukon]] (1992-2009)<br /> [[w:Chevrolet Tahoe#Second generation (2000)|GMC Yukon Denali (GMT800)]] (2001-2006)<br /> [[w:Chevrolet Tahoe#Third generation (2007)|GMC Yukon Denali (GMT900)]] (2007-2009) <br />[[w:GMC Suburban|GMC Suburban]] (1992-1999)<br />[[w:GMC Yukon XL|GMC Yukon XL]] (2000-2009) <br /> [[w:Chevrolet Suburban#Ninth generation (2000)|GMC Yukon XL Denali (GMT800)]] (2001-2006) <br /> [[w:Chevrolet Suburban#Tenth generation (2007)|GMC Yukon XL Denali (GMT900)]] (2007-2009)||1919||2009||Located at 1000 General Motors Dr. Was the oldest active GM assembly plant at time of its closure in 2009; largest under one roof in the U.S. Originally built [[w:Samson Tractor|Samson tractors]] from 1919-1922. Also made [[w:Samson Tractor#Trucks and a car|Samson trucks]] from 1920-1922. On October 1, 1922, the Janesville plant was transferred to Chevrolet. Started producing Chevrolets on Feb. 14, 1923. Shortly thereafter, a neighboring Fisher Body plant was added. Plant closed from September 1932 - late 1933. During World War II, both the Chevy & Fisher Body sides of the plant were controlled by Oldsmobile and made artillery shells. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Janesville Assembly joined the GM Assembly Division in 1968. On April 21, 1967, the 100 millionth GM vehicle built in the US, a blue, two-door Chevrolet Caprice, was produced at the Janesville plant. Full-size cars ended production in 1982 and were replaced by the compact J-cars like the Cavalier. Last passenger car built was the 1991 Chevy Cavalier. Only SUVs and trucks were subsequently built. SUV production ended Dec. 23, 2008. Last vehicle produced was a black 2009 Chevy Tahoe. Medium-duty truck production ended on April 23, 2009, marking the end of vehicle production at Janesville. Officially, the plant was placed on "standby" status but production never restarted and the 2015 GM-UAW contract allowed Janesville to be closed permanently. Demolished from 2018-2019.<br /> Past models: [[w:Chevrolet Superior|Chevrolet Superior]], [[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]], [[w:Chevrolet Series AB National|Chevrolet Series AB National]], [[w:Chevrolet Series AC International|Chevrolet Series AC International]], [[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]], [[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]], [[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]], [[w:Chevrolet Standard Six|Chevrolet Standard Six]], [[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]], [[w:Chevrolet Master|Chevrolet Master]], [[w:Chevrolet Deluxe|Chevrolet Deluxe]], [[w:Chevrolet Stylemaster|Chevrolet Stylemaster]], [[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]], [[w:Chevrolet 150|Chevrolet 150]] (1953-1957), [[w:Chevrolet 210|Chevrolet 210]] (1953-1957), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1970), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1972), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1982), [[w:Chevrolet Cavalier|Chevrolet Cavalier]] (1982-1991), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet El Camino#First generation (1959–1960)|Chevrolet El Camino]] (1959-1960), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1982), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Buick Skyhawk#Second generation (1982–1989)|Buick Skyhawk]] (1988-1989), [[w:Cadillac Cimarron|Cadillac Cimarron]] (1982-1988), [[w:Chevrolet AK Series|Chevrolet AK Series]], [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:Chevrolet C/K|Chevrolet C/K]] (1960-1986), [[w:Chevrolet C/K (third generation)#R/V-Series (1987–1991)|Chevrolet R/V]] (1987-1989), [[w:Chevrolet C/K (fourth generation)|Chevrolet C/K crew cab (GMT400)]] (1992-1994), [[w:Chevrolet C/K (fourth generation)#C3500HD (1991–2002)|Chevrolet C3500HD]] (1991-1998), [[w:Chevrolet Kodiak#Second generation (1990–2002)|Chevrolet Kodiak (GMT530)]] (1990-2002), [[w:Chevrolet/GMC B series#Third generation (1993–2003)|Chevrolet B-series]] (1993-02), [[w:Isuzu Forward|Chevrolet T-Series]] (1997-2002), [[w:Chevrolet C/K (second generation)|GMC C/K (Action Line)]] (1967-1972), [[w:Chevrolet C/K (third generation)|GMC C/K (Rounded Line)]] (1973-1986), [[w:Chevrolet C/K (third generation)#R/V-Series (1987–1991)|GMC R/V]] (1987-1989), [[w:Chevrolet C/K (fourth generation)|GMC Sierra crew cab (GMT400)]] (1992-1994), [[w:Chevrolet C/K (fourth generation)#C3500HD (1991–2002)|GMC Sierra C3500HD]] (1991-1998), [[w:Chevrolet Kodiak#Second generation (1990–2002)|GMC TopKick (GMT530)]] (1990-02), [[w:Chevrolet/GMC B series#Third generation (1993–2003)|GMC B-series]] (1993-2002), [[w:GMC T-Series|GMC T-Series]] (1997-2002), [[w:Isuzu F-Series|Isuzu F-Series]] (1997-2002) |- |&nbsp;||Kalamazoo Metal Center||[[w:Kalamazoo, Michigan|Kalamazoo, Michigan]]||United States||Stamped Body panels ||1965||1999|| Located at 5200 East Cork Street. Metal stamping plant. Started out as a Fisher Body plant. Now Midlink Business Park. |- |K||[[w:GM Korea|GM Korea]]||[[w:Gunsan|Kunsan]], [[w:Jeolla Province|Jeolla]]||[[w:South Korea|South Korea]]||[[w:Chevrolet Cruze|Chevrolet Cruze]]<br />[[w:Holden Cruze#Australia|Holden Cruze (JG sedan/JH wagon)]]<br />[[w:Holden Astra#Seventh generation (BK, BL; 2016)|Holden Astra Sedan (BL)]] (4-door)<br />[[w:Chevrolet Orlando|Chevrolet Orlando]]<br />[[w:GM Family Z engine|Family Z diesel engine]]||1997||2018||Past models: [[w:Daewoo Lacetti|Daewoo Lacetti]], [[w:Daewoo Nubira|Daewoo Nubira]], [[w:Daewoo Tacuma|Daewoo Tacuma]], [[w:Chevrolet Optra|Chevrolet Optra]], [[w:Chevrolet Vivant|Chevrolet Vivant]], [[w:Holden Viva|Holden Viva (JF)]], [[w:Suzuki Forenza|Suzuki Forenza]], [[w:Suzuki Reno|Suzuki Reno]] This factory also produced Chevrolet vehicles for [[w:General Motors Europe|General Motors Europe]] and [[w:Chevrolet Europe|Chevrolet Europe]]. The factory permanently closed on May 31, 2018, due to low productivity caused by GM's withdrawal from Europe in 2017 and due to GM's restructuring of its GM Korea operations. Sold to Myoung Shin Co., Ltd. in 2018. Diesel engines were produced at an adjacent facility beginning in 2006. |- |A<br />(1953-1964 [[w:Chevrolet|Chevrolet]] and 1965-1990)<br /><br />8 <br />(1929-1952 [[w:Chevrolet|Chevrolet]])||[[w:Lakewood Assembly|Lakewood Assembly]]||[[w:Lakewood Heights, Atlanta|Lakewood Heights, Georgia]]||United States ||[[w:Chevrolet Caprice|Chevrolet Caprice]] (1966, 1987-1990)<br />[[w:Pontiac Safari|Pontiac Safari wagon]] (1987-1989)<br />[[w:Buick Estate#1977–1990|Buick LeSabre Estate wagon]] (1987-1989)<br /> [[w:Buick Estate#1977–1990|Buick Electra Estate wagon]] (1987-1989)<br />[[w:Buick Estate#1977–1990|Buick Estate wagon]] (1990)||1928||1990||Located at McDonough Boulevard and Sawtell Avenue. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Lakewood Assembly joined the GM Assembly Division in 1968. Idled from September 1982 to early 1984. Production ended with Chevrolet Caprice Classic & Buick Estate Wagon. Last vehicle produced was a gray Chevy Caprice on <br> August 6, 1990.<br /> Past models:<br /> [[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br /> [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1966), [[w:Chevrolet 150|Chevrolet 150]] (1953-1957), [[w:Chevrolet 210|Chevrolet 210]] (1953-1957), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1966), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet El Camino#First generation (1959–1960)|Chevrolet El Camino]] (1959-1960), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1966), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Chevrolet Suburban|Chevrolet Suburban]] (1957, 1965-1966). Also built the <br> [[w:Chevrolet Chevette|Chevrolet Chevette]] (1981-1982, 1984-1987) & [[w:Pontiac 1000|Pontiac 1000]] (1981-1982, 1984-1987),<br> [[w:Pontiac Acadian|Pontiac Acadian]] (Canada only).<br> GM G-body: [[w:Pontiac Grand Prix#Third generation (1969–1972)|Pontiac Grand Prix]] (1970-1972). GM A-body: [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1964-1970), [[w:Chevrolet El Camino#Second generation (1964–1967)|Chevrolet El Camino]] (1965), [[w:Pontiac Grand Prix|Pontiac Grand Prix]] (1973-1979), [[w:Pontiac GTO|Pontiac GTO]] (1969, 1971-1973), [[w:Pontiac LeMans|Pontiac LeMans]] (1971-1977).<br> [[w:Chevrolet AK Series|Chevrolet AK Series]], [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1948-1955), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:Chevrolet C/K|Chevrolet C/K]] (1960-80), [[w:Chevrolet C/K (second generation)|GMC C/K (Action Line)]] (1967-1972),<br> [[w:Chevrolet C/K (third generation)|GMC C/K (Rounded Line)]] (1973-1980). |- |&nbsp;||[[w:Lansing Car Assembly|Lansing Car Assembly - Body]]||[[w:Lansing, Michigan|Lansing, Michigan]]||United States||Automotive bodies||1920||2005||Located at 401 N. Verlinden St. Opened as a [[w:Durant Motors|Durant Motors]] plant in 1920. Durant Motors went out of business in 1931 and the plant was vacant until GM bought it in 1935. Known as GM's Lansing Plant 6. The plant reopened as a Fisher Body plant replacing the Fisher Body operation within the main Oldsmobile plant (Lansing Plant 1) that operated out of space leased from Oldsmobile since 1923. It supplied bodies to the main Oldsmobile plant (Lansing Plant 1 or Lansing Car Assembly - Chassis). Together with the chassis plant, they made up Lansing Car Assembly. Demolished in 2008-2009. |- |M (1949-1984 [All], 1985-2005 [North Line])||[[w:Lansing Car Assembly|Lansing Car Assembly - Chassis (North)]]||[[w:Lansing, Michigan|Lansing, Michigan]]||United States||,<br> [[w:Chevrolet Cavalier#Third generation (1995)|Chevrolet Cavalier coupe]] (1995-1998),<br> [[w:Chevrolet Malibu#Fifth generation (1997)|Chevrolet Malibu]] (2001-2003),<br> [[w:Chevrolet Malibu#Fifth generation (1997)|Chevrolet Classic]] (2004-2005),<br> [[w:Pontiac Grand Am|Pontiac Grand Am]] (1992-2005),<br> [[w:Oldsmobile Calais|Oldsmobile Calais]] (1985-1987),<br> [[w:Oldsmobile Cutlass Calais|Oldsmobile Cutlass Calais]] (1988-1991),<br> [[w:Oldsmobile Achieva|Oldsmobile Achieva]] (1992-1998),<br> [[w:Buick Skylark#Sixth generation (1985–1991)|Buick Somerset Regal/Somerset/Skylark]] (1985-1991)||1902||2005|| "M" - North assembly line. Part of GM's Lansing Plant 1. Located around 1014 Townsend St., next to the former Oldsmobile headquarters at 920 Townsend St. This was Oldsmobile's home plant. It predated the founding of GM in 1908. Fisher Body leased space here to build bodies for Oldsmobile beginning in 1923, when Fisher started making bodies for 1924 Oldsmobiles. In 1935, Fisher Body moved to the ex-Durant Motors plant on Verlinden St. that GM bought earlier that year. Oldsmobile then took back the space that Fisher Body had been using (Bldg. 26). Lansing Car Assembly was converted to build unibody, fwd, compact cars for 1985 for multiple GM brands instead of the previous body-on-frame, rwd midsize & full-size cars exclusively for Oldsmobile. Demolished in 2007. Past models: [[w:Oldsmobile F-Series|Oldsmobile F-Series]] (1928-1938), [[w:Oldsmobile L-Series|Oldsmobile L-Series]] (1932-1938), [[w:Oldsmobile Series 60|Oldsmobile Series 60]] (1939-1948), [[w:Oldsmobile Series 70|Oldsmobile Series 70]] (1939-1950), [[w:Oldsmobile 88|Oldsmobile 88]] (1949-1984), Oldsmobile 80 (1939), [[w:Oldsmobile 98#First generation (1941)|Oldsmobile 90]] (1940), [[w:Oldsmobile 98#First generation (1941)|Oldsmobile 96]] (1941), [[w:Oldsmobile 98|Oldsmobile 98]] (1941-1984), [[w:Oldsmobile 98#1953|Oldsmobile 98 Fiesta]] convertible (1953),<br> [[w:Oldsmobile Custom Cruiser#First generation (1971–1976)|Oldsmobile Custom Cruiser]] (1971-1976), [[w:Oldsmobile Cutlass|Oldsmobile Cutlass]] (1961-1984), [[w:Oldsmobile Cutlass Supreme|Oldsmobile Cutlass Supreme]] (1966-1984), [[w:Oldsmobile 442|Oldsmobile 442]] (1964-80), [[w:Oldsmobile Jetstar I|Oldsmobile Jetstar I]] (1964-1965), [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1966), [[w:Oldsmobile Toronado|Oldsmobile Toronado]] (1966-1978), [[w:Oldsmobile Vista Cruiser|Oldsmobile Vista Cruiser]] (1964-1977), [[w:Viking (automobile)|Viking]] (1929-1931)<br />Oldsmobile engines:<br />[[w:Oldsmobile straight-6 engine|Oldsmobile straight-6 engine]]<br />[[w:Oldsmobile straight-8 engine|Oldsmobile straight-8 engine]]<br />[[w:Oldsmobile V8 engine|Oldsmobile Rocket V8 engine]]<br />[[w:Oldsmobile V8 engine#Aluminum 215|Oldsmobile Rockette V8 engine]]<br />[[w:Oldsmobile Diesel engine|Oldsmobile Diesel V8]] |- |C (1985-2004 [South Line])||[[w:Lansing Car Assembly|Lansing Car Assembly - Chassis (South)]]||[[w:Lansing, Michigan|Lansing, Michigan]]||United States||[[w:Pontiac Grand Am|Pontiac Grand Am]] (1985-2004),<br> [[w:Oldsmobile Calais|Oldsmobile Calais]] (1985-1986),<br> [[w:Oldsmobile Alero|Oldsmobile Alero]] (1999-2004),<br> [[w:Chevrolet Alero|Chevrolet Alero]] (Export only: 1999-2001),<br> [[w:Buick Skylark#Seventh generation (1992–1998)|Buick Skylark]] (1992-1998)||1902||2004||"C" - South assembly line. Only started using a separate plant code from the North plant beginning with the 1985 N-body cars. Part of GM's Lansing Plant 1. Located around 1014 Townsend St., next to the former Oldsmobile headquarters at 920 Townsend St. Demolished in 2007. |- |B<br />(0 for EV1)||[[w:Lansing Craft Centre|Lansing Craft Centre]]||[[w:Lansing Township, Michigan|Lansing Township, Michigan]]||United States||[[w:Chevrolet SSR|Chevrolet SSR]] (2003–2006)||1987||2006||Located at 2801 West Saginaw Street, across the street from the Lansing Metal Center. Originally built by Ryan-Bohn Foundry and opened in 1920. Owned by Driggs Aircraft Company from 1927-1930. Owned by R.E. Olds from 1930-1940 but not used. Bought by GM's Oldsmobile Division in 1940. Became GM's Lansing Plant 2. Also known as Olds Forge. Built artillery shells during WWII. Oldsmobile used this plant as a forge (through 1983) and for making axles and differentials (through 1984). Became known as the Oldsmobile Differential Plant and Foundry. Converted into a full vehicle assembly plant including stamping, body shop and general assembly areas. First opened as a vehicle assembly plant known as the Reatta Craft Centre in 1988 though pilot production began in December 1986. After Buick Reatta production ended in 1991, plant was renamed Lansing Craft Centre. Used by the Genasys joint venture with [[w:American Specialty Cars|ASC]] to complete production of the Chevy Cavalier and Pontiac Sunfire convertibles. Cavalier and Sunfire convertible production ends during 1999. Cadillac Eldorado production moved here from Detroit-Hamtramck Assembly during 2000. Eldorado production ended April 22, 2002. Plant was then converted to truck production for the Chevy SSR. First saleable production SSR completed on July 29, 2003. Final SSR built March 17, 2006. Closed in 2006. Demolished in 2008-2009. Past models: [[w:Buick Reatta|Buick Reatta]] (1988–1991), [[w:Chevrolet Cavalier#Third generation (1995)|Chevrolet Cavalier convertible]] (1995–2000), [[w:Pontiac Sunfire|Pontiac Sunfire]] convertible (1995–2000), [[w:General Motors EV1|General Motors EV1]] (1997, 1999), [[w:Cadillac Eldorado#Twelfth generation (1992–2002)|Cadillac Eldorado]] (2000-2002) |- |||[[w:Lansing Engine Plant|Lansing Engine]]||[[w:Delta Township, Michigan|Delta Township, Michigan]]||United States||[[w:Oldsmobile Diesel engine|Oldsmobile Diesel V6]]<br />[[w:Quad 4 engine|Quad 4 engine]]<br />[[w:GM Ecotec engine|GM Ecotec engine]] (2002 only)||1981||2002||Located at 2901 S. Canal Road. Known as GM's Lansing Plant 5. Also known as Delta Engine. Built to produce experimental diesel engine; part of Ryder Logistics since 2005. |- |&nbsp;||[[w:Lansing Metal Center|Lansing Metal Center]]||[[w:Lansing Township, Michigan|Lansing Township, Michigan]]||United States|| Stamping and electroplating bumpers; general machining of crankshafts and connecting rods; and machining, welding, and stamping of other automobile parts||1952||2006|| Located at 2800 W. Saginaw Street, across the street from the Lansing Craft Centre. Known as GM's Lansing Plant 3. Also known as the Olds Jet plant. Originally built to manufacture turbine blades for Buick-built J65 axial flow jet engines. Metal fabricating plant. Electroplating operation ended in May 1987. Closed in March 2006. Demolished in 2008-2010. |- |K <br />(1953-1964 [[w:Chevrolet|Chevrolet]] and 1965-1988)<br /><br />5 (1929-1952 [[w:Chevrolet|Chevrolet]])<br /><br />M (1964 [[w:Pontiac (automobile)|Pontiac]])<br /><br />8 (1964 [[w:Buick|Buick]]) ||[[w:Leeds Assembly|Leeds Assembly]]||[[w:Kansas City, Missouri|Kansas City, Missouri]]||United States||[[w:Chevrolet Cavalier|Chevrolet Cavalier]] (1984-1987),<br> [[w:Oldsmobile Firenza|Oldsmobile Firenza]] (1982-1988),<br> [[w:Buick Skyhawk#Second generation (1982–1989)|Buick Skyhawk]] (1982-1988)<br>[[w:Pontiac Sunbird#Second generation (1982–1994)|Pontiac J2000]] (1982)||1929||1988||Located at 6817 Stadium Drive. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Leeds Assembly began making Pontiac and Buick passenger cars for 1964. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Leeds Assembly joined the GM Assembly Division in 1968. Retooled to build fwd J-cars for 1982. Closed April 15, 1988. <br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br />[[w:Buick Apollo|Buick Apollo]] (1974), [[w:Buick GS|Buick GS]] (1965-1968, 1970), [[w:Buick Regal|Buick Regal]] (1980-1981), [[w:Buick Skylark|Buick Skylark]] (1964-1970, 1975-76), [[w:Buick Special#1964–1967|Buick Special]] (1964-1967), [[w:Chevrolet 150|Chevrolet 150]] (1953-1957), [[w:Chevrolet 210|Chevrolet 210]] (1953-1957), [[w:Chevrolet AK Series|Chevrolet AK Series]], [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:Chevrolet C/K (first generation)|Chevrolet C/K]] (1960-1966), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1963), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1963), [[w:Chevrolet Corvair|Chevrolet Corvair]] (1960-1961), [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1964-1974, 1977), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet El Camino|Chevrolet El Camino]] (1964-1974, 1978-80), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1963), [[w:Chevrolet Malibu|Chevrolet Malibu]] (1978-1981), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1971-1981), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Chevrolet Nova|Chevrolet Chevy II/Nova]] (1962-63, 1974-1977),[[w:Chevrolet Suburban|Chevrolet Suburban]] (1952, 1956, 1959, 1961-1962), [[w:GMC Sprint|GMC Sprint]] (1971-1974), [[w:GMC Caballero|GMC Caballero]] (1978-1980), [[w:Pontiac GTO|Pontiac GTO]] (1964-1968), [[w:Pontiac LeMans|Pontiac LeMans]] (1964-1968), [[w:Pontiac Tempest|Pontiac Tempest]] (1964-1965) |- |K ('94-'05)<br /><br />E ('65-'91)<br /><br />L (Pre-1965 [[w:Oldsmobile|Oldsmobile]] & [[w:Pontiac (automobile)|Pontiac]]) <br /><br /> 3 (Pre-1964 [[w:Buick|Buick]]) ||[[w:Linden Assembly|Linden Assembly]]||[[w:Linden, New Jersey|Linden, New Jersey]]||United States||[[w:Chevrolet S-10 Blazer#Second generation (1995)|Chevrolet Blazer]] (1995-2005)<br />[[w:Chevrolet S-10 Blazer#Second generation (1995)|GMC Jimmy]] (1995-2005)<br />[[w:Chevrolet S-10#Second generation (1994)|Chevrolet S-10]] (1994-2004)<br /> [[w:Chevrolet S-10#Second generation (1994)|GMC Sonoma]] (1994-2004)||1937||2005||Located at 1016 W. Edgar Road. Linden Assembly was the 2nd GM multi-brand assembly plant (the 1st was Southgate, CA), assembling Buick, Oldsmobile, and Pontiac models. It was operated by GM's Linden Division through January 1942. During WWII, GM built 5,837 [[w:FM-1 Wildcat|FM-1 Wildcat]] and [[w:FM-2 Wildcat|FM-2 Wildcat]] fighter planes at Linden under license from Grumman as part of GM's Eastern Aircraft Division. After the war ended, in 1945, Linden & Southgate were both placed in a new division called the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. BOP Assembly Division became GM Assembly Division in 1965. In 1971, Linden Assembly became the first plant outside Cadillac's home plant in Detroit to assemble Cadillacs when it began to assemble C-body Cadillacs like the DeVille & Calais. In 1979, Linden became the sole source for all three of GM's E-body personal luxury coupes, the Oldsmobile Toronado, Buick Riviera, and Cadillac Eldorado. The closely related K-body Cadillac Seville was added in 1980. In the mid-1980s, the factory was retooled to produce the new L-body Chevy Beretta & Corsica, which began production in 1987. This was the first time Linden built a Chevrolet model. Linden was idled in September 1991 for conversion to truck and SUV production. It reopened in 1993 to produce the 1994 S-10 and Sonoma pickups, adding the Blazer and Jimmy SUVs for 1995. Closed April 2005. Last vehicle built was a white 2005 four-door Chevy Blazer on April 20, 2005. Demolished in 2008. Now Legacy Square, a complex of retail stores, and Legacy Commerce Center, an industrial space at the back of the property along Linden Ave.<br /> [[w:Chevrolet Corsica|Chevrolet Corsica]] (1987-1991), [[w:Chevrolet Beretta|Chevrolet Beretta]] (1987-1991), [[w:Buick Riviera#Sixth generation (1979–1985)|Buick Riviera]] (1979-1985), [[w:Oldsmobile Toronado#Third generation (1979–1985)|Oldsmobile Toronado]] (1979-1985), [[w:Cadillac Eldorado#Tenth generation (1979–1985)|Cadillac Eldorado]] (1979-1985), [[w:Cadillac Seville#Second generation (1980–1985)|Cadillac Seville]] (1980-85), [[w:Buick Century|Buick Century]] (1939, 1955-1957), [[w:Buick Electra|Buick Electra]] (1959-1963, 1971-1978), [[w:Buick Invicta|Buick Invicta]] (1959-1962), [[w:Buick LeSabre|Buick LeSabre]] (1959-1963), [[w:Buick Roadmaster|Buick Roadmaster]] (1948-1949, 1953-1957), [[w:Buick Special|Buick Special]] (1952-1957), [[w:Buick Super|Buick Super]] (1955-1957), [[w:Buick Wildcat|Buick Wildcat]] (1963), [[w:Cadillac Calais|Cadillac Calais]] (1971-1976), [[w:Cadillac DeVille|Cadillac DeVille]] (1971-1978), [[w:Oldsmobile 88|Oldsmobile 88]] (1949-1976), [[w:Oldsmobile 98|Oldsmobile 98]] (1941-1963, 1971-1978), [[w:Oldsmobile Cutlass|Oldsmobile Cutlass]] (1968-1970), [[w:Oldsmobile 442|Oldsmobile 442]] (1968-1970), [[w:Oldsmobile Jetstar I|Oldsmobile Jetstar I]] (1964-1965), [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1966), [[w:Pontiac Bonneville|Pontiac Bonneville]] (1958-1970, 1972-1973), [[w:Pontiac Catalina|Pontiac Catalina]] (1959-1970), [[w:Pontiac Chieftain|Pontiac Chieftain]] (1949, 1953, 1955, 1958), [[w:Pontiac Executive|Pontiac Executive]] (1967-1970), [[w:Pontiac Grand Prix|Pontiac Grand Prix]] (1962-1968), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1955-1958, 1962, 1965-1966), [[w:Pontiac 2+2|Pontiac 2+2]] (1964-1967), [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1960-61) |- |&nbsp;||[[w:Livonia Engine|Livonia Engine]]||[[w:Livonia, Michigan|Livonia, Michigan]]||United States||[[w:Cadillac High Technology engine|Cadillac High Technology engine]] (4.1/4.5/4.9L OHV V8)<br>[[w:GM Premium V engine|Premium V engine]] (4.6L Northstar V8, 4.0L Aurora V8, 3.5L Shortstar V6)||1971||2010|| Located at 12200 Middlebelt Road. Originally built as a parts supplier to Cadillac. Converted into an engine plant for the HT-series V8 that debuted for 1982. Now a multi-tenant commercial space including [[w:Penske Corporation|Penske Logistics]] and [[w:KUKA|KUKA]]. The [[w:KUKA|KUKA]] facility appears to be the one building the initial batch of [[w:BrightDrop Zevo 600|BrightDrop Zevo 600]] electric vans for GM prior to production moving to GM's [[w:CAMI Automotive|CAMI Automotive]] plant. |- ||7 (1979-2019)<br /><br /> U&nbsp;(1966-1978)||[[w:Lordstown Assembly|Lordstown Assembly]]||[[w:Warren, Ohio|Warren, Ohio]]||United States||[[w:Chevrolet Cruze#Second generation (J400)|Chevrolet Cruze (2016-2019)]]||1966||2019 |GM bought the property in 1955 and announced plans for the new Chevrolet plant in 1956 but construction didn't begin until 1964. Production began on April 28, 1966. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Lordstown Assembly joined the GM Assembly Division in 1971. <br /> Past models: [[w:Chevrolet Cruze#First generation (J300; 2008)|Chevrolet Cruze (2011-2015)/ Cruze Limited (2016)]], [[w:Chevrolet Cobalt|Chevrolet Cobalt]] (2005-2010)/[[w:Pontiac G5|Pontiac G5]] (2007-2009, Canada: 2007-2010), [[w:Chevrolet Cavalier|Chevrolet Cavalier]] (1982-2005)/[[w:Pontiac Sunbird#Second generation (1982–1994)|Pontiac J2000/2000/2000 Sunbird/Sunbird]] (1982-1994)/ [[w:Pontiac Sunfire|Pontiac Sunfire]] (1995-2004), [[w:Chevrolet Vega|Chevrolet Vega]] (1971–1977)/[[w:Pontiac Astre|Pontiac Astre]] (1975-1977), [[w:Chevrolet Monza|Chevrolet Monza]] (1978-1980)/[[w:Pontiac Sunbird#First generation (1976–1980)|Pontiac Sunbird]] (1978-1980)/[[w:Oldsmobile Starfire#Second generation (1975–1980)|Oldsmobile Starfire]] (1978-1980)/ [[w:Buick Skyhawk#First generation (1975–1980)|Buick Skyhawk]] (1978-1980), [[w:Chevrolet van#Third generation (1971-1996)|Chevrolet Van/Sportvan]] (1971-1992), [[w:Chevrolet van#Third generation (1971-1996)|GMC Vandura/ Rally Van]] (1971-1992), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1966-1970), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1966-1970), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1970), [[w:Chevrolet Impala|Chevrolet Impala]] (1966-1970), [[w:Pontiac Firebird#First generation (1967–1969)|Pontiac Firebird]] (1967-1969), [[w:Pontiac Pursuit|Pontiac Pursuit/G5 Pursuit]] (Canada: 2005-2006), [[w:Toyota Cavalier|Toyota Cavalier]] (1996-2000). Located at 2300 Hallock-Young Road. Main assembly plant is the East part of the complex on Hallock-Young Road. Stamping plant added in 1970. Paint shop added in 2004. Stamping plant and paint shop are part of the West part of the complex on Ellsworth-Bailey Road. <br /> Closed on March 6, 2019. Sold to [[w:Lordstown Motors|Lordstown Motors]] in 2019. Lordstown Motors sold the plant to [[w:Foxconn|Foxconn]] in 2022 and Foxconn will do contract assembly for Lordstown Motors and others. |- |1 (Lotus Omega &<br />Lotus Carlton)<br /><br />H (Lotus models)||[[w:Lotus Cars|Lotus Cars]]||[[w:RAF Hethel|RAF Hethel]], [[w: Hethel|Hethel]], [[w:Norfolk|Norfolk]], [[w:England|England]]||[[w:United Kingdom|United Kingdom]]|| [[w:Opel Lotus Omega|Opel Lotus Omega]] A / [[w:Vauxhall Lotus Carlton|Vauxhall Lotus Carlton]]<br /> 1990-1992, 950 units [[w:Lotus Esprit|Lotus Esprit]], [[w:Lotus Excel|Lotus Excel]], [[w:Lotus Elan#Elan (M100)|Lotus Elan]] ||1986||1993||GM owned Lotus from 1986-1993. GM sold Lotus in 1993 to A.C.B.N. Holdings S.A. of Luxembourg, a company controlled by Italian businessman Romano Artioli, who also owned Bugatti Automobili SpA. Artioli sold Lotus to Malaysian automaker [[w:Proton Holdings|Proton]] in 1996. |- |&nbsp;||Mansfield Metal Center||[[w:Ontario, Ohio|Ontario, Ohio]]||United States||Metal stamping||1955||2010||Located at 2525 W. 4th St. Mostly demolished. Redeveloped into Ontario Commerce Park. |- |&nbsp;||[[w:Massena Castings Plant|Massena Castings Plant]]||[[w:Rooseveltown, New York|Rooseveltown, New York]]||United States|| Aluminum engine blocks & cylinder heads for [[w:Chevrolet Turbo-Air 6 engine|Corvair engine]], Aluminum engine blocks for [[w:Chevrolet 2300 engine|Vega engine]], & aluminum cylinder heads & blocks for other engines.<br /> Also clutch housings, transmission cases, pistons, aluminum intake manifolds||1959||2009||Located at 56 Chevrolet Rd, Rooseveltown, NY 13662 <br /> Originally a Chevrolet facility. In 1978, became part of GM's Central Foundry Division. In 1991, Central Foundry became part of GM Powertrain. <br />Production ended April 23, 2009. Demolished in 2011. |- |M||Mexico City Assembly||[[w:Mexico City|Mexico City]]||[[w:Mexico|Mexico]]||[[w:Chevrolet|Chevrolet]] trucks & vans||1937||1995<ref>{{cite news|author=Thomas H. Klier, James Rubenstein|title=Mexico’s Growing Role in the Auto Industry Under NAFTA: Who Makes What and What Goes Where|url=https://www.chicagofed.org/publications/economic-perspectives/2017/6.|publisher=Federal Reserve Bank of Chicago, Economic Perspectives, Vol. 41, No. 6|at=see table 11 and footnotes right under table 11|date=September 2017}}</ref>||[[w:Chevrolet|Chevrolet]] including: Caprice, Chevelle, Corvair, Impala, Malibu, Nova, Malibu Rallye (Nova-based), trucks<br />[[w:Pontiac (automobile)|Pontiac]], [[w:Oldsmobile|Oldsmobile]], [[w:Buick|Buick]], [[w:Cadillac|Cadillac]],<br /> [[w:Opel Olympia|Opel Olympia]],<br> [[w:Opel Rekord|Opel Rekord/MX-1/<br>Olimpico/Fiera]] <br /> Located at 843 Avenida Ejército Nacional (formerly Calzada de Los Morales) although the old headquarters building was demolished in 2018. The current headquarters is in the GM Tower at the other end of the property on Blvd. Miguel de Cervantes Saavedra. Started with trucks then added passenger cars in the early 1940s. Switched from assembly to manufacturing in 1965. Production ended in 1995 and most of the property was sold but GM de Mexico still has its corporate headquarters at this location. Most of the location is now Plaza Antara, an open-air shopping center. |- |2||[[w:Moraine Assembly|Moraine Assembly]]||[[w:Moraine, Ohio|Moraine, Ohio]]||United States||[[w:Chevrolet S-10#First generation (1982)|Chevrolet S-10]] (1982-1992)<br /> [[w:Chevrolet S-10 Blazer#First generation (1983–1994)|Chevrolet S-10 Blazer]] 4-door (1991-1994)<br /> [[w:Chevrolet S-10 Blazer#Second generation (1995–2005)|Chevrolet Blazer]] (1995-2001)<br />[[w:GMC S-15#First generation (1982)|GMC S-15]] (1982-1990)<br />[[w:GMC Sonoma#First generation (1982)|GMC Sonoma]] (1991-1992)<br /> [[w:GMC S-15 Jimmy#First generation (1983–1994)|GMC S-15 Jimmy/Jimmy]] 4-door (1991-1994)<br /> [[w:GMC S-15 Jimmy#Second generation (1995–2005)|GMC Jimmy]] (1995-2001)<br /><br /> [[w:Chevrolet TrailBlazer#First generation (KC; 2001)|Chevrolet TrailBlazer]] (2002-2009)<br /> [[w:GMC Envoy#Second generation (2002–2009)|GMC Envoy]] (2002-2009)<br /> [[w:Isuzu Ascender|Isuzu Ascender]] (2003-2008)<br />[[w:Oldsmobile Bravada|Oldsmobile Bravada]] (1991-1994, 1996-2004)<br />[[w:Buick Rainier|Buick Rainier]] (2004-2007) <br />[[w:Saab 9-7X|Saab 9-7X]] (2005-2009)<br /><br />[[w:Grumman LLV|Grumman LLV]] chassis (1987-1994)||1951<br><br>1981 (Vehicle production)||2008|| Located at 2601 West Stroop Road. Began in 1951 as part of the [[w:Frigidaire|Frigidaire]] Division of General Motors Corporation producing household appliances. [[w:Frigidaire|Frigidaire]] production ended in 1979 when GM sold [[w:Frigidaire|Frigidaire]] to [[w:White Consolidated Industries|White Consolidated Industries]] but kept the Moraine plant and converted it to build vehicles. Vehicle production began in 1981. Was part of GM's Truck & Bus Group. Closed on December 23, 2008. Sold to [[w:Fuyao Group#Fuyao Glass America Inc.|Fuyao Group]] in 2014; began production of automotive glass for GM and other automakers in 2016. |- |&nbsp;||Moraine Engine||[[w:Moraine, Ohio|Moraine, Ohio]]||United States||[[w:Detroit Diesel V8 engine|Detroit Diesel V8 engine]] 6.2L/6.5L||1981||2000||Located at 4100 Springboro Pike. Also began as a [[w:Frigidaire|Frigidaire]] plant. Replaced by the nearby DMAX Ltd. engine plant (originally a joint venture with Isuzu) which builds the replacement engine ([[w:Duramax V8 engine|Duramax V8 engine]]). Demolished by 2003. Production of the 6.5-liter diesel V8 moved to a new AM General plant in Franklin, OH known as General Engine Products. AM General makes the engine for its own use and for GM service parts, & 3rd party customers. |- |&nbsp;||Muncie Transmission||[[w:Muncie, Indiana|Muncie, Indiana]]||United States||Transmissions including: [[w:Getrag 282 transmission|Getrag 282/NVG T550]], Getrag 284, Muncie M17, Muncie M20/M21/M22, Muncie M62/M64, [[w:Muncie SM420 transmission|Muncie SM420 transmission]], [[w:Muncie SM465 transmission|Muncie SM465 transmission]], [[w:New Venture Gear 3500 transmission|NV3500/NV3550]], [[w:New Venture Gear 4500 transmission|NV4500]]<br />Valves, Steering gears<br />Forge||1919||2006||Located at 1200 W. Eighth St. Originally founded as Warner Gear Company in 1902. Bought by GM in 1919. Became Muncie Products Division. Closed in 1932. Reopened by Chevrolet in 1935 (Chevrolet Muncie). Moved to Detroit Diesel Allison Division in 1984 & then to Hydramatic Division in 1986. Became part of [[w:New Venture Gear|New Venture Gear]] joint venture with Chrysler in 1990. GM owned 36% while [[w:Chrysler|Chrysler]] owned 64%. GM sold its stake to [[w:DaimlerChrysler|DaimlerChrysler]] in 2002 but took back the Muncie plant. Became Manual Transmissions of Muncie. The plant closed in 2006. Demolished in 2008-09. |- |&nbsp;||GM Near East||[[w:Alexandria|Alexandria]]|| [[w:Egypt|Egypt]]||[[w:Chevrolet|Chevrolet]] cars and trucks <br />[[w:Buick|Buick]]||1936||1958||Began CKD assembly of trucks in 1936 followed by cars in 1938. In 1951, GM Near East became the Alexandria Branch of GM Middle East. Plant was liquidated in 1958. |- |&nbsp;||[[w:General Motors New Zealand|General Motors New Zealand]]||[[w:Petone|Petone]]||[[w:New Zealand|New Zealand]]||[[w:Chevrolet|Chevrolet]] including [[w:Chevrolet Deluxe|Chevrolet Deluxe]], [[w:Chevrolet 210|Chevrolet 210]], [[w:Chevrolet Bel Air|Chevrolet Bel Air]], [[w:Chevrolet Impala|Chevrolet Impala]], [[w:Chevrolet Thriftmaster|Chevrolet Thriftmaster]]<br />[[w:Pontiac (automobile)|Pontiac]] including [[w:Pontiac Laurentian|Pontiac Laurentian]], [[w:Pontiac Parisienne#New Zealand|Pontiac Parisienne]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Opel Kadett#Kadett I (1936–1940)|Opel Kadett]]<br />[[w:Vauxhall Motors|Vauxhall]] including [[w:Vauxhall Cresta|Vauxhall Cresta]] (E, PA, PC), [[w:Vauxhall Wyvern|Vauxhall Wyvern]], [[w:Vauxhall Velox|Vauxhall Velox]], [[w:Vauxhall Viva|Vauxhall Viva]], [[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Bedford Vehicles|Bedford]] including [[w:Bedford CF|Bedford CF]], [[w:Bedford TK|Bedford TK]]<br />[[w:Holden|Holden]] including [[w:Holden FE|Holden FE]], [[w:Holden FB|Holden FB]], [[w:Holden EJ|Holden EJ]], [[w:Holden EH|Holden EH]], [[w:Holden HD|Holden HD]]||1926||1984||Also made [[w:Frigidaire|Frigidaire]] refrigerators, freezers, washers, and dryers (Frigidaire was owned by GM from 1919 to 1979). <br /> Axle tube assemblies, oil filters, and spark plugs. |- |Z1-Z9 [https://forums.justcommodores.com.au/threads/commodore-vin-decoder-vb-to-zb.279978/]||[[w:General Motors New Zealand|General Motors New Zealand]]||[[w:Trentham, New Zealand|Trentham]]||[[w:New Zealand|New Zealand]]||[[w:Vauxhall Motors|Vauxhall]] including [[w:Vauxhall Chevette|Vauxhall Chevette]], [[w:Vauxhall Cresta#Cresta PC|Vauxhall Cresta]], [[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Holden|Holden]] including [[w:Holden HQ|Holden HQ]], [[w:Statesman (automobile)#HQ|Holden Statesman HQ]], [[w:Holden HJ|Holden HJ]], [[w:Statesman (automobile)#HJ|Holden Statesman HJ]], [[w:Holden HX|Holden HX]], [[w:Statesman (automobile)#HX|Holden Statesman HX]], [[w:Holden HZ|Holden HZ]], [[w:Statesman (automobile)#HZ|Holden Statesman HZ]], [[w:Statesman (automobile)#WB|Holden Statesman WB]],<br /> [[w:Holden Commodore (VB)|Holden Commodore (VB)]],<br /> [[w:Holden Commodore (VC)|Holden Commodore (VC)]],<br /> [[w:Holden Commodore (VH)|Holden Commodore (VH)]],<br /> [[w:Holden Commodore (VK)|Holden Commodore (VK)]],<br /> [[w:Holden Commodore (VL)|Holden Commodore (VL)]],<br /> [[w:Holden Commodore (VN)|Holden Commodore (VN)]], [[w:Holden Royale|Holden Commodore Royale (VH/VK/VL)]] <br />[[w:Holden Torana|Holden Torana]]<br /> [[w:Isuzu Faster#Second generation (1980–1988)|Holden Rodeo]]<br />[[w:Isuzu Gemini#In other markets|Isuzu Gemini/Holden Gemini]]<br />[[w:Holden Camira|Holden Camira]]<br />[[w:Holden Barina#First generation (MB, ML; 1985–1988)|Holden Barina]]<br />[[w:Suzuki Cultus#First generation (1983)|Suzuki Swift]]<br />[[w:Daihatsu Charade#First generation (G10, G20; 1977–1983)|Daihatsu Charade (under contract for Daihatsu)]]<br />[[w:Datsun Truck#Nissan D21|Nissan Navara pickup (under contract for Nissan)]]||1967||1990|| |- |&nbsp;||GM Nordiska AB||Södra Hammarbyhamnen, [[w:Stockholm|Stockholm]]||[[w:Sweden|Sweden]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Opel|Opel]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]] trucks||1928||1957|| Converted into a warehouse in 1957. |- |&nbsp;||Northway Motor Plant||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Northway engines||1905||Burned down 1987||Located at 4584 Maybury Grand Ave. (Jeffries Expressway Service Drive) and W. Hancock St. Around 4646 Lawton St. (rear side) is the remnants of a water tower and railroad spur. Northway Motor and Manufacturing Company was acquired by GM in 1909, becoming Northway Motor and Manufacturing Division. Northway had made engines for both GM brands (in particular [[w:Oakland Motor Car Company|Oakland]], [[w:Oldsmobile|Oldsmobile]], [[w:Sheridan (automobile)|Sheridan]], [[w:Scripps-Booth|Scripps-Booth]], [[w:Samson Tractor|Samson Tractor]], and [[w:GMC (automobile)|GMC]]) and other automakers. Became part of GM Intercompany Parts Group. In 1920, Northway moved to a new plant on Holbrook Ave. in Detroit. This address was subsequently been used by [[w:Frigidaire|Frigidaire]] in the 1920's and 1930's and then by Refrigeration Service Inc. in the 1950's. At some point, the building was sold to Motor City Wiping Cloth Co. but they abandoned the property in 1983, leaving behind massive bales of rags and cloths. The building burned down in a horrific fire in 1987 after homeless people in the building were burning fires there to keep warm. The fire killed three firefighters and injured ten others. The fire even spread to the nearby Continental Paper warehouse. |- |&nbsp;||Northway Motor Plant/General Motors Truck Co. Plant No. 7/ <br>Chevrolet Gear and Axle Div.||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Northway engines, Axles, parts for past model Chevrolets||1920||1994||Located at 1806 Holbrook Ave. Northway Motor and Manufacturing Company was acquired by GM in 1909, becoming Northway Motor and Manufacturing Division. Northway had made engines for both GM brands (in particular [[w:Oakland Motor Car Company|Oakland]], [[w:Oldsmobile|Oldsmobile]], [[w:Sheridan (automobile)|Sheridan]], [[w:Scripps-Booth|Scripps-Booth]], [[w:Samson Tractor|Samson Tractor]], and [[w:GMC (automobile)|GMC]]) and other automakers. Became part of GM Central Products Division. In 1920, Northway moved here from their original plant on Maybury Grand Ave. and primarily supplied engines to GMC. In 1925, became part of Yellow Truck & Coach Manufacturing Company as part of the merger of Yellow Cab Manufacturing Company and General Motors Truck Corp., the manufacturer of GMC trucks. In 1926, Northway Motor Division was liquidated and its Detroit plant was sold to Chevrolet on March 31 to become the Chevrolet Gear and Axle Div. Part of the engine tooling machinery was transferred to the Yellow Sleeve-Valve Engine Works at East Moline, IL. Some Northway engines were still used by some GMC trucks (K-series) through 1930. Was part of the Detroit complex sold to [[w:American Axle|American Axle]] in 1994. Now part of American Axle's Advanced Technology Development Center. |- |N<br />(1953-1964 [[w:Chevrolet|Chevrolet]]) and 1965-1987<br /><br />9 <br />(1928-1952 [[w:Chevrolet|Chevrolet]])||[[w:Norwood Assembly|Norwood Assembly]]||[[w:Norwood, Ohio|Norwood, Ohio]]||United States||[[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1961)<br />[[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1961)<br />[[w:Chevrolet Camaro|Chevrolet Camaro]] (1967-1987)<br />[[w:Chevrolet Caprice|Chevrolet Caprice]] (1966)<br />[[w:Chevrolet El Camino#First generation (1959–1960)|Chevrolet El Camino]] (1959-1960)<br />[[w:Chevrolet Impala|Chevrolet Impala]]<br /> (1958-1961, 1965-1966)<br />[[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957)<br />[[w:Chevrolet Nova|Chevrolet Chevy II/Nova]]<br> (1962-1966, 1972)<br />[[w:Pontiac Firebird|Pontiac Firebird]] (1969-1987)<br />[[w:Buick Apollo|Buick Apollo]] (1973)||1923||1987||Located at 5025 Carthage Ave. First vehicle produced was a Chevrolet Superior on August 13, 1923. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Norwood Assembly joined the GM Assembly Division in 1971. Closed August 26, 1987. Last vehicle produced was a Chevy Camaro IROC-Z. Demolished. Now Linden Pointe on the Lateral, a mixed use retail and office space. <br />[[w:Chevrolet Superior|Chevrolet Superior]]<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Stylemaster|Chevrolet Stylemaster]]<br />[[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br />[[w:Chevrolet 150|Chevrolet 150]] (1953-1957)<br />[[w:Chevrolet 210|Chevrolet 210]] (1953-1957)<br />[[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958)<br />[[w:Chevrolet AK Series|Chevrolet AK Series]]<br />[[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955)<br />[[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959)<br />[[w:Chevrolet C/K (first generation)|Chevrolet C/K]] (1960-1966)<br />[[w:Chevrolet Suburban|Chevrolet Suburban]] (1952) |- |Z||[[w:NUMMI|NUMMI]]||[[w:Fremont, California|Fremont, California]]||United States||[[w:Chevrolet Chevy II / Nova#Fifth generation (1985–1988)|Chevrolet Nova]] (1985-1988)<br />[[w:Geo Prizm|Geo Prizm]] (1989-1997)<br />[[w:Chevrolet Prizm|Chevrolet Prizm]] (1998-2002)<br />[[w:Pontiac Vibe|Pontiac Vibe]] (2003-2010)<br />[[w:Toyota Corolla (E80)|Toyota Corolla FX]] (1987-1988)<br />[[w:Toyota Corolla|Toyota Corolla]] (1989-2010) (E90/E100/E110/E130/E140)<br />[[w:Toyota Hilux#Fifth generation (N80, N90, N100, N110; 1988)|Toyota Pickup]] (1992-1995)<br />[[w:Toyota Tacoma|Toyota Tacoma]] (1995-2010)<br />[[w:Toyota Voltz|Toyota Voltz]] (Japan: '02-'04)||1984||2009||Located at 45500 Fremont Blvd.<br /> Operated from 1963-1982 as a GM factory.<br />From 1984-2010, operated as [[w:NUMMI|New United Motor Manufacturing Inc. (NUMMI)]], which was a 50/50 joint venture between GM and [[w:Toyota|Toyota]] and assembled both GM and Toyota vehicles. First vehicle produced was a yellow Chevrolet Nova in December 1984. First Toyota produced was a Corolla FX16 3-d hatchback in September 1986. This was followed by the Corolla FX 3-d hatchback in February 1987. Nova and Corolla FX production ended in September 1988. That same month, NUMMI began producing the Toyota Corolla 4-door sedan. Geo Prizm production began in November 1988. In August 1991, Toyota pickup production began with the Regular Cab 4x2. The 4x4 followed in February 1992 ant the Xtracab followed in March 1993. Tacoma pickup production began in January 1995, replacing the previous unnamed Toyota pickup model. Prizm production ended in December 2001. In January 2002, Pontiac Vibe production began. In June 2002, production began of the Toyota Voltz, a rhd version of the Pontiac Vibe built for export to Japan. In September 2004, the 2nd generation Tacoma pickup began production. Pontiac Vibe production ended on August 17, 2009, ending GM production at Fremont. Tacoma pickup production ended March 26, 2010. The last vehicle built at NUMMI, a red Corolla sedan, was built April 1, 2010. NUMMI produced 7.7 million vehicles. <br />Sold to [[w:Tesla Motors|Tesla, Inc.]] in May 2010.<ref>{{cite news|author=Sam Abuelsamid|title=Tesla to buy old resources from GM, Toyota for NUMMI plant|url=http://www.autoblog.com/2010/08/22/tesla-to-buy-old-resources-from-gm-toyota/|access-date=20 August 2015|publisher=Autoblog.com|date=August 22, 2010}}</ref> Tesla only bought 210 of the total 370 acres owned by NUMMI. Tesla also bought $15 million worth of equipment and parts from the former NUMMI plant. Tesla took possession of the plant in October 2010. Tesla began production at Fremont in June 2012 with the Model S. |- |O <br />(1953-1963 [[w:Chevrolet|Chevrolet]])<br /><br />6 <br />(1928-1952 [[w:Chevrolet|Chevrolet]])<br /><br />C ([[w:GMC (automobile)|GMC]])||[[w:Oakland Assembly|Oakland Assembly]] (Chevrolet)||[[w:Oakland, California|Oakland, California]]||United States||[[w:Chevrolet Series 490|Chevrolet Series 490]]<br />[[w:Chevrolet Superior|Chevrolet Superior]]<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Stylemaster|Chevrolet Stylemaster]]<br />[[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br />[[w:Chevrolet 150|Chevrolet 150]] (1953-1957)<br />[[w:Chevrolet 210|Chevrolet 210]] (1953-1957)<br />[[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1963)<br />[[w:Chevrolet Corvair|Chevrolet Corvair]] (1960-1963)<br />[[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958)<br />[[w:Chevrolet Impala|Chevrolet Impala]] (1958-1963)<br />[[w:Chevrolet Nova|Chevrolet Chevy II/Nova]] (1962-1963)<br />[[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955)<br />[[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959)<br />[[w:Chevrolet C/K (first generation)|Chevrolet C/K]] (1960-1963)<br />[[w:GMC New Design|GMC New Design]] (1952-1954)<br />[[w:GMC Blue Chip|GMC Blue Chip]] (1955-1959)<br />[[w:Chevrolet C/K (first generation)|GMC C/K]] (1960-1963)<br />[[w:Chevrolet Suburban|Chevrolet Suburban]] (1952-1953, 1955, 1957, 1959, 1963)<br />[[w:GMC Suburban|GMC Suburban]]||1917||1963||Located at 73rd Ave. & Foothill Blvd. Built by Chevrolet before it became part of GM. Began building GMC trucks in December 1937 for the 1938 model year. Replaced by Fremont Assembly plant. Demolished. Site became Eastmont Mall which is now [[w:Eastmont Town Center|Eastmont Town Center]]. |- |&nbsp;||[[w:Oakland Motor Car Company|Oakland Motor Car Co.]]||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States||Oakland automobiles <br /> Pontiac 1926-1927||1909||1931||Located at 196 Oakland Ave. (now Cesar E Chavez Ave.). Also bordered by Baldwin Ave. and W. Howard St. GM bought Oakland Motor Car Co. in 1909. Oakland introduced sister brand Pontiac in 1926. Pontiac replaced Oakland for 1932. Early Pontiacs were built here before production moved to the new factory stretching from Baldwin Ave. east to Joslyn Ave. a little farther north. This was Pontiac's first headquarters until 1970 when Pontiac headquarters moved north to the Pontiac Assembly complex on Joslyn Ave. and <br> E. Montcalm St. Some of the buildings are still standing. |- |&nbsp;||[[w:es:General Motors OBB|GM-OBB]]||[[w:Quito, Ecuador|Quito]]||[[w:Ecuador|Ecuador]]||[[w:Isuzu D-Max#Second generation (RT; 2011)|Chevrolet D-Max 2011]]||1980 (1st GM product)||2024||OBB (Ómnibus BB Transportes) was founded in 1975. GM bought 22% of OBB in 1981 & became majority shareholder in 1988. GM announced in April 2024 that GM-OBB will shut down at the end of August 2024.<ref>{{Cite web|url=https://gmauthority.com/blog/2024/04/gm-shutting-down-manufacturing-operations-in-colombia-and-ecuador/|title = GM Shutting Down Manufacturing Operations In Colombia And Ecuador|author=Deivis Centeno|publisher=GMAuthority.com|date = April 29, 2024}}</ref><ref>{{Cite web|url=https://www.americaeconomia.com/en/business-industries/general-motors-announces-end-car-manufacturing-operations-colombia-and-ecuador/|title = General Motors announces the end of car manufacturing operations in Colombia and Ecuador|publisher=AmericaEconomia.com|date = April 26, 2024}}</ref> Past models: [[w:Chevrolet Aveo (T200)|Chevrolet Aveo]]<br />[[w:Chevrolet K5 Blazer|Chevrolet K5 Blazer]]<br />[[w:Opel Corsa#Corsa B (S93; 1993)|Chevrolet Corsa]], [[w:Opel Corsa#Corsa C (X01; 2000)|Chevrolet Corsa Evolution]]<br />[[w:Suzuki Cultus Crescent|Chevrolet Esteem]], [[w:Suzuki Cultus#Second generation (1988)|Chevrolet Forsa]]<br />[[w:Isuzu Gemini#Second generation (1985)|Chevrolet Gemini]]<br />[[w:Isuzu Faster#TF|Chevrolet LUV]], [[w:Isuzu D-Max#First generation (RA, RC; 2002)|Chevrolet LUV D-Max]]<br />[[w:Isuzu MU#First generation (UCS55/UCS69GW; 1989–1998)|Chevrolet Rodeo]], [[w:Isuzu Trooper#First generation (1981–1991)|Chevrolet Trooper]]<br />[[w:Chevrolet Sail#Second generation (2010)|Chevrolet Sail (Gen 2)]], [[w:Chevrolet Sail#Third generation (2014)|Chevrolet Sail (Gen 3)]]<br />[[w:Chevrolet C/K (third generation)|Chevrolet Silverado]]<br />[[w:Chevrolet Tracker (Americas)|Chevrolet Vitara]], [[w:Chevrolet Tracker (Americas)#Second generation|Chevrolet Grand Vitara]], [[w:Suzuki Vitara#Third generation (JT; 2005)|Chevrolet Grand Vitara SZ]] |- |6||[[w:Oklahoma City Assembly|Oklahoma City Assembly]]||[[w:Oklahoma City, Oklahoma|Oklahoma City, Oklahoma]]||United States||[[w:Chevrolet Trailblazer (SUV)#EXT|Chevrolet TrailBlazer EXT]] (2002-2006)<br />[[w:GMC Envoy XL#Second generation (2002–2009)|GMC Envoy XL]] (2002-2006)<br />[[w:GMC Envoy#Envoy XUV|GMC Envoy XUV]] (2004-2005)<br />[[w:Isuzu Ascender|Isuzu Ascender extended length]] (2003-2006)||1979||2006||Located at 7447 SE 74th Street. <br /> Initially produced front wheel drive [[w:GM X platform (FWD)|X platform]] vehicles ([[w:Chevrolet Citation|Chevrolet Citation]] (1980-1983) & [[w:Pontiac Phoenix#Second generation (1980–1984)|Pontiac Phoenix]] (1980-1982)) followed by front wheel drive [[w:General Motors A platform (FWD)|A platform]] vehicles ([[w:Chevrolet Celebrity|Chevrolet Celebrity]] (1982-1989), [[w:Pontiac 6000|Pontiac 6000]] (1988-1991), [[w:Oldsmobile Cutlass Ciera|Oldsmobile Cutlass Ciera]] (1989-1996), [[w:Buick Century#Fifth generation (1982–1996)|Buick Century]] (1982-1996)) as well as [[w:Chevrolet Malibu#Fifth generation (1997)|Chevrolet Malibu]] (1997-2001) & [[w:Oldsmobile Cutlass#Sixth generation (midsize) 1997–1999|Oldsmobile Cutlass]] (1997-1999). Converted to build body-on-frame SUVs for 2002 model year. Damaged by a tornado on May 8, 2003, but the company repaired the damage and returned the plant to operation just 53 days later. Idled February 20, 2006. Last vehicle produced was a white 2006 Chevrolet TrailBlazer EXT. Plant was taken over by Oklahoma City in 2008 and leased to neighbor Tinker Air Force Base. Now known as Building 9001 Tinker Aerospace Complex. Used for maintaining jet engines and for software engineering. |- |2||[[w:Opel|Opel]] Werk Bochum||[[w:Bochum|Bochum]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]]||[[w:Germany|Germany]]||[[w:Opel Olympia#Name revival: Opel Olympia (1967–1970)|Opel Olympia]] A<br />[[w:Opel Ascona|Opel Ascona]] A, B<br />[[w:Opel Kadett|Opel Kadett]] A, B, C, D, & E<br />[[w:Opel Astra|Opel Astra]] F, G, & H<br />[[w:Opel Astra#H|Opel Astra]] H Classic (5-door, Caravan)<br />[[w:Opel GT#GT (1968–1973)|Opel GT]]<br />[[w:Opel Manta|Opel Manta]] A, B<br />[[w:Opel Zafira#Zafira Tourer C (2011–2019)|Opel/Vauxhall Zafira Tourer]] C<br />[[w:Opel Zafira#Zafira B (2005–2014)|Opel/Vauxhall Zafira]] B/Zafira Family<br />[[w:Opel Zafira#Zafira A (1999–2006)|Opel/Vauxhall Zafira]] A<br />[[w:Vauxhall Astra|Vauxhall Astra]]<br />Engines<br />Transmissions<br />Axles||1962||2014|| Plant I was the vehicle assembly plant. First car off the line was a Kadett A. Plant II was the engine, transmission, & axle plant. Engine production ended in 2004. Axle production ended in 2011. Transmission production ended Oct. 7, 2013. Vehicle production ended December 5, 2014. |- |&nbsp;||[[w:Opel|Opel]] [[w:Opelwerk Brandenburg|Werk Brandenburg]]||[[w:Brandenburg an der Havel|Brandenburg an der Havel]], [[w:Brandenburg|Brandenburg]]||[[w:Germany|Germany]]||[[w:Opel Blitz|Opel Blitz]]<br />||1935||1944|| Bombed and heavily damaged by the Allies on Aug. 6, 1944. Factory was dismantled and shipped to the Soviet Union after the war ended as reparations. |- |6||[[w:Opel Eisenach|Opel Eisenach GmbH]]||[[w:Eisenach|Eisenach]], [[w:Thuringia|Thuringia]]||[[w:Germany|Germany]]||[[w:Opel Corsa#Corsa E (X15; 2014)|Opel/Vauxhall Corsa]] E (3-door)<br />[[w:Opel Corsa#Corsa D (S07; 2006)|Opel/Vauxhall Corsa]] D (3-door)<br />[[w:Opel Corsa#Corsa C (X01; 2000)|Opel/Vauxhall Corsa]] C (3-door)<br />[[w:Opel Corsa#Corsa B (S93; 1993)|Opel/Vauxhall Corsa]] B <br /> [[w:Opel Adam|Opel/Vauxhall Adam]]<br />[[w:Opel Astra#F|Opel Astra F]] (1992-1995)<br />[[w:Opel Astra#G|Opel Astra G]] (1998-2003)||1992||2017|| [[w:Adam Opel AG|Opel plant]]. Began production with Astra F in 1992. Began Corsa production in 1993 with Corsa B. Added production of the Adam in 2013. Sold to [[w:PSA Group|PSA Group]] in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. |- |&nbsp;||[[w:Adam Opel AG|Opel]] Werk Kaiserslautern||[[w:Kaiserslautern|Kaiserslautern]], [[w:Rhineland-Palatinate|Rhineland-Palatinate]]||[[w:Germany|Germany]]||Components<br />Engines:<br /> Four-cylinder turbo diesel engines:<br /> [[w:Fiat JTD engine#2.0 Multijet II|2.0 CDTI Family B turbodiesel 4-cyl.]]<br />[[w:Fiat JTD engine#1.9|1.9 CDTI turbodiesel 4-cyl.]]<br /> [[w:GM Ecotec Diesel (1997)|2.0/2.2 Ecotec direct injection turbodiesel]] Four-cylinder gasoline engines:<br /> [[w:GM Ecotec engine|GM Ecotec engine]] 2.2<br />[[w:GM Ecotec engine#2.0|GM Ecotec engine]] 2.0 supercharged (LSJ) <br />[[w:GM Family II engine|GM Family II engine]] 1.6, 1.8, 2.0 <br /> |1966||2017||[[w:Adam Opel AG|Opel plant]]. Sold to [[w:PSA Group|PSA Group]] in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. |- |1<br /><br />R (Catera)<br /><br />5 (Pre-1976)||[[w:Adam Opel AG|Opel]] Werk Rüsselsheim||[[w:Rüsselsheim|Rüsselsheim]], [[w:Hesse|Hesse]]||[[w:Germany|Germany]]||[[w:Opel Insignia|Opel/Vauxhall Insignia]] (sedan, hatchback, Sports Tourer, Country Tourer)<br />[[w:Buick Regal#Fifth generation (2008)|Buick Regal]] (2011MY from March 1, 2010-March 25, 2011)<br />[[w:Buick Regal#Sixth generation (2018)|Buick Regal]] (2018-2020)<br />[[w:Holden Insignia#First generation (G09; 2008)|Holden Insignia VXR (GA)]] (2015-2017)<br />[[w:Holden Commodore ZB|Holden Commodore (ZB)]] (2018-2020)<br />[[w:Opel Astra#J|Opel/Vauxhall Astra J]] (5-door)<br />[[w:Opel Zafira|Opel/Vauxhall Zafira Tourer C]]<br />[[w:Opel Vectra|Opel/Vauxhall Vectra]]<br />[[w:Opel Vectra#Vectra B (1995–2002)|Holden Vectra (JR)]]<br />[[w:Opel Vectra#Vectra C (2002–2010)|Holden Vectra (ZC)]]<br />[[w:Opel Signum|Opel/Vauxhall Signum]]<br />[[w:Opel Omega|Opel/Vauxhall Omega]]<br />[[w:Cadillac Catera|Cadillac Catera]] (1997-2001)<br />[[w:Opel Senator|Opel/Vauxhall Senator & Vauxhall Royale]]<br />[[w:Opel Calibra|Opel/Vauxhall/Holden Calibra (YE)]]<br />[[w:Opel Monza|Opel Monza/Vauxhall Royale Coupe]]<br />[[w:Opel Commodore|Opel Commodore/Vauxhall Viceroy]]<br />[[w:Opel Kapitan|Opel Kapitan]]<br />[[w:Opel Admiral|Opel Admiral]]<br />[[w:Opel Diplomat|Opel Diplomat]]<br />[[w:Opel Kadett#Kadett I (1936–1940)|Opel Kadett]]<br />[[w:Opel Olympia|Opel Olympia]]<br />[[w:Opel Blitz|Opel Blitz]]<br />axles<br />components<br />[[w:GM F40 transmission|GM F40 transmission]]<br />Frigidaire refrigerators (1937-c.1940 & 1946-1959)||1899 (1st production car built)<br><br> 1929 (part of GM)||2017 (left GM)<br><br>2020 (production for GM ended)|| [[w:Adam Opel AG|Opel plant]]. GM bought 80% of Opel in March 1929 and bought the rest in 1931, making Opel a full GM subsidiary. Russelsheim previously make engines. Sold to [[w:PSA Group|PSA Group]] in 2017. Rüsselsheim continued to supply the Buick Regal & the Holden Commodore ZB to GM through 2020. Part of [[w:Stellantis|Stellantis]] since 2021. |- |S||[[w:Opel Szentgotthárd|Opel Szentgotthárd]]||[[w:Szentgotthárd|Szentgotthárd]]||[[w:Hungary|Hungary]]||[[w:Opel Astra|Opel Astra]] F 1992-1997, 80,835 units<br />[[w:Opel Vectra#Vectra B (1995–2002)|Opel Vectra]] B1 and B2 1998-1999, 4,404 units<br />Opel Engines including:<br /> [[w:GM Family 1 engine| Family 1 engine]] DOHC versions 1.4, 1.6, 1.8<br />[[w:GM small gasoline engine|GM Small Gasoline Engine]]<br />[[w:GM Medium Gasoline Engine|GM Medium Gasoline Engine]]<br />[[w:GM Medium Diesel engine|GM Medium Diesel engine]]<br />[[w:VTi transmission|"VTi" CVT transmission]]<br /> [[w:Allison Transmission|Allison]] 3000, 4000, & Torqmatic Series automatic transmissions||1992||2017 (left GM)<br><br>2019 (production for GM ended)|| [[w:Adam Opel AG|Opel plant]]. Originally a joint venture between GM & Hungarian truck and engine maker Raba. GM bought out Raba & became 100% owner in 1995. Production of Allison Transmissions began in 2000. Sold to [[w:PSA Group|PSA Group]] in 2017. Szentgotthárd continued to supply the [[w:GM Medium Diesel engine|1.6L LH7 turbodiesel I4]] to GM through 2019. Part of [[w:Stellantis|Stellantis]] since 2021. |- |&nbsp;||[[w:Opel Wien|Opel Wien GmbH]]||[[w:Aspern|Aspern]]||[[w:Austria|Austria]]||[[w:Family 0 engine|Family 0]] engines (1.0, 1.2, 1.4, 1.4 Turbo)<br />Transmissions (Easytronic automated manual, F15/F17 five-speed manual and M20/M32 six-speed manual)||1982||2017|| [[w:Adam Opel AG|Opel plant]]. Sold to [[w:PSA Group|PSA Group]] in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. Closed by Stellantis in 2024. <br /> Past engines: [[w:GM Family 1 engine|GM Family 1 engine]] SOHC versions. |- |&nbsp;||Osaka Assembly (Built on land leased from [[w:Sojitz|Nihon Menka]])<ref>{{cite book|url=https://books.google.com/books?id=TY4l3qWIIh4C&q=general+motors+assembly+plant+location+osaka+japan&pg=PA70|title=American Multinationals and Japan: The Political Economy of Japanese Capital Controls, 1899-1980|author=Mark Mason|date=14 October 1992|publisher=Harvard Univ Asia Center|isbn=9780674026308|via=Google Books}}</ref>||[[w:Osaka|Osaka]]||[[w:Japan|Japan]]||Chevrolet, Pontiac, Oldsmobile, Buick from CKD kits||1927||1941||Factory was seized by [[w:Imperial Japanese|Imperial Japanese]] Government, see also [[w:General Motors Japan|General Motors Japan]]<ref>{{cite web|url=http://www.autonews.com/article/20080914/ANA03/809150388/gm-had-early-start-in-japan-but-was-hobbled-by-nationalism|title=GM early history in Japan|author=Hans Greimel|publisher=Autonews.com|date=September 14, 2008}}</ref><ref>{{cite web|url=https://history.gmheritagecenter.com/wiki/index.php/File:1926-6-1.jpg|title=Image of Osaka facility}}</ref> |- |&nbsp;||[[w:Oshawa Truck Assembly|Oshawa Battery Plant]]||[[w:Oshawa, Ontario|Oshawa, Ontario]]||[[w:Canada|Canada]] ||Batteries||19?||1990's?||Was part of the overall Oshawa Assembly complex (Autoplex) on Park Road South. Referred to by Delco Remy as Plant 41. This operation was closed. |- |9 (1917-Mid 1923 Chevrolet)||Oshawa North||[[w:Oshawa, Ontario|Oshawa, Ontario]]||[[w:Canada|Canada]]||<br />||1907||1996||The original Oshawa (North) plant opened in 1907 as a McLaughlin Motor Car Co. plant. It produced McLaughlin-Buick cars by fitting Buick engines and chassis to McLaughlin bodies. It also built Chevrolets for Chevrolet Motor Co. beginning in 1915 as the Chevrolet Motor Car Co. of Canada. McLaughlin Motor Car Co. and the Chevrolet Motor Car Co. of Canada were bought out by GM in 1918 becoming GM of Canada. GM of Canada continued to make Chevrolets and McLaughlin-Buicks (which became simply Buick after WWII) and also assembled [[w:Oakland Motor Car Company|Oakland]] 1921-1930, [[w:Oldsmobile|Oldsmobile]] 1920-1942, 1946-1969, [[w:Marquette (automobile)#Buick brand|Marquette]] 1929-1930, [[w:Buick|Buick]] 1908-1942, 1951-1971, [[w:LaSalle (automobile)|LaSalle]] 1927-1930, 1932-1935, [[w:Cadillac|Cadillac]] 1923-1936. [[w:Pontiac (automobile)|Pontiac]] production in Oshawa began shortly after US production in 1926. From the 1950's into the 1980's, Canadian market full-size Pontiacs were built on Chevrolet chassis and were powered by Chevrolet engines and had model names different from US-market Pontiacs (Pathfinder, Strato Chief, Laurentian, and Parisienne). Car production shifted to the current Oshawa complex Car Assembly plant (South plant; also known as Autoplex beginning in the 1980's) which opened in 1953. [[w:Chevrolet|Chevrolet]] trucks were made beginning in 1919 and [[w:GMC (automobile)|GMC]] trucks were made beginning in 1923 before truck production shifted to the Oshawa Truck plant located next to the South car plant in 1965. Oshawa also produced 65 [[w:Samson Tractor#Trucks and a car|Samson trucks]] from 1920-1921. Oshawa also produced military vehicles and equipment during both WWI and WWII. Also, Maple Leaf trucks. Operations were gradually moved from the older North plant to the newer South plant. The North plant, by then known as the GM North Fabrication plant making metal and plastic parts, was sold to Peregrine, Inc. in 1996. It was then sold to ACSYS Technologies Inc. in 2001. Both companies continued to operate as an auto parts manufacturer supplying GM. ACSYS closed the plant in 2004. The North plant ended all operations in 2005 and the last of it was demolished by 2006. Much of the site of the North plant at 155 Division Street (Ritson Road North is on the other side) is now a Costco. |- |1||[[w:Oshawa Truck Assembly|Oshawa Truck Assembly]]||[[w:Oshawa, Ontario|Oshawa, Ontario]]||[[w:Canada|Canada]]||[[w:Chevrolet Silverado|Chevrolet Silverado]] (1999-2009)<br />[[w:GMC Sierra|GMC Sierra]] (1988-2009)||1965||2009||Part of the overall Oshawa Assembly complex (Autoplex) on Park Road South. Truck plant was at 1100 Park Road South at the southern end of the Autoplex. Production ended May 14, 2009. Over 10 million vehicles were produced. Now the GM Canadian Technical Centre's (CTC) McLaughlin Advanced Technology Track. <br />Past models: [[w:Chevrolet C/K|Chevrolet C/K]] (-1986, 1988-1998), [[w:GMC C/K|GMC C/K]] (-1986) |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> Main complex||[[w:Warren, Ohio|Warren, Ohio]]||United States||Automotive wiring<br>Electric Motors||1932||1999||Packard Electric was acquired by GM in 1932. Located between Griswold St NE on the north side, Dana St NE on the south side, Paige Ave NE on the east side, and N. Park Ave on the west side. Some of the earliest Packard cars were built here before Packard Automobile split from Packard Electric in 1902. Plant 4, which opened in 1938, was originally used by GM's Sunlight Electrical Division, which made electric motors. GM had acquired the former Sunlight Electrical Manufacturing Co. in March 1933. On July 1, 1943, Sunlight Electrical Division merged into GM's Packard Electric Division. Sunlight motors were still made in Plant 4. Became part of GM's Delphi Automotive Systems subsidiary in 1995 as Delphi Packard Electric Systems. Spun off with Delphi in 1999. Closed in 2006. |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> Plant# 41||[[w:Warren, Ohio|Warren, Ohio]]||United States||Automotive wiring||1947||1998||Packard Electric was acquired by GM in 1932. Located at 1554 Thomas Rd SE. Became part of GM's Delphi Automotive Systems subsidiary in 1995 as Delphi Packard Electric Systems. Closed in 1998. Sold in 2004 to Wetzel, Inc. Sold to Berk Enterprise, Inc. in 2009. |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> North River Road complex||[[w:Bazetta Township, Ohio|Bazetta Township, Ohio]] and [[w:Howland Township, Trumbull County, Ohio|Howland Township, Ohio]]||United States||Automotive wiring||1955||1999||Packard Electric was acquired by GM in 1932. Located on North River Road and Larchmont Avenue NE. The plant is in Bazetta Township and extends across the border into Howland Township. The majority is in Bazetta Township. Became part of GM's Delphi Automotive Systems subsidiary in 1995 as Delphi Packard Electric Systems. Spun off with Delphi in 1999. Parts of the site have been closed and demolished and/or sold but Delphi successor Aptiv still operates part of the site at 1265 North River Road. |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> Brookhaven Plant||[[w:Brookhaven, Mississippi|Brookhaven, Mississippi]]||United States||Automotive wiring||1977||1999||Packard Electric was acquired by GM in 1932. Located at 925 Industrial Park Road NE. Became part of GM's Delphi Automotive Systems subsidiary in 1995 as Delphi Packard Electric Systems. Spun off with Delphi in 1999. Delphi successor Aptiv still operates the Brookhaven plant. |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> Clinton Plant||[[w:Clinton, Mississippi|Clinton, Mississippi]]||United States||Automotive wiring||1973||1999||Packard Electric was acquired by GM in 1932. Located at 1001 Industrial Park Dr. Became part of GM's Delphi Automotive Systems subsidiary in 1995 as Delphi Packard Electric Systems. Spun off with Delphi in 1999. One plant closed in 2006 and the second closed in 2009. |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> Mexico||[[w:Ciudad Juárez|Ciudad Juárez]], [[w:Chihuahua (state)|Chihuahua]]||[[w:Mexico|Mexico]]||Automotive wiring||1978||1999||Originally established as Conductores y Componentes Eléctricos by the Packard Electric division of GM. Became part of GM's Delphi Automotive Systems subsidiary in 1995. Spun off with Delphi in 1999. Delphi successor Aptiv still operates the Mexican plants. |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> Ireland Ltd.||[[w:Tallaght|Tallaght]]||[[w:Republic of Ireland|Ireland]]||Wire harnesses||1975||1996||Located on Airton Road. Production and export of wiring harnesses from this plant allowed GM to import fully built-up vehicles into Ireland before Ireland fully removed its restrictions on importing fully built-up vehicles. Became part of GM's Delphi Automotive Systems subsidiary in 1995. Closed in 1996. |- |&nbsp;||GM Peninsular SA||[[w:Barcelona|Barcelona]]||[[w:Spain|Spain]]||[[w:Chevrolet|Chevrolet]] trucks||1932||1936|| Production ended due to Spanish Civil War. Liquidated around 1939. |- |&nbsp;||GM del Peru||[[w:Lima|Lima]]||[[w:Peru|Peru]]||[[w:Chevrolet Bel Air|Chevrolet Bel Air]]<br />[[w:Chevrolet Camaro (first generation)|Chevrolet Camaro]]<br />[[w:Chevrolet Caprice|Chevrolet Caprice]]<br />[[w:Chevrolet Chevelle|Chevrolet Chevelle]]/[[w:Chevrolet Malibu|Chevrolet Malibu]]<br />[[w:Chevrolet Impala|Chevrolet Impala]]<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]||1945||1970|| |- |&nbsp;||[[w:Pittsburgh Metal|Pittsburgh Metal]]||[[W:West Mifflin, Pennsylvania|West Mifflin, Pennsylvania]]||United States||Metal stamping||1949||2008||Located at 1451 Lebanon School Road. Originally part of [[w:Fisher Body|Fisher Body]] division. Demolished in 2011. |- |&nbsp;||GM Polsce Sp. Zo.o.||[[w:Warsaw|Warsaw]]||[[w:Poland|Poland]]||[[w:Chevrolet|Chevrolet]] cars and trucks||1928||1930's||Was at 103 Wolska St. Closed during the Depression. |- |P (1939-1988)||[[w:Pontiac Assembly|Pontiac Assembly]]/Pontiac Fiero Assembly||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States||In ex-Fisher Body plant (Pontiac Fiero Assembly):<br /> [[w:Pontiac Fiero|Pontiac Fiero]] (1984-1988)<br /><br />In Main plant (Pontiac Assembly) after reopening:<br /> [[w:GM G platform (RWD)|RWD G-bodies]]:<br /> [[w:Chevrolet Monte Carlo#Fourth generation (1981–1988)|Chevrolet Monte Carlo]] (1987-1988),<br /> [[w:Oldsmobile Cutlass Supreme#Fourth generation (1978–1988)|Oldsmobile Cutlass Supreme]] (1985-1987),<br /> [[w:Oldsmobile 442|Oldsmobile 442]] (1986-1987),<br />[[w:Oldsmobile Cutlass Supreme#Fourth generation (1978–1988)|Oldsmobile Cutlass Supreme Classic]] (1988),<br /> [[w:Buick Regal#Second generation (1978)|Buick Regal]] (1985-1987)<br /><br />Also:<br /> Pontiac engines:<br /> [[w:Pontiac straight-8 engine|Pontiac straight-8 engine]]<br />[[w:Pontiac V8 engine|Pontiac V8 engine]]<br />[[w:Pontiac Trophy 4 engine|Pontiac Trophy 4 engine]]<br />[[w:Iron Duke engine|Pontiac Iron Duke/Tech IV I4 engine]]||1927||1987 (Pontiac Assembly)/1988 (Pontiac Fiero Assembly)||This was Pontiac's home plant. Property runs from Walton Blvd. on the north to E. Montcalm St. on the south with Joslyn Ave. or for certain stretches, Highwood Blvd., on the east side and Price St. or further south, Baldwin Ave. and then N. Saginaw St., on the west side. Also known as Pontiac North to distinguish from GMC's multiple plants in Pontiac, MI. Within 90 days of ground being broken, vehicles were already being produced in Pontiac's new home plant in 1927. Final Assembly was Plant 8 of Pontiac's Assembly complex in Pontiac, Michigan. On March 14, 1962, Pontiac Assembly built the 75 millionth GM vehicle built in the US, a white 1962 Bonneville convertible. Idled in 1982 but reopened in January 1985 with bodies supplied by Flint Body Assembly. Closed in December 1987. Last vehicle built was a Buick Regal Grand National. Demolished in 1997. GM still has the Pontiac Redistribution Center on the northeast portion of this property at 1251 Joslyn Road at the intersection with E. Columbia Ave. The Pontiac Metal Center is another still active part of this property. GM still uses the eastern part of the property bordered by Joslyn Ave. on the east, E. Beverly Ave. on the north, E. Montcalm St. on the south, and N. Glenwood Ave. on the west. This area includes GM Performance and Racing Center at 900 N. Glenwood Ave. and the Propulsion Systems Pontiac Engineering Center at 800 N. Glenwood Ave. Pontiac's divisional HQ moved here in 1970 from the previous location at the former Oakland HQ on 196 Oakland Ave. (now Cesar E Chavez Ave.). Pontiac's divisional HQ at One Pontiac Plaza was about where the Propulsion Systems Engineering Center is now. [[w:Fisher Body|Fisher Body]] operated a plant on the site (Plant 17) from 1935-1982. This plant was connected to the final assembly plant by an enclosed bridge that ran over N. Saginaw St., that was used to transport the bodies from the Fisher Body plant, where bodies up to the firewall were built, to the Pontiac final assembly plant where the body was mated to the chassis and the front end, powertrain, & interior were installed and the car was completed. This plant, located at 900 Baldwin Ave., was converted to build the [[w:Pontiac Fiero|Pontiac Fiero]], which it built from 1983-1988. Last Fiero built August 16, 1988. GM used it as a warehouse until 2009 ("Pontiac Warehouse Operations"). Prototyping work was also done there. Most of the Fiero plant was demolished in 2013 (from Kennett Rd. until just before the plant sign which is just past St. Louis Ave.). There used to be an overpass going over Baldwin Ave. to the parking lot on the other side of Baldwin but this was taken down after Fiero production ended. Pontiac engines were made in Plant 9 and Plant 18. Another engine plant was built in 1981 in the northern part of the property. It was originally called Plant 55, later renamed Plant 33. It was next to Plant 51, later renamed Plant 25, which did chassis parts and machining and later, engine machining. Engine production ended in 1993. Plant 9 was demolished in 1997 & Plant 18 was demolished in 1998. Plants 25 & 33 were demolished sometime between 2008 & 2013. Some parts of the complex have been sold to U-Pull And Save Auto Parts, Dani’s Trucking, GFL Environmental, & Bedrock Express. <br />[[w:Pontiac Six|Pontiac Six]] (1927-1932, 1935-1940), Pontiac Series 302 V8 (1932), Pontiac Economy Eight (1933-1934), Pontiac Improved Eight (1935), Pontiac Deluxe Eight (1936-1940), [[w:Pontiac 2+2|Pontiac 2+2]] (1964-1967), [[w:Pontiac Bonneville|Pontiac Bonneville (B-body)]] (1958-80), [[w:Pontiac Bonneville#Seventh generation (1982–1986)|Pontiac Bonneville (G-body)]] (1982), [[w:Pontiac Can Am|Pontiac Can Am]] (1977) [[w:Pontiac Catalina|Pontiac Catalina]] (1959-1980), [[w:Pontiac Chieftain|Pontiac Chieftain]] (1949-1958), [[w:Pontiac Custom S|Pontiac Custom S]] (1969), [[w:Pontiac Executive|Pontiac Executive]] (1967-70), [[w:Pontiac Grand Am#1973–1975|Pontiac Grand Am (1973-75)]], [[w:Pontiac Grand Am#1978–1980|Pontiac Grand Am (1978-80)]], [[w:Pontiac Grand Prix|Pontiac Grand Prix (B-body)]] (1962-1968), [[w:Pontiac Grand Prix#Third generation (1969–1972)|Pontiac Grand Prix (G-body)]] (1969-1972), [[w:Pontiac Grand Prix|Pontiac Grand Prix (A-/G-body)]] (1973-1982), [[w:Pontiac Grand Safari|Pontiac Grand Safari]] (1971-1978), [[w:Pontiac Grand Ville|Pontiac Grand Ville]] (1971-75), [[w:Pontiac GTO|Pontiac GTO]] (1964-1973), [[w:Pontiac LeMans|Pontiac LeMans]] (1962-1981), [[w:Pontiac Safari|Pontiac Safari]] (1955-1957), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1954-66), [[w:Pontiac Streamliner|Pontiac Streamliner]] (1941-51), [[w:Pontiac Tempest|Pontiac Tempest]] (1961-1970), [[w:Pontiac LeMans#1970|Pontiac T-37]] (1970-1971), [[w:Pontiac Torpedo|Pontiac Torpedo]] (1940-1948), [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1960-1961) |- |V (1972-1990)<br /><br /> P (Pre-1972)||Pontiac Central Assembly||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States|||[[w:Chevrolet AK Series|GMC C-Series/E-Series]]<br />[[w:GMC New Design|GMC New Design]] (1947-1951, 1952-1954)<br />[[w:GMC Blue Chip|GMC Blue Chip]] (1955-1959)<br /> [[w:Chevrolet C/K|GMC C/K]] (1960-1985)<br />[[w:Chevrolet C/K|Chevrolet C/K]] (1967-1985)<br /> [[w:GMC Suburban|GMC Suburban]] (1937-1966)<br />[[w:GMC Motorhome|GMC Motorhome/TransMode]] (1978)<br /> Buses ([[w:GM "old-look" transit bus|Yellow Coach/GM "old-look" transit bus]] (1940-1969), [[w:GM PD-4103|GM PD-4103]], [[w:PD-4501 Scenicruiser|PD-4501 Scenicruiser]], [[w:GM New Look bus|GM New Look bus]] (1960-1977), [[w:GM Buffalo bus|GM Buffalo bus]] (1966-1980), [[w:Rapid Transit Series|Rapid Transit Series (RTS)]] (1978-1987))<br />Medium Duty Trucks & Heavy Duty Trucks including:<br />[[w:Chevrolet C/K (second generation)#Medium-duty trucks|Chevrolet C-Series medium-duty trucks]] (1967-1972)<br />[[w:Chevrolet/GMC B series#GMC (1966–1970)|GMC E-Series medium-duty trucks]] (E4500/E5500/E6500) (1967-1968) [https://web.archive.org/web/20140109015322/https://www.gmheritagecenter.com/docs/gm-heritage-archive/historical-brochures/GMC/100_YR_GMC_HISTORY_MAR09.pdf] (page 30)<br />[[w:Chevrolet C/K (second generation)#Medium-duty trucks|GMC C-Series medium-duty trucks]] (1969-1972)<br />[[w:Chevrolet C/K (third generation)#Medium-duty trucks (1973–1989)|Chevrolet/GMC C-Series medium-duty trucks]] (1985-1990)<br />[[w:Chevrolet Kodiak#First generation (1981–1989)|Chevrolet Kodiak]] (1985-1990)<br />[[w:Chevrolet Kodiak#First generation (1981–1989)|GMC Top Kick]] (1985-1990)<br />[[w:Chevrolet/GMC B series|Chevrolet B-series]] (-1991)<br />[[w:Chevrolet/GMC B series|GMC B-series]] (-1991)<br />[[w:GMC Brigadier#Background|Chevrolet/GMC H/J series]] (1966-1977)<br />[[w:Chevrolet Bruin|Chevrolet Bruin]] (1978-1980)<br />[[w:GMC Brigadier|GMC Brigadier]] (1978-1987)<br />[[w:WhiteGMC Brigadier|WhiteGMC Brigadier]] (1988-1989)<br />[[w:GMC General#Background|Chevrolet/GMC C/M series]] (1966-1976)<br />[[w:Chevrolet Bison|Chevrolet Bison]] (1977-1980)<br />[[w:GMC General|GMC General]] (1977-1987)<br />[[w:GMC Astro#Background|GMC F/D series "Crackerbox"]] (1959-1968)<br />[[w:Chevrolet Titan|Chevrolet Titan]] (1970-1980)<br />[[w:GMC Astro|GMC Astro]] (1969-1987)<br />Engines ([[w:GMC straight-6 engine|GMC straight-6 engine]] 1947-1962,<br /> [[w:GMC V6 engine|GMC V6 (1960-1973)/V12 (1960-1965) engine]],<br> [[w:GMC V8 engine#GMC engines|GMC 60° V8]] (1966-1972))||1928||1990||Located at 660 South Boulevard East. Known as GMC Truck & Coach Division Plant 2 when built. Production of trucks began in January 1928. In 1925, General Motors Truck Corp., the parent of the GMC brand, merged with Yellow Cab Manufacturing Company (including its Yellow Coach Mfg. Co. bus-making subsidiary) to form Yellow Truck & Coach Manufacturing Company, in which GM owned a majority stake of 57%. The Northway Motor Division of Detroit was transferred to General Motors Truck Corp. as part of that merger but was liquidated in 1926. On September 30, 1943, GM acquired the remainder of Yellow Truck & Coach Manufacturing Co. and on October 1, 1943 the GMC Truck & Coach Division of General Motors Corp. was formed and Yellow Truck & Coach Manufacturing Co. was dissolved. When limited production of civilian buses resumed in March 1944, they were badged as GM Coach and the Yellow name was retired. Headquarters of Yellow Truck & Coach Manufacturing Co. and later the GMC Truck & Coach Division. Headquarters building in front of Plant 2 was completed in March 1928. Administration and engineering buildings were part of the complex. Built 409,012 [[w:GMC CCKW 2½-ton 6×6 truck|CCKW 6x6 trucks]], AFKWX 6x6 cab-over trucks, [[w:DUKW|DUKW "Ducks"]], & other types of trucks during WWII. Also produced 2,249 buses & 30 T18E2 Boarhound armored cars during WWII. The small-block, Group 1 GMC inline-6s were moved from Plant 4 of Pontiac West to Building 29 at Pontiac Central in November 1947. In December 1947, engine manufacturing and machine shops moved from Plants 1 and 4 of Pontiac West to Building 29 at Pontiac Central. The medium- and big-block, Group 2 & 3 GMC inline-6s were moved to Building 29 at Pontiac Central in February 1948. In August 1977, the GMC MotorHome was moved from Plant 3 of Pontiac West to Building 29 at Pontiac Central. The GMC MotorHome was discontinued after 1978. [https://www.gmccolonial.com/gmc-motorhome-history] Transit bus production ended in spring 1987 when GM sold the product line to Greyhound Corporation, which continued RTS production at its [[w:Transportation Manufacturing Corporation|TMC]] plant in Roswell, New Mexico. Converted in 1994 into a Truck Product Engineering Center (Pontiac Centerpoint Campus) by GM using only the steel frame of the large main building while everything else was demolished. The Truck Product Engineering Center closed in 2009 and the site is now the Centerpoint Business Campus, which is occupied by many businesses including Fanuc Robotics and i.M. Branded. |- |E (1988-2009)<br /><br />V (1972-1985)||[[w:Pontiac East Assembly|Pontiac East Assembly]]||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States||Medium Duty Trucks:<br /> [[w:Chevrolet C/K (third generation)#Medium-duty trucks (1973–1989)|Chevrolet/GMC C-Series medium-duty trucks]] (1973-85), [[w:Chevrolet Kodiak#First generation (1981–1989)|Chevrolet Kodiak]] (1981-1985), [[w:Chevrolet Kodiak#First generation (1981–1989)|GMC Top Kick]] (1981-85)<br /><br /> [[w:Chevrolet C/K (fourth generation)|Chevrolet C/K (GMT400)]] (1988-1998)<br /> [[w:Chevrolet C/K (fourth generation)|GMC Sierra (GMT400)]] (1988-1998)<br /> [[w:Chevrolet Silverado#First-generation Silverado / second-generation Sierra (GMT800; 1999)|Chevrolet Silverado (GMT800)]] (1999-2006)<br /> [[w:Chevrolet Silverado#First-generation Silverado / second-generation Sierra (GMT800; 1999)|Chevrolet Silverado Classic (GMT800)]] (2007)<br /> [[w:Chevrolet Silverado#First-generation Silverado / second-generation Sierra (GMT800; 1999)|GMC Sierra (GMT800)]] (1999-2006)<br /> [[w:Chevrolet Silverado#First-generation Silverado / second-generation Sierra (GMT800; 1999)|GMC Sierra Classic (GMT800)]] (2007)<br /> [[w:Chevrolet Silverado#Second-generation Silverado / third-generation Sierra (GMT900; 2007)|Chevrolet Silverado (GMT900)]] (2007-2009)<br /> [[w:Chevrolet Silverado#Second-generation Silverado / third-generation Sierra (GMT900; 2007)|GMC Sierra (GMT900)]] (2007-2009) ||1972||2009||Located at 2100 South Opdyke Road. Known as GMC Truck & Coach Division Plant 6 when built, also known as Pontiac Assembly Center. Pontiac East is directly to the east of Pontiac Central. Pontiac East began by building medium-duty trucks, which were moved from Pontiac Central. In 1985, medium-duty trucks were moved back to Pontiac Central, combining with production of heavy-duty trucks and buses. GMT400 full-size pickup production began in December 1986 for the 1988 model year. Closed in September 2009. Demolished in 2011-2012. Portions of the site are now occupied by Challenge Manufacturing Co. and Williams International. |- |0 (1978-1994)<br /><br />V (1972-1977)<br /><br /> P (Pre-1972)||[[w:Pontiac West Assembly|Pontiac West Assembly]]||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States||Trucks, Buses,<br />Engines: ([[w:Buick straight-6 engine|Buick 257/331 straight-6 engine]] (1931-1932), [[w:GMC straight-6 engine|GMC straight-6 engine]] 1933-1948), <br /> [[w:GMC Motorhome|GMC Motorhome/TransMode]] (1973-1977)<br /> [[w:Chevrolet van#First generation (1964–1966)|Chevrolet Van/GMC Handi-Van]] (1964-1966)<br />[[w:Chevrolet van#Second generation (1967–1970)|Chevrolet Van/GMC Handi-Van]] (1967-1970)<br />[[w:Chevrolet van#Third generation (1971–1996)|Chevrolet Van/GMC Vandura]] (1978-1980)<br />[[w:Chevrolet S-10#First generation (1982)|Chevrolet S-10]]<br /> (1982-1984, 1991-1993)<br />[[w:GMC S-15|GMC S-15]] (1982-1984)<br />[[w:GMC Sonoma|GMC Sonoma]] (1991-1993)<br />[[w:Chevrolet S-10 Blazer#First generation (1983–1994)|Chevrolet S-10 Blazer]]<br /> (1983-1994 2-d, 1994 4-d)<br />[[w:GMC S-15 Jimmy|GMC S-15 Jimmy]]<br /> (1983-1994 2-d, 1994 4-d)<br />[[w:GMC Typhoon|GMC Typhoon]] (1992-1993)<br />[[w:Oldsmobile Bravada#First generation (1991–1994)|Oldsmobile Bravada]] (1994) ||1906||1994||Complex includes GMC Truck & Coach Division Plants 1, 3, 4, and 5. Plant 1 was originally the plant of Rapid Motor Vehicle Company, one of the 2 main ancestors of the modern GMC Division (the other being Reliance Motor Car Company). Plant 1 was located at 25 Rapid Street and opened in 1906, before Rapid was taken over by GM in 1908-1909. Plant 1 started making Buick 257 & 331 inline-6's in 1931 after Buick stopped making inline-6s after 1930 and switched its entire lineup to straight-8s. The tooling was moved to Plant 1 from the Buick complex in Flint. Buick had been supplying inline-6s to GMC since 1925. In 1933, GMC started making inline-6s of its own design in Plant 1. The medium- and big-block, Group 2 & 3 GMC inline-6s were moved to Building 29 at Pontiac Central in February 1948. Plant 1 was demolished around 1981. Plant 3 opened in 1940 and was located at South Boulevard West and Franklin Road. Plant 3 was used for sheet metal work and material storage at first. Plant 3 later built the [[w:GMC Motorhome|GMC Motorhome]]. In August 1977, the GMC MotorHome was moved from Plant 3 of Pontiac West to Building 29 at Pontiac Central for its final model year of 1978. Plant 3 was demolished around 2005. Plant 4 was located on South Saginaw Street (now Woodward Ave.) Engine production began in Plant 4 in October 1938. The [[w:GMC straight-6 engine|GMC straight-6 engine]] was built there through 1947/1948. Small-block, Group 1 GMC inline-6 engines were made in Plant 4 from October 1938. The small-block, Group 1 GMC inline-6s were moved to Building 29 at Pontiac Central in November 1947. In December 1947, engine manufacturing and machine shops moved from Plants 1 and 4 to Building 29 at Pontiac Central. Plant 4 was also used for material storage. Plant 4 also built the [[w:Chevrolet van|1964-1970 Chevrolet & GMC full-size vans]]. Plant 4 was demolished around 2008. Plant 5 was located on Franklin Road, to the north of Plant 3. Plant 5 was demolished around 2005. After Pontiac Central opened in 1928, Pontiac West focused on machining and component manufacturing rather than vehicle assembly.[https://www.hagerty.com/media/automotive-history/a-gmc-motor-homecoming-50-years-on/] (Paragraph 4) There would be sporadic vehicle production at Pontiac West in the 1960's and 1970's (vans, motorhomes). In the 1980's, vehicle production increased as Pontiac West became one of GM's plants building compact pickups and SUVs. Production ended in 1994. Entire property sold to M1 Concourse in 2014. |- |&nbsp;||Pontiac Foundry||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States||[[w:Casting|Iron castings]] of engine parts. ||1927||1987||Was part of GM's Central Foundry Division. Was Plant 6 of Pontiac's Assembly complex in Pontiac, Michigan. Demolished in 1995. A U.S. Postal Service distribution center now occupies the approximate area where the foundry used to be. |- |&nbsp;||[[w:Regina Plant|Regina Plant]]||[[w:Regina, Saskatchewan|Regina, Saskatchewan]]||[[w:Canada|Canada]] |[[w:Chevrolet|Chevrolet]] cars & trucks, Maple Leaf trucks, [[w:Pontiac (automobile)|Pontiac]], [[w:Oldsmobile|Oldsmobile]], [[w:Buick|Buick]] |1928||1941||Factory office building is located at 1102 8th Avenue while the factory building is behind the office building stretching down Winnipeg Street down to 6th Ave. Production began on Dec. 11, 1928. Production halted in August 1930, restarted in March 1931, then halted again a few months later in 1931. Production restarted in December 1937. In 1941, taken over by the [[w:Government of Canada|Government of Canada]] to produce munitions for World War II as Regina Industries Limited. Auto production never resumed and the property was used by the Canadian Department of National Defense until the mid-1960s. Sold to the Saskatchewan provincial govt. in 1967 and then the Regina city govt. in 1987. Was used by both public- and private-sector tenants. Damaged by a fire on May 3, 2017. In 2020, the City of Regina decommissioned the building and all the tenants were required to move out. Buildings are still standing and have been used by a variety of businesses and organizations. You can still see "GMC" carved in stone above the front entrance to the office building. Office building is designated a Heritage Inventory Property by city of Regina. A related building is down the block at 1260 8th Avenue at the corner of Toronto Street. After the factory closed in 1941, GM still used this building for its regional administrative and parts distribution operations until it moved in 1967. |- |&nbsp;||[[w:GMC (marque)#History|Reliance Motor Truck Co.]]||[[w:Owosso, Michigan|Owosso]], [[w:Michigan|Michigan]]||United States||Reliance trucks (1909-1912)<br> GMC trucks (heavy duty models) (1912-1913)||1909||1913||Plant was located on Michigan Ave. In late 1908, GM bought Reliance Motor Car Co. and reorganized it as Reliance Motor Truck Co. Reliance truck production moved here from Detroit in 1909. In February 1912, the GMC brand replaced the Reliance brand as well as the Rapid brand. In 1913, production was consolidated at the Rapid Street plant of the former Rapid Motor Vehicle Co. in Pontiac, Michigan and the Owosso plant was sold. Plant was later used by American Malleables and later by Mid-West Abrasive Co., a maker of sandpaper. Plant was later extended to S. Washington St. |- |&nbsp;||Saab [[w:Gothenburg|Gothenburg]] Transmission||[[w:Gothenburg|Gothenburg]]||[[w:Sweden|Sweden]]||Pre-GM era:<br />[[w:Saab two-stroke|Saab two-stroke]]<br />GM era:<br />Saab 99/900 manual transmission<br />[[w:F35 transmission|F35 transmission]]<br />[[w:GM F40 transmission|GM F40 transmission]] ||1989||2009||Saab plant. Opened in 1953. Engine production ended in 1968. GM bought 50% of [[w:Saab Automobile|Saab Automobile]] in 1989 & the other 50% in 2000. Transmission production ended when the 1st gen. 9-5 ended production. GM sold [[w:Saab Automobile|Saab Automobile]] to [[w:Spyker Cars|Spyker Cars]] in February, 2010. |- |&nbsp;||Saab [[w:Sodertalje|Sodertalje]] Engine||[[w:Sodertalje|Sodertalje]]||[[w:Sweden|Sweden]]||Pre-GM era:<br />[[w:Saab B engine|Saab B engine]]<br />GM era:<br />[[w:Saab H engine|Saab H engine]] ||1989||2007||Saab plant. Opened in 1972. GM bought 50% of [[w:Saab Automobile|Saab Automobile]] in 1989 & the other 50% in 2000. Engine plant sold to [[w:Scania AB|Scania AB]] in 2007. GM sold [[w:Saab Automobile|Saab Automobile]] to [[w:Spyker Cars|Spyker Cars]] in February, 2010. |- |1,2,3,4,8||Saab [[w:Trollhättan Assembly|Trollhättan Assembly]]||[[w:Trollhättan|Trollhättan]]||[[w:Sweden|Sweden]]||Pre-GM era:<br />[[w:Saab 92|Saab 92]]<br />[[w:Saab 93|Saab 93]]<br />[[w:Saab 95|Saab 95]]<br />[[w:Saab 96|Saab 96]]<br />[[w:Saab 99|Saab 99]]<br />GM era:<br />[[w:Saab 900|Saab 900]]<br />[[w:Saab 9000|Saab 9000]]<br />[[w:Saab 9-3|Saab 9-3]]<br />[[w:Saab 9-5|Saab 9-5]]<br />[[w:Cadillac BLS|Cadillac BLS]]||1989||2010||Saab plant. Opened in 1947. Also did engine (Saab two-stroke) & transmission production until 1953 when it was relocated to the Gothenburg plant. GM bought 50% of [[w:Saab Automobile|Saab Automobile]] in 1989 & the other 50% in 2000. Saab also built the 9-3 based BLS for Cadillac. The BLS was not sold in the US or Canada. GM sold [[w:Saab Automobile|Saab Automobile]] to [[w:Spyker Cars|Spyker Cars]] in February, 2010. |- |&nbsp;||Saginaw Malleable Iron||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||&nbsp;||1919||2007|| Located at 77 W. Center St. Iron castings. HQ of Central Foundry Division. In 1919, Saginaw Malleable Iron and Central Foundry merged with the Jacox division into GM's Saginaw Products Company. In 1928, became the Saginaw Malleable Iron division of GM. Closed in 2007, demolished in 2010. Converted into a park. |- |&nbsp;||Saginaw Nodular Iron||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||Steering knuckles, crankshafts, disc brake caliper housings, exhaust manifolds, flywheels, differential carriers, clutch pressure plates||1967||1988|| Located at 2100 Veterans Memorial Parkway. Straddles the City of Saginaw-Buena Vista Township border. Iron castings. Closed in 1988. Later demolished. |- |&nbsp;||Saginaw Parts||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||&nbsp;||1909||1983|| Located on corner of 6th & Washington Avenues. Opened in 1907 to build the 1908 Rainier. Bought by GM in 1909 as part of its purchase of [[w:Rainier Motor Car Company|Rainier Motor Car Company]]. Reorganized into the [[w:Marquette (automobile)#Company|Marquette Motor Co.]] which still made Rainier brand cars through 1911 as well as parts for Welch and Welch-Detroit cars. In 1912, the Rainier brand was replaced by the Marquette brand, which was said to be a combination of the previous Rainier and Welch-Detroit brands. In February 1912, the company was renamed Peninsular Motor Co. Some late production cars seem to have been badged as Peninsular. All of those activities ended at the end of 1912. In 1917, during World War I, the plant was reopened and used to manufacture mortar shells for the US Ordnance Corps. In 1919, became part of the Saginaw Products Company with this plant becoming the Saginaw Products Company Motor Plant. From 1919-1922, the plant made [[w:Chevrolet Inline-4 engine#224|OHV I4]] engines for [[w:Chevrolet Series FB|Chevrolet Series FB]] and [[w:Oldsmobile Model 43|Oldsmobile Model 43A]]. It was then used as a warehouse. From 1935, it made all different types of auto parts and service parts as Chevrolet Saginaw Service Parts Plant or from 1969, Chevrolet Saginaw Parts Plant. Closed in 1983, demolished in 1984. |- |&nbsp;||Saginaw Steering Gear - Plant 1||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||Steering components||1910||1984||Located on 628 North Hamilton St. Originally founded as the Jackson, Church and Wilcox Company (Jacox) in 1906. Bought by GM in 1910. Became the Jackson-Church-Wilcox or Jacox division of GM. In 1919, the Jacox division merged with Saginaw Malleable Iron and Central Foundry into GM's Saginaw Products Company. Became the Saginaw Steering Gear Division in 1928. Closed in 1984. Sold in 1987 to Thomson Industries. Still operates today as Thomson Aerospace & Defense, a brand of Linear Motion LLC, which is owned by the Umbra Group of Italy. |- |&nbsp;||Saginaw Steering Gear - Plant 2||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||Steering Gears, pump hoses||1941||2001||Located at 1400 Holmes Street. Affectionately known as "The Gun Plant", it was built in 1941 when the division was contracted to build M1919 machine guns, and M1-Carbines for World War II. After the war, normal steering gear production continued until its closure in 2001. It was demolished in 2002. |- |&nbsp;||Saginaw Steering Gear complex||[[w:Buena Vista Township, Michigan|Buena Vista Township, Michigan]]||United States|| Complete Hydraulic and Electric Power Steering Systems, Halfshafts, Intermediate Drive Shafts||1953||2010||Located at 3900 E. Holland Road. Former Saginaw Steering Gear Division of GM. Saginaw Steering Gear Division renamed Saginaw Division in 1985. Grouped under Delphi Automotive Systems in 1995. Plant 3 opened in 1953, Plant 4 opened in 1956. The sprawling Five-Plant complex (Plants 3-7), division Headquarters and large engineering center, were spun off with Delphi in 1999. GM repurchased the Delphi Steering division from bankrupt Delphi in 2009, renaming it Nexteer Automotive, and then sold the division to [[w:Pacific Century Motors|Pacific Century Motors]] in 2010. The former GM Division now operates as "[[w:Nexteer Automotive|Nexteer Automotive]]", an independent company headquartered at the Saginaw site. Nexteer moved its headquarters to Auburn Hills in 2015. |- |&nbsp;||Saginaw Steering Gear Overseas Corp.||[[w:Hendon|Hendon]], [[w:England|England]]||United Kingdom|| Steering columns, Steering column components (jacket & bracket assemblies), Vacuum pumps, EGR valves||1970 (auto parts)||?||Located on Capitol Way in The Capitol Industrial Park. Originally opened in 1924 as a vehicle assembly plant making Chevrolets (See listing for "GM Ltd."). When Chevrolet production was moved to Luton in 1930, Hendon was used for parts distribution. Later, Frigidaire made appliances at Hendon. In 1970, Hendon began producing steering columns. In 1971, more automotive components began to be produced in place of Frigidaire appliances. In 1979, Hendon became aligned with Saginaw Steering Gear in the US. In 1980, GM sold the Hendon site for redevelopment but leased back an area for construction of a new plant for Saginaw Steering Gear. The new plant opened in 1981. In 1982, GM Ltd. was dissolved and the Hendon plant became part of Saginaw Steering Gear Overseas Corp., part of GM Overseas Corp. |- |&nbsp;||Saginaw Transmission||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||Manual Transmissions, Brakes||1921||1999||Located at 2328 E. Genesee Ave. Built 1919–20 for the Michigan Crankshaft Company (originally founded as National Engineering Company), acquired by GM in 1921 and placed under Saginaw Products Company. In 1928, became the Saginaw Crankshaft Division of GM. Transferred to Chevrolet upon the dissolution of the Crankshaft Division in 1931 when crankshaft manufacturing was turned over to the car divisions. Made the "Saginaw" 3 and 4-Speed manual transmissions. It was spun off as part of Delphi in 1999. The plant was sold to [[w:TRW Automotive|TRW Automotive]] in 2007. TRW used the plant to produces brake and suspension components (known as TRW Braking and Suspension). TRW closed this plant in 2014. |- |4||[[w:Scarborough Van Assembly|Scarborough Van Plant]]||[[w:Scarborough, Toronto|Scarborough]], [[w:Ontario|Ontario]]||[[w:Canada|Canada]]||[[w:Chevrolet Van#Third generation (1971–1996)|Chevrolet Van]] (1974-1993)<br />[[w:GMC Vandura#Third generation (1971–1996)|GMC Vandura]] (1974-1993)<br />[[w:Chevrolet Sportvan#Third generation (1971–1996)|Chevrolet Sportvan]] (1974-1993)<br />[[w:GMC Vandura#Third generation (1971–1996)|GMC Rally Van]] (1974-1993)<br />||1952<br><br>1974 (Vehicle production)||1993||Located at 1901 Eglinton Avenue East. Originally a [[w:Frigidaire|Frigidaire]] home appliance plant through 1970. In 1960, production of automotive components was added. Production included radios, instrument clusters, horns, shock absorbers, and propshafts. After Frigidaire production ended in 1970, only auto parts were made and the plant name was changed from Frigidaire Products of Canada to Delco Canada. Auto parts production ended in 1973 and the plant was expanded and converted to build full-size vans and renamed Scarborough Van Plant. First van produced on May 23, 1974 (a 1974 Chevy Van 10). After van production began, plant was expanded 5 times over the years. Cutaway production was added for 1975, halted in 1978, and resumed in 1980. One millionth van produced in January 1986 (a GMC model). Closed on May 6, 1993 and operations moved to [[w:Flint Truck Assembly|Flint Truck Assembly]]. Scarborough produced 1,626,313 vans from 1974-1993. Plant demolished and now site of Eglinton Town Centre and Comstock Bus Garage at the southern end of the property. |- |&nbsp;||[[w:Scripps-Booth|Scripps-Booth]]||[[w:Detroit, Michigan|Detroit]], [[w:Michigan|Michigan]]||United States||Scripps-Booth automobiles||1918||1922||Taken over by Chevrolet by the end of 1917 before Chevrolet was part of GM. When Chevrolet became part of GM, Scripps-Booth became part of GM as well. Scripps-Booth then adopted an Oakland chassis and a Northway six-cylinder engine, using parts from other GM divisions. However, a place could not be found for Scripps-Booth in GM's lineup, so GM closed it down in 1922. |- |8||[[w:Shreveport Operations|Shreveport Operations]]||[[w:Shreveport, Louisiana|Shreveport, Louisiana]]||United States||[[w:Chevrolet Colorado#First generation (2004)|Chevrolet Colorado]] (2004-2012)<br />[[w:Chevrolet Colorado#First generation (2004)|GMC Canyon]] (2004-2012)<br />[[w:Hummer H3|Hummer H3]] (2006-2010)<br />[[w:Hummer H3#H3T|Hummer H3T]] (2009-2010)<br />[[w:Chevrolet Colorado#Isuzu i-series|Isuzu i-series]] pickup (2006-2008)||1981||2012||Located at 7600 General Motors Blvd. General Motors Blvd. was renamed Antoine Blvd. in 2013. A portion of the complex is now used by Glovis America, a Hyundai Automotive Group subsidiary, for a vehicle logistics and processing center for Hyundai and Kia vehicles. <br />Past models: <br> [[w:Chevrolet S-10 |Chevrolet S-10]] (1982-03), [[w:Chevrolet S-10 EV|Chevrolet S-10 EV]] (1997-1998),<br /> [[w:Chevrolet S-10 Blazer#First generation (1983–1994)|Chevrolet S-10 Blazer]] (1983-1991 2-d),<br /> [[w:GMC S-15|GMC S-15]] (1982-1990), [[w:GMC Sonoma|GMC Sonoma]] (1991-03), [[w:GMC Syclone|GMC Syclone]] (1991),<br /> [[w:Chevrolet S-10 Blazer#First generation (1983–1994)|GMC S-15 Jimmy]] (1983-1991 2-d),<br /> [[w:Isuzu Hombre|Isuzu Hombre]] (1996-'00) |- |A||[[w:General Motors South Africa|General Motors South Africa]] Darling Street & Kempston Road plants||[[w:Port Elizabeth, South Africa|Port Elizabeth]]||[[w:South Africa|South Africa]]||[[w:Acadian (automobile)|Acadian]] (from CKD kits supplied from Oshawa and Willow Run)<br />[[w:Beaumont (automobile)|Acadian Beaumont & Beaumont]] (from CKD kits supplied from Oshawa 1966-69)<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Opel Ascona#Export models|Chevrolet Ascona]]<br />[[w:Chevrolet Caprice|Chevrolet Caprice]]<br />[[w:Statesman (automobile)#HJ|Chevrolet Caprice Classic]]<br />[[w:Chevrolet Constantia|Chevrolet Constantia]]<br />[[w:Chevrolet Corvair|Chevrolet Corvair]] (from CKD kits supplied from Oshawa)<br />[[w:Chevrolet Chevair|Chevrolet Chevair]]<br />[[w:Chevrolet Chevelle|Chevrolet Chevelle]]/[[w:Chevrolet Malibu|Chevrolet Malibu]]<br />[[w:Chevrolet Chevy II/Nova|Chevrolet Chevy II/Nova]]<br /> [[w:Chevrolet Nomad#South Africa production (GMSA)|Chevrolet Nomad]]<br /> [[w:Statesman (automobile)#HQ|Chevrolet De Ville]]<br />[[w:Holden HK#South Africa|Chevrolet El Camino<br />Chevrolet El Toro]]<br />[[w:Chevrolet Impala|Chevrolet Impala]]<br />[[w:Holden HK#South Africa|Chevrolet Kommando]]<br />[[w:Chevrolet LUV|Chevrolet LUV]]<br />[[w:Holden EK|Holden EK]]<br />[[w:Holden EJ|Holden EJ]]<br />[[w:Holden EH|Holden EH]]<br />[[w:Holden HD|Holden HD]]<br />[[w:Holden HR|Holden HR]]<br />[[w:Holden Monaro#Export program|Holden Monaro (HT)/Chevrolet SS (HG)]]<br />[[w:Pontiac Parisienne|Pontiac Parisienne]]<br />[[w:Vauxhall Viva#South Africa|Chevrolet Firenza/1300/1900]]<br />[[w:Opel Rekord Series D#ZA|Chevrolet 2500, 3800, 4100]]<br />[[w:Opel Rekord Series E#Chevrolet Rekord|Chevrolet Rekord]]<br />[[w:Opel Ascona#Ascona C (1981–1988)|Opel Ascona C]]<br />[[w:Opel Kadett A|Opel Kadett A]]<br />[[w:Opel Kadett B|Opel Kadett B]]<br />[[w:Opel Kadett#Kadett D (1979–1984)|Opel Kadett D]]<br />[[w:Opel Kadett#Kadett E (1984–1995)|Opel Kadett E/Monza]]<br />[[w:Opel Astra#F|Opel Kadett F]]<br />[[w:Opel Astra#G|Opel Astra G]]<br />[[w:Opel Corsa#Corsa B (S93; 1993)|Opel Corsa B/Corsa Lite]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Vauxhall Cresta|Vauxhall Cresta]]<br />[[w:Vauxhall Velox|Vauxhall Velox]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viscount|Vauxhall Viscount]]<br />[[w:Vauxhall Viva#Other markets|Vauxhall Viva]]<br />[[w:Isuzu F-Series|Isuzu F-Series]]<br />[[w:Isuzu N-Series|Isuzu N-Series]]<br /> [[w:Isuzu Faster|Isuzu KB]]<br />[[w:Isuzu D-Max|Isuzu KB (D-Max based)]]<br />||1926 (Darling Street)<br />1928 (Kempston Road)||1929 (Darling Street)<br />2017||Also assembled in the pre-WWII era: <br />[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:LaSalle (automobile)|LaSalle]]<br />[[w:Cadillac|Cadillac]]<br />[[w:GMC (automobile)|GMC]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]]<br />[[w:Opel|Opel]]<br />[[w:Frigidaire|Frigidaire]] appliances. Also built the [[w:Ranger (automobile)#South Africa|Ranger]]. GM sold the factory to Isuzu in 2017 and left the South African market. Isuzu consolidated its commercial truck production in the Struandale plant which already built Isuzu pickups and the Kempston Road plant ended production on Nov. 30, 2018. |- |4||[[w:General Motors South Africa|General Motors South Africa]] Struandale plant||[[w:Port Elizabeth, South Africa|Port Elizabeth]]||[[w:South Africa|South Africa]]||[[w:Chevrolet Spark#Africa|Chevrolet Spark (M300)]]<br />[[w:Opel Corsa#Corsa C (X01; 2000)|Opel Corsa C]]<br />[[w:Chevrolet Montana#South Africa|Opel Corsa Utility/Chevrolet Utility]]<br />[[w:Hummer H3|Hummer H3]]<br />[[w:Isuzu D-Max#Second generation (RT; 2011)|Isuzu KB]]<br />||1996||2017||Struandale was originally a Ford plant opened in 1973 which GM South Africa bought during the time it was known as Delta Motor Corp. in 1994. GM sold the factory to Isuzu in 2017 and left the South African market. Struandale absorbed Isuzu pickup production beginning with the 2nd generation D-Max around 2013 & Isuzu commercial truck ([[w:Isuzu F-Series|Isuzu F-Series]] & [[w:Isuzu N-Series|Isuzu N-Series]]) production in Jan. 2019. Isuzu KB was renamed D-Max in South Africa in 2018, aligning with the rest of the world. |- |&nbsp;||[[w:General Motors South Africa|General Motors South Africa]] Engine plant - Aloes||[[w:Port Elizabeth, South Africa|Port Elizabeth]]||[[w:South Africa|South Africa]]||[[w:Chevrolet 153 4-cylinder engine|Chevrolet 153 4-cylinder engine]]<br />[[w:Chevrolet Turbo-Thrift engine|Chevrolet Turbo-Thrift inline-6]]<br />[[w:Vauxhall Viva|Vauxhall Viva]] inline-4||1966||1999?|| |- |C (1965-1982)<br /><br /> U (1964 [[w:Chevrolet|Chevrolet]])<br /><br />S (1960-1964 [[w:Pontiac (automobile)|Pontiac]])<br /><br />C (1937-1964 [[w:Oldsmobile|Oldsmobile]] and 1936-1959 [[w:Pontiac (automobile)|Pontiac]])<br /><br />2 (1938-1964 <br> [[w:Buick|Buick]]) ||[[w:South Gate Assembly|South Gate Assembly]]||[[w:South Gate, California|South Gate, California]]||United States||[[w:Chevrolet Cavalier|Chevrolet Cavalier]] (1982) <br /> [[w:Cadillac Cimarron|Cadillac Cimarron]] (1982)||1936||1982|| Located at 2700 Tweedy Blvd. South Gate Assembly was the 1st GM multi-brand assembly plant, assembling Buick, Oldsmobile, and Pontiac models. The first finished cars were produced in May 1936. It was operated by GM's Southern California Division through 1943. Automobile production ended in Feb. 1942. During WWII, it produced the M5 and M5A1 Stuart tanks from July 1942-August 1943 in cooperation with Cadillac Division which held the contract to build the tank. It also provided a proof range for Army Ordnance to test various types of machine gun and cannon shells. Space was also provided for Army Ordnance to modify M4 medium tanks. Also built were gun shields and deck houses for the Navy. When M5A1 production ceased in August 1943, the plant was leased to Douglas Aircraft Co. until the end of the war for aircraft parts production. After the war ended, in 1945, Southgate & Linden were both placed in a new division called the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. South Gate began making Chevrolet full-size cars for 1964. BOP Assembly Division became GM Assembly Division in 1965. South Gate was converted to build H-body small cars like the Vega for 1975 but the plant was switched back to full-size cars for 1977, building Chevy, Oldsmobile, & Buick B-bodies. In 1979, South Gate Assembly became the second plant (the 1st was Linden, NJ in 1971) outside Cadillac's home plant in Detroit to assemble Cadillacs when it began to assemble C-body Cadillacs like the DeVille instead of Oldsmobile & Buick B-bodies. The plant was then idled in March 1980. It was again switched to build small cars for 1982, this time the J-body. Slow sales and efforts to reduce air quality issues resulted in plant closure, with production ending on March 23, 1982. Plant demolished and site used for 3 new schools for L.A. School District and the South Gate Industrial and Business Park at the southern end of the property.<br /> Unibody B-O-P "Y"-body [[w:Buick Special#1961–1963|Buick Special]]/[[w:Buick Skylark#First generation (1961–1963)|Buick Skylark]] (1962-1963), [[w:Oldsmobile F-85#First generation (1961)|Oldsmobile F-85/<br> Cutlass]] (1962-1963), [[w:Pontiac Tempest#First generation (1961–1963)|Pontiac Tempest]]/[[w:Pontiac LeMans#First generation (1961–1963)|Pontiac LeMans]] (1962-1963) added to B-& C-body mix 1961-63; replaced by [[w:General Motors B platform|Chevrolet B-body]] for 1964; [[w:GM H platform (RWD)|GM H platform (RWD)]]: [[w:Chevrolet Vega|Chevrolet Vega]] (1975), [[w:Chevrolet Monza|Chevrolet Monza]] (1975-1976), [[w:Pontiac Astre|Pontiac Astre]] (1975), [[w:Pontiac Sunbird#First generation (1976–1980)|Pontiac Sunbird]] (1976), [[w:Oldsmobile Starfire#Second generation (1975–1980)|Oldsmobile Starfire]] (H-body) (1976), [[w:Buick Skyhawk#First generation (1975–1980)|Buick Skyhawk]] (1976); [[w:Buick Centurion|Buick Centurion]] (1971-1973); [[w:Buick Century|Buick Century]] (1936-1942, 1954-1958); [[w:Buick Electra|Buick Electra]] (1959-1963); [[w:Buick Estate#1970|Buick Estate]] (1970-1973); [[w:Buick Invicta|Buick Invicta]] (1959-1962); [[w:Buick LeSabre|Buick LeSabre]] (1959-1974, 1977-1978); [[w:Buick Roadmaster|Buick Roadmaster]] (1947-1949, 1953-1958); [[w:Buick Special|Buick Special]] (1936-1958); [[w:Buick Super|Buick Super]] (1940-1958); [[w:Buick Wildcat|Buick Wildcat]] (1963-1970); [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1964-1974); [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1974, 1977-80); [[w:Chevrolet Impala|Chevrolet Impala]] (1964-1974, 1977-1980); [[w:Oldsmobile 88|Oldsmobile 88]] (1949-1970, 1977-1978); [[w:Oldsmobile 98|Oldsmobile 98]] (1941-63); [[w:Oldsmobile Jetstar I|Oldsmobile Jetstar I]] (1964-1965); [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1966); [[w:Pontiac 2+2|Pontiac 2+2]] (1964-1967); [[w:Pontiac Bonneville|Pontiac Bonneville]] (1958-1970, 1972-1973); [[w:Pontiac Catalina|Pontiac Catalina]] (1959-1973); [[w:Pontiac Chieftain|Pontiac Chieftain]] (1949-1953, 1955-1958); [[w:Pontiac Executive|Pontiac Executive]] (1967-1968); [[w:Pontiac Grand Prix|Pontiac Grand Prix]] (1962-68); [[w:Pontiac Star Chief|Pontiac Star Chief]] (1955-1958, 1960, 1962, 1966); [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1960-1961); [[w:Cadillac Deville#Fifth generation (1977–1984)|Cadillac Deville]] (1979-1980). |- |&nbsp;||[[w:St. Catharines Components Plant|St. Catharines Components Plant]]||[[w:St. Catharines, Ontario|St. Catharines, Ontario]]||[[w:Canada|Canada]]||Engine components<br />Transmissions<br />Transmission components<br />Starter motors<br />Alternators<br /> Final drive assemblies<br /> Axles<br />Steering wheels<br />Steering gear<br />Shock absorbers<br />Brakes<br />Bearings<br />Horns<br />Vehicle Radios<br />Fractional horsepower motors for appliances||1929||2010||Was located at 285 Ontario Street. Originally McKinnon Dash and Metal Work Ltd., which opened this site in 1900. In 1917, the company was renamed McKinnon Industries, Ltd. Taken over by GM on March 29, 1929. In 1963, fractional horsepower motors for appliances were moved to the GM Diesel plant in London, Ontario. In 1964, vehicle radios, horns, and shocks were moved to the Scarborough plant followed by propshafts in 1966. In 1969, McKinnon Industries Ltd. was integrated into GM Canada rather than being a separate subsidiary. In 1990, the Axle Plant is officially renamed Components Plant. Permanently closed in 2010 as part of GM's restructuring plans. All operations were transferred to [[w:St. Catharines Engine Plant|St. Catharines Engine Plant]]. Some of the Components Plant was demolished in 2016 and the site will be re-developed for mixed-use residential and commercial development. |- |&nbsp;||St. Catharines Foundry||[[w:St. Catharines, Ontario|St. Catharines, Ontario]]||[[w:Canada|Canada]]||[[w:Casting|Iron casting]] of engine parts||1952||1995|| Was located at 285 Ontario Street. Operated as part of GM subsidiary McKinnon Industries, Ltd. until 1969 when it became "General Motors of Canada Limited, St. Catharines". Aligned with GM's Central Foundry Division in 1989. |- |S <br />(1952 [[w:GMC (automobile)|GMC]] and 1953-1987)<br /><br />3 <br />(1928-1952 [[w:Chevrolet|Chevrolet]])||[[w:St. Louis Truck Assembly|St. Louis Truck Assembly]]||[[w:St. Louis, Missouri|St. Louis, Missouri]]||United States ||[[w:Chevrolet C/K|Chevrolet C/K]] (1960-1986)<br />[[w:Chevrolet C/K (third generation)|GMC C/K (Rounded Line)]] (1973-1986)<br />[[w:Chevrolet C/K (third generation)#R/V-Series (1987–1991)|Chevrolet R/V]] (1987 only)<br />[[w:Chevrolet C/K (third generation)#R/V-Series (1987–1991)|GMC R/V]] (1987 only)||1920<ref>{{cite web|url=https://www.autonews.com/article/20111031/CHEVY100/310319998/built-across-the-nation|author=James B. Treece|title=Built across the nation|publisher=Autonews.com|date=October 31, 2011}}</ref>||1987||Located at 3809 N. Union Blvd. Chevrolet had previously licensed [[w:Gardner (automobile)|Gardner Buggy Co.]] to assemble its cars in St. Louis in 1915. That was replaced by Chevrolet's own St. Louis plant on Union Blvd. Built 149,135 [[w:GMC CCKW 2½-ton 6×6 truck|GMC CCKW 6x6 trucks]] & 6,748 [[w:DUKW|DUKW]] amphibious vehicles during WWII. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. St. Louis Assembly joined the GM Assembly Division in 1971. Operated 3 assembly lines: car line, truck line, and the Corvette line. 695,214 Corvettes were built from 1954-1981 in the old Fisher Body Mill Building that had been used to assemble wooden bodies in earlier years and was converted to Corvette production. First 1954 Corvette was built in St. Louis on December 28, 1953. Last Corvette built in St. Louis was built July 31, 1981. Chevy Caprice & Impala production ended on August 1, 1980 and the main car line closed down. Was a Truck and Bus Group plant from 1982, only making full-size pickups. Closed August 7, 1987. The second-to-last vehicle produced was a GMC R1500 regular cab, long bed pickup while the last vehicle produced was a Chevy pickup. The old Fisher Body Mill Building where Corvettes were built was demolished in 1992. Some of the main assembly facility was demolished and the remainder was renovated to become the Union Seventy Center. The remainder of the site, roughly 118 acres, was demolished and replaced with trees, grass, a pond, & new access roads. Property is now the Union Seventy Center, an industrial warehouse and distribution campus used by several different tenants. <br />[[w:Chevrolet Series 490|Chevrolet Series 490]]<br /> [[w:Chevrolet Superior|Chevrolet Superior]]<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]], [[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Stylemaster|Chevrolet Stylemaster]], [[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]], <br />[[w:Chevrolet 150|Chevrolet 150]] (1953-1957), [[w:Chevrolet 210|Chevrolet 210]] (1953-1957), [[w:Chevrolet AK Series|Chevrolet AK Series]], [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1970), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1970), [[w:Chevrolet K5 Blazer#1969–1972|Chevrolet K5 Blazer]] (1969-1972), [[w:Chevrolet Corvair|Chevrolet Corvair Forward Control]] (1961-1965), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1980), [[w:Chevrolet Corvette|Chevrolet Corvette]] (1954-1981), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet El Camino#First generation (1959–1960)|Chevrolet El Camino]] (1959-1960), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1980), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Chevrolet Suburban|Chevrolet Suburban]] (1956, 1959, 1963-1967), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:Chevrolet C/K (second generation)|GMC C/K (Action Line)]] (1967-1972), [[w:Chevrolet K5 Blazer#1969–1972|GMC Jimmy]] (1970-1972), [[w:GMC New Design|GMC New Design]] (1953-1954), [[w:GMC Suburban|GMC Suburban]] (1947-1955, 1967-1972) |- |2||[[w:Sainte-Thérèse Assembly|Ste. Thérèse Assembly]]||[[w:Boisbriand, Quebec|Boisbriand, Quebec]]||[[w:Canada|Canada]]||[[w:Chevrolet Camaro (fourth generation)|Chevrolet Camaro]] (1993-2002)<br />[[w:Pontiac Firebird#Fourth generation (1993–2002)|Pontiac Firebird]] (1993-2002)||1966||2002||Located at 2500 Boulevard De la Grande-Allée. <br />Past models:<br> [[w:Chevrolet Celebrity|Chevrolet Celebrity]] (1987-90)<br />[[w:Oldsmobile Cutlass Ciera|Oldsmobile Cutlass Ciera]] (1988-1991)<br />[[w:Oldsmobile Cutlass#Fifth-generation (intermediate) 1978–1988|Oldsmobile Cutlass/Cutlass Supreme]] (1978-1987)<br />[[w:Oldsmobile 442|Oldsmobile Cutlass 442]] (1979)<br />[[w:Pontiac Bonneville#Seventh generation (1982–1986)|Pontiac Bonneville]] (1983-86)<br />[[w:Pontiac Grand Prix#Fifth generation (1978–1987)|Pontiac Grand Prix]] (1978-1981, 1983-1987)<br />[[w:Pontiac Grand Prix#1986|Pontiac Grand Prix 2+2]] (1986)<br />[[w:Chevrolet Vega|Chevrolet Vega]] (1973-1974)<br />[[w:Pontiac Astre|Pontiac Astre]] (1973-1974)<br />[[w:Chevrolet Monza|Chevrolet Monza]] (1975-1977)<br />[[w:Pontiac Sunbird#First generation (1976–1980)|Pontiac Sunbird]] (1977)<br />[[w:Oldsmobile Starfire#Second generation (1975–1980)|Oldsmobile Starfire]] (1975-77)<br />[[w:Buick Skyhawk#First generation (1975–1980)|Buick Skyhawk]] (1975-1977)<br />[[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1967-1970)<br />[[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1967-70)<br />[[w:Chevrolet Impala|Chevrolet Impala]] (1967-1970)<br />[[w:Chevrolet Caprice|Chevrolet Caprice]] (1967-1970)<br />[[w:Pontiac Catalina|Pontiac Catalina]] (1970-1972)<br /> [[w:Pontiac Grand Ville|Pontiac Grand Ville]] (1971). Plant demolished and site re-developed as a commercial and residential site known as Faubourg Boisbriand and the Centre for Sports Excellence. |- |&nbsp;||Strasbourg Transmission||[[w:Strasbourg|Strasbourg]]||[[w:France|France]]||[[w:GM 6L50 transmission|6L45/6L50]] 6-speed RWD automatic transmissions||1968||2013||Past products: [[w:GM 5L40-E transmission|5L40]], [[w:GM 4L30-E transmission|4L30]], [[w:Turbo-Hydramatic 180|TH180/3L30]] RWD automatic transmissions Also supplied 4-, 5-, & 6-speed RWD auto. transmissions to [[w:BMW|BMW]].<br /> Also supplied 3-speed RWD auto. transmissions to Fiat, Peugeot ([[w:Peugeot 604|604]]), & Rover ([[w:Rover SD1|SD1]]). Sold to Punch Metals International in 2013, which renamed the unit as Punch Powerglide Strasbourg.<ref>{{Cite web|url=https://gmauthority.com/blog/2012/12/general-motors-sells-strasbourg-plant-to-punch-metals-international/|title = General Motors Sells Strasbourg Plant to Punch Metals International|author=Alex Luft|publisher=GMAuthority.com|date = 22 December 2012}}</ref> In 2014, Punch Powerglide Strasbourg began producing [[w:ZF 8HP transmission|8HP 8-speed automatic transmissions]] for [[w:ZF Friedrichshafen|ZF Friedrichshafen]] in addition to the GM 6L50 6-speed automatic transmission. In 2023, Punch Powerglide Strasbourg was renamed Dumarey Powerglide Strasbourg. |- |&nbsp;||General Motors Suisse AG||[[w:Biel|Biel]]||[[w:Switzerland|Switzerland]]||[[w:Chevrolet|Chevrolet]] 1936-1941, 1946-1968<ref>{{cite web|title=What's Wrong With This Picture? And What's Very Right With the Other Ones? They Do Things a Bit Differently In Switzerland|date=15 August 2020 |at=see 20th comment down from 8-15-20 5:59 pm|url=https://www.curbsideclassic.com/blog/qotd/whats-wrong-with-this-picture-and-whats-very-right-with-the-other-ones-they-do-things-a-bit-differently-in-switzerland/}}</ref><br />[[w:Pontiac (automobile)|Pontiac]] 1937-1939, 1946-1959 (None produced in 1955-1956)<br />[[w:Oldsmobile|Oldsmobile]] 1936-1940, 1947-1958<br />[[w:Buick|Buick]] 1936-1940, 1946-1958<br />[[w:LaSalle (automobile)|LaSalle]] 1936 <br />[[w:Cadillac|Cadillac]] 1938-1940<br />[[w:Opel|Opel]] 1936-1941, 1950-1975<br />[[w:Vauxhall Motors|Vauxhall]] 1936-1940, 1946-1971<br />[[w:Ranger (automobile)#Europe|Ranger]] 1970-1975 ||1936||1975|| First car off the line was a [[w:Buick Series 40|Buick Model 41]] on February 5, 1936. Other prewar cars built include the [[w:Buick Series 90|Buick Series 90]] & [[w:Opel P4|Opel P4]]. GM rented the factory from the city council until they bought it on Feb. 20, 1947. Closed August 14, 1975. Last car was an [[w:Opel Rekord D|Opel Rekord D]]. A total of 329,864 cars were assembled. Regular as well as customized vehicles in small series were made like drawing vehicles for the [[w:Swiss Armed Forces|Swiss Armed Forces]]: An open 6-seater [[w:Chevrolet|Chevrolet]] Platform combined with an Opel 2.5L I-6 cylinder; after World War II those "Swiss" cars were also offered to the public as limousines. As well, GM produced luxury upgraded vehicles for the European market like the [[w:Opel Kapitän|Opel Kapitän]], [[w:Opel Rekord P1#Swiss assembly|Rekord]] "Ascona Edition", and the Kadett-based [[w:Opel Kadett B#Opel Ascona (modified Kadett B assembled in Biel, Switzerland)|Opel Ascona 1700]] up to the early 1970s. The [[w:Ranger (automobile)#Europe|Ranger]] was invented by using [[w:Vauxhall Motors|Vauxhall]] structures on an [[w:Opel Rekord C|Opel Rekord C]] body. Also built the first generation [[w:Chevrolet Camaro (first generation)|Chevrolet Camaro]], [[w:Chevrolet Chevelle|Chevrolet Chevelle]], [[w:Chevrolet Chevy II / Nova|Chevrolet Chevy II / Nova]], & the [[w:Chevrolet Corvair|Chevrolet Corvair]] (from CKD kits supplied from Oshawa). Also built the [[w:Vauxhall Victor|Vauxhall Victor]] and the special Victor Riviera as well as the [[w:Vauxhall Cresta|Vauxhall Cresta]] and [[w:Vauxhall Viscount|Vauxhall Viscount]]. Afterwards the plant was used as GM's European central spare parts warehouse until 1992. Most buildings still exist, they now house a [[w:Coop (Switzerland)|Coop]] mall. &nbsp; |- |T||[[w:General Motors India|Talegaon]]||[[w:Talegaon|Talegaon]], [[w:Pune district|Pune district]], [[w:Maharashtra|Maharashtra]]||[[w:India|India]]||[[w:Chevrolet Spark|Chevrolet Spark]]<br />[[w:Chevrolet Beat|Chevrolet Beat]]<br />[[w:Chevrolet Sail#Second generation (2010)|Chevrolet Sail U-VA]] (hatchback)<br />[[w:Chevrolet Sail|Chevrolet Sail]]||2008||2020||Part of [[w:General Motors India|GM India]]. Production began in September 2008. Closed December 24, 2020. Sold to [[w:Hyundai Motor India|Hyundai Motor India]] in January 2024. |- |T (1953-1996)<br /><br />2 (1928-1952 [[w:Chevrolet|Chevrolet]])||[[w:North Tarrytown Assembly|North Tarrytown Assembly]]||[[w:Sleepy Hollow, New York|North Tarrytown, New York]]||United States||Past models:<br />[[w:Chevrolet 490|Chevrolet 490]]<br />[[w:Chevrolet Superior|Chevrolet Superior]]<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Stylemaster|Chevrolet Stylemaster]]<br /> [[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br />[[w:Chevrolet AK Series|Chevrolet AK Series]]<br />[[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955)<br />[[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959) <br />[[w:Chevrolet C/K (first generation)|Chevrolet C/K (Gen.1)]] (1960-1966)<br />[[w:Chevrolet C/K (second generation)|Chevrolet C/K (Action Line)]] (1967-1972)<br />[[w:Chevrolet 150|Chevrolet 150]] (1953-1957)<br />[[w:Chevrolet 210|Chevrolet 210]] (1953-1957)<br /> [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1974)<br />[[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1970)<br />[[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1974)<br />[[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958)<br />[[w:Chevrolet Impala|Chevrolet Impala]] (1958-1974)<br />[[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957)<br />[[w:Chevrolet Suburban|Chevrolet Suburban]] (1950, 1952, 1963-1964, 1966)<br />[[w:Chevrolet C/K (second generation)|GMC C/K (Action Line)]] (1967-1972)<br />[[w:Chevrolet Nova|Chevrolet Nova]] (1975-1979)<br />[[w:Chevrolet Citation|Chevrolet Citation]] (1980-1985)<br />[[w:Pontiac Ventura#1971–1977|Pontiac Ventura]] (1975-1977)<br />[[w:Pontiac Phoenix#First generation (1977–1979)|Pontiac Phoenix (rwd X-body)]] (1978-1979)<br />[[w:Pontiac Phoenix#Second generation (1980–1984)|Pontiac Phoenix (fwd X-body)]] (1980-1984)<br />[[w:Pontiac 6000|Pontiac 6000]] (1985-1989)<br />[[w:Buick Skylark#Fourth generation (1975–1979)|Buick Skylark (rwd X-body)]] (1976-1979)<br />[[w:Buick Skylark#Fifth generation (1980–1985)|Buick Skylark (fwd X-body)]] (1980-1983)<br />[[w:Buick Century#Fifth generation (1982–1996)|Buick Century]] (1985-1989)<br />[[w:Chevrolet Lumina APV|Chevrolet Lumina APV]] (1990-1993)<br />[[w:Chevrolet Lumina Minivan|Chevrolet Lumina Minivan]] (1994-1996)<br />[[w:Pontiac Trans Sport#First generation (1990-1996)|Pontiac Trans Sport]] (1990-1996)<br />[[w:Oldsmobile Silhouette#First generation (1990–1996)|Oldsmobile Silhouette]] (1990-1996) ||1918 (as part of GM)||1996|| Located at 199 Beekman Avenue. Originally built by [[w:Mobile Company of America|Mobile Company of America]]. In 1904, plant was sold to Maxwell-Briscoe, which later became [[w:Maxwell Motor Company|Maxwell Motor Company]]. Chevrolet bought the complex in 1914, before Chevrolet was part of GM. The first Chevrolet produced in Tarrytown was the [[w:Chevrolet 490|Chevrolet 490]]. The plant became part of GM when Chevrolet became part of GM in 1918. The Fisher Body side of the plant became part of GM's Eastern Aircraft Division during World War II and assembled the wings, center section, trailing edges, motor mount, cabin, windshield, & upholstery for Avenger bombers & Wildcat fighters. Built the 50 millionth Chevrolet, a white 1963 Impala SS on June 10, 1963. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Tarrytown Assembly joined the GM Assembly Division in 1968. Passenger car production ended on Feb. 3, 1989. Plant joined Truck and Bus Group for 1990 when it was converted to build GM's new trio of fwd minivans. Plant closed in June 1996. Minivan production moved to [[w:Doraville Assembly|Doraville Assembly]] for 1997. North Tarrytown changed its name to Sleepy Hollow in December 1996. Plant was demolished. Site being redeveloped as Edge-on-Hudson, a mixed use residential/retail/office/park space. |- |H||[[w:General Motors Thailand|General Motors Thailand]] Ltd.||Pluak Daeng, [[w:Rayong province|Rayong province]]||[[w:Thailand|Thailand]]||[[w:Chevrolet Colorado|Chevrolet/Holden Colorado]] (RC/RG) <br /> [[w:Chevrolet Trailblazer (SUV)#RG|Chevrolet/Holden Trailblazer & Holden Colorado 7]] (RG)<br />[[w:Chevrolet Cruze|Chevrolet Cruze]]<br />[[w:Daewoo Lacetti|Chevrolet Optra]]<br /> [[w:Daewoo Kalos|Chevrolet Aveo]]<br /> [[w:Daewoo Winstorm|Chevrolet/Holden Captiva]]||2000||2020||Past Models:<br /> [[w:Opel Zafira#Zafira A (1999)|Opel/Vauxhall/Chevrolet Zafira]]<br /> [[w:Opel Zafira#Zafira A (1999)|Holden Zafira (TT)]]<br /> [[w:Subaru Traviq|Subaru Traviq]], [[w:Isuzu D-Max#First generation (RA, RC; 2002)|Isuzu D-Max]],<br> [[w:Alfa Romeo 156|Alfa Romeo 156]] [https://www.just-auto.com/news/thailand-gm-to-make-alfa-156-in-thailand/]<br /> Sold to [[w:Great Wall Motors|Great Wall Motors]] in 2020.<ref>{{Cite web|url=https://gmauthority.com/blog/2020/09/sale-of-gm-rayong-plant-to-great-wall-motors-confirmed/|title=Sale of GM Rayong Plant to Great Wall Motors Confirmed|author=Sam McEachern|publisher=GMAuthority.com|date=30 September 2020}}</ref> |- |&nbsp;||[[w:General Motors Thailand|General Motors Powertrain (Thailand) Ltd.]]||Pluak Daeng, [[w:Rayong province|Rayong province]]||[[w:Thailand|Thailand]]||2.5L ([[w:List of VM Motori engines#R 425 DOHC|R 425 DOHC]]) & 2.8L ([[w:List of VM Motori engines#R 428 DOHC|R 428 DOHC]] & [[w:List of VM Motori engines#A 428 DOHC|A 428 DOHC]]) turbodiesel I4 engines||2011||2020|| Sold to [[w:Great Wall Motors|Great Wall Motors]] in 2020.<ref>{{Cite web|url=https://gmauthority.com/blog/2020/09/sale-of-gm-rayong-plant-to-great-wall-motors-confirmed/|title=Sale of GM Rayong Plant to Great Wall Motors Confirmed|author=Sam McEachern|publisher=GMAuthority.com|date=30 September 2020}}</ref> |- |&nbsp;||Three Rivers||[[w:Three Rivers, Michigan|Three Rivers]], [[w:Michigan|Michigan]]||United States||Rwd Automatic transmissions, propshafts||1979||1994||Located at 1 Manufacturing Way (formerly 1 Hydramatic Drive) off W. Hoffman St. GM bought the closed plant from Continental Can Co. Part of GM St. Joseph County Operations & GM Hydramatic Division. The Hydramatic Division merged with the GM Engine Division to form GM Powertrain in 1991-1992. Sold to [[w:American Axle|American Axle & Manufacturing Inc.]] in 1994. |- |&nbsp;||[[w:Toledo Transmission|Toledo Transmission]]||[[w:Toledo, Ohio|Toledo, Ohio]]||United States||Transmissions, Gears||1916||1957||Located at 900 W. Central Ave. Acquired from Warner Gear Co. by Chevrolet in 1916 before Chevrolet was part of GM. The plant became part of GM when Chevrolet became part of GM in 1918. During WWII, produced truck transfer cases and transmissions for four- and six-wheel-drive military trucks. Replaced by the current Toledo Transmission plant on Alexis Road in 1956. A brick smokestack that says "CHEVROLET" on it is a remnant of this plant and can still be seen today at the intersection of Maplewood Ave. and Arcadia Ave. It is similar to the more famous smokestack that says "OVERLAND", a remnant of the old Willys-Overland Jeep plant, which is only a short distance away from the Chevrolet smokestack. |- |M||Toluca Assembly||[[w:Toluca|Toluca]]||[[w:Mexico|Mexico]]||[[w:Chevrolet Kodiak|Chevrolet Kodiak]]||1995<ref>{{cite news|author=Thomas H. Klier, James Rubenstein|title=Mexico’s Growing Role in the Auto Industry Under NAFTA: Who Makes What and What Goes Where|url=https://www.chicagofed.org/publications/economic-perspectives/2017/6.|publisher=Federal Reserve Bank of Chicago, Economic Perspectives, Vol. 41, No. 6|at=see table 11 and footnotes right under table 11|date=September 2017}}</ref>||2008||[[w:Chevrolet C/K|Chevrolet C/K]], [[w:Chevrolet C/K (fourth generation)#C3500HD (1991–2002)|Chevrolet/GMC C3500HD]] (US: 2001-2002), [[w:Chevrolet Silverado#First-generation Silverado / second-generation Sierra (GMT800; 1999)|Chevrolet Silverado]] |- |&nbsp;||Tonawanda Forge||[[w:Tonawanda (town), New York|Tonawanda]], [[w:New York (state)|New York]]||United States||Forged metal components||c.1950||1994||Located at 2390-2392 Kenmore Ave. Sold to [[w:American Axle|American Axle & Manufacturing Inc.]] in 1994. Closed in 2008, subsequently demolished. |- |&nbsp;||Tonawanda Foundry||[[w:Tonawanda (town), New York|Tonawanda]], [[w:New York (state)|New York]]||United States||[[w:Casting|Iron castings]] of engine parts, brake drums. ||1954||1984||Was located on River Road. Was a Chevrolet Foundry. Was part of GM's Central Foundry Division. &nbsp; |- |Z||General Motors Turkiye Ltd.||[[w:Torbali|Torbali]], [[w:Izmir Province|Izmir Province]]||[[w:Turkey|Turkey]]||[[w:Opel Vectra|Opel Vectra]] A & B||1990||2000||[[w:Adam Opel AG|Opel plant]]. Converted into a spare parts warehouse. |- |&nbsp;||[[w:Ultium#Production|Ultium Cells LLC - Lansing]]||[[w:Delta Township, Michigan|Delta Township, Michigan]]||United States||Was supposed to make Ultium lithium-ion battery cells for EV's||Was scheduled to open in late 2024 or in 2025|| || Originally owned and constructed by Ultium Cells LLC, a 50/50 joint venture between General Motors and [[w:LG Energy Solution|LG Energy Solution]]. This was supposed to be Ultium Cells' third plant but GM sold its stake in the plant to partner LG Energy Solution in 2025 before the plant opened. Located at 7111 Davis Hwy. It is adjacent to GM's Lansing Delta Township Assembly plant. |- |&nbsp;||General Motors Uruguaya SA||[[w:Sayago|Sayago]], [[w:Montevideo|Montevideo]]||[[w:Uruguay|Uruguay]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Bedford Vehicles|Bedford trucks]]||1962||1986|| |- |L (1953-1992)<br /><br />20 (1947-1952 [[w:Chevrolet|Chevrolet]])||[[w:Van Nuys Assembly|Van Nuys Assembly]]||[[w:Van Nuys, California|Van Nuys, California]]||United States||[[w:Chevrolet Camaro|Chevrolet Camaro]] (1967-1971, 1978-1992)<br />[[w:Pontiac Firebird|Pontiac Firebird]] (1968-1971, 1978-1992) ||1947||1992||Located at 8000 Van Nuys Blvd. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Van Nuys Assembly joined the GM Assembly Division in 1968. Demolished in 1993. Redeveloped into "The Plant", a retail and industrial complex that also includes LAPD and LAFD stations.<br />Past models: [[w:Buick Apollo|Buick Apollo]] (1973-1975), [[w:Buick Skylark#Fourth generation (1975–1979)|Buick Skylark]] (1975-1977), [[w:Chevrolet 150|Chevrolet 150]] (1953-1957), [[w:Chevrolet 210|Chevrolet 210]] (1953-1957), [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1948-1955), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1969), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1969), [[w:Chevrolet C/K (first generation)|Chevrolet C/K]] (1960-1966), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1969), [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1964, 1970-1972), [[w:Chevrolet Corvair|Chevrolet Corvair]] (1963, 1965-1966), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet El Camino|Chevrolet El Camino]] (1959-1960, 1964, 1970-1972), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1969), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1970-1972), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Chevrolet Nova|Chevrolet Nova]] (1972-1977), [[w:Chevrolet Suburban|Chevrolet Suburban]] (1952, 1955, 1959), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:GMC Sprint|GMC Sprint]] (1971-1972), [[w:Oldsmobile Omega|Oldsmobile Omega]] (1973-1977), [[w:Pontiac GTO#Fourth generation|Pontiac GTO]] (1974), [[w:Pontiac Ventura#1971–1977 X-body compact|Pontiac Ventura]] (1972-1976) |- |&nbsp;||Vauxhall - Bedford Die Plant||[[w:Bedford|Bedford]], [[w:Bedfordshire|Bedfordshire]]||[[w:United Kingdom|United Kingdom]]||Tools & Die Manufacturing||1969||1980's||Opened May 1969. Supplemented die-making at the Luton plant. |- |8 (since 1993)<br />E (before 1993)||[[w:Vauxhall Ellesmere Port|Vauxhall Ellesmere Port]]||[[w:Ellesmere Port|Ellesmere Port]], [[w:Cheshire|Cheshire]]||[[w:United Kingdom|United Kingdom]]||[[w:Opel Astra#K|Opel]]/[[w:Vauxhall Astra|Vauxhall Astra]] K (5-door, Sports Tourer)<br />[[w:Opel Astra#J|Opel]]/[[w:Vauxhall Astra|Vauxhall Astra]] J (5-door, Sports Tourer)<br />[[w:Opel Astra#H|Opel]]/[[w:Vauxhall Astra|Vauxhall Astra]] H<br />[[w:Opel Astra#G|Opel]]/[[w:Vauxhall Astra|Vauxhall Astra]] G<br />[[w:Opel Astra#F|Opel]]/[[w:Vauxhall Astra|Vauxhall Astra]] F<br />[[w:Opel Kadett E|Opel Kadett E]]/[[w:Vauxhall Astra#Second generation (1984–1991)|Vauxhall Astra Mk II]]<br />[[w:Vauxhall Belmont|Vauxhall Belmont]]<br />[[w:Opel Combo#Kadett Combo (Combo A; 1986)|Opel Kadett Combo/Bedford Astravan & Astramax]]<br />[[w:Vauxhall Astra#First generation (1980–1984)|Vauxhall Astra Mk I]]<br />[[w:Vauxhall Chevette|Vauxhall Chevette]]<br />[[w:Bedford Chevanne|Bedford Chevanne]]<br />[[w:Vauxhall Firenza|Vauxhall Firenza]]<br />[[w:Vauxhall Magnum|Vauxhall Magnum]]<br />[[w:Opel Vectra#Vectra C (2002–2010)|Opel/Vauxhall Vectra C]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Holden Astra#Third generation (TR; 1995)|Holden Astra (TR)]]<br />[[w:Holden Astra#Seventh generation (BK, BL; 2016)|Holden Astra (BK)]] (wagon)<br />Vauxhall Viva OHV Inline-4<br />[[w:General Motors 54° V6 engine|General Motors 54° V6 engine]]||1962||2017|| [[w:Vauxhall Motors|Vauxhall plant]]. <br />Also made engines, transmissions, axles, & other components. Component production began in November 1962. Vehicle production began with the Viva on June 1, 1964. Engine production ended in 2004. Sold to [[w:PSA Group|PSA Group]] in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. Absorbing production of electric midsize vans from Luton van plant following Luton's closure on March 28, 2025. |- |7 (since 1993)<br />V (before 1993)||Vauxhall Luton (car plant)||[[w:Luton|Luton]], [[w:Bedfordshire|Bedfordshire]]||[[w:United Kingdom|United Kingdom]]||[[w:Vauxhall Carlton|Vauxhall Carlton]]<br />[[w:Vauxhall Cavalier|Vauxhall Cavalier]]<br />[[w:Vauxhall Cresta|Vauxhall Cresta]]<br />[[w:Opel Vectra#Vectra A (1988–1995)|Opel Vectra A]]<br />[[w:Opel Vectra#Vectra B (1995–2002)|Opel/Vauxhall Vectra B]]<br />[[w:Vauxhall Velox|Vauxhall Velox]]<br />[[w:Vauxhall Ventora|Vauxhall Ventora]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viscount|Vauxhall Viscount]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Vauxhall VX4/90|Vauxhall VX4/90]]<br />[[w:Vauxhall VX Series|Vauxhall VX Series]]<br />[[w:Vauxhall Wyvern|Vauxhall Wyvern]]<br />[[w:Envoy (automobile)#Vauxhall Victor based models|Envoy F/FB/FC/FD]]<br />Chevrolet Bedford AC/LQ<br />Bedford WHG/WLG/WS/VYC/AS/WT/BYC/K/[[w:Bedford M series|MS/ML]]/OS/OL/[[w:Bedford OB|OB]]<br />[[w:Bedford S type|Bedford S series]]<br />[[w:Bedford SB|Bedford SB]]<br />[[w:Bedford TA|Bedford TA]]<br />[[w:Bedford HC|Bedford HC/JC/PC]]<br />[[w:Bedford CA|Bedford CA/Envoy EA]]<br />[[w:Bedford CF|Bedford CF/CF1/Opel Bedford Blitz]]<br />[[w:Bedford HA|Bedford HA]]<br />[[w:Vauxhall Slant-4 engine|Vauxhall Slant-4 engine]]<br />Vauxhall OHV Inline-6<br />[[w:Churchill tank|Churchill tank]] ||1905 (operations began)<br><br>1925 (part of GM)||2002|| Vauxhall moved from London to Luton in 1905. GM bought Vauxhall in 1925. Chevrolet truck production was moved to Luton in 1930 from the Hendon plant and became known as Chevrolet Bedford. Chevrolet Bedford trucks were replaced by Vauxhall-developed Bedford trucks during 1931 though Chevrolet Bedford production continued through 1932. Bedford trucks and buses were built at Luton until production was moved to Dunstable in 1955. Subsequently, only Bedford vans and car-based light commercial vehicles were still made in Luton. Produced Churchill tanks during World War II. Production ended in 2002 with the [[w:Vauxhall Vectra|Vauxhall Vectra]]. Over 7.4 million vehicles had been produced. The Luton passenger car plant was next to the at the time still active van plant previously used by the IBC Vehicles joint venture. The plant has now been demolished and the site is now being redeveloped for housing.<ref>{{cite news|url=http://www.lutontoday.co.uk/news/politics/redevelopment-of-former-vauxhall-site-given-the-go-ahead-1-5795094|work=Luton Today|title=Redevelopment of former Vauxhall site given the go-ahead|date=8 Jan 2014|access-date=29 September 2014}}</ref> It is being redeveloped into a new Luton suburb called [[w:Napier Park|Napier Park]]. The van plant was closed in 2025 by Stellantis. |- |&nbsp;||GM de Venezuela<br />Caracas||[[w:Antimano|Antimano]], [[w:Caracas|Caracas]]||[[w:Venezuela|Venezuela]]||[[w:Chevrolet Bel Air|Chevrolet Bel Air]]<br />[[w:Chevrolet C/K|Chevrolet C/K]] <br />[[w:Chevrolet Camaro|Chevrolet Camaro]]<br /> [[w:Chevrolet Caprice|Chevrolet Caprice]]<br />[[w:Chevrolet Chevelle|Chevrolet Chevelle]]<br />[[w:Chevrolet Corvair|Chevrolet Corvair]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Impala|Chevrolet Impala]]<br />[[w:Chevrolet Malibu|Chevrolet Malibu]]<br /> [[w:Chevrolet Nova|Chevrolet Nova]]<br /> [[w:Chevrolet Advance Design|Chevrolet Thriftmaster/Loadmaster]]<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Rekord|Opel Rekord]] ||1948||1983||Plant closed in 1983 & GM moved to the newer Valencia plant that it bought from Chrysler in 1979. |- |&nbsp;||GM Venezolana<br />Mariara||[[w:Mariara|Mariara]], [[w:Carabobo|Carabobo]]||[[w:Venezuela|Venezuela]]||[[w:Chevrolet Silverado#Second-generation Silverado / third-generation Sierra (GMT900; 2007)|Chevrolet C3500]]<br /> [[w:Isuzu Forward|Chevrolet F-Series]]<br />[[w:Isuzu Giga|Chevrolet E-Series]]<br />[[w:Chevrolet Kodiak|Chevrolet Kodiak]]<br />[[w:Isuzu Elf|Chevrolet N-Series]]<br />||2008||2015||Plant closed in 2015 & N-Series moved to Valencia plant. |- |&nbsp;||GM Venezolana<br />Valencia||[[w:Valencia, Carabobo|Valencia]], [[w:Carabobo|Carabobo]]||[[w:Venezuela|Venezuela]]||[[w:Chevrolet Astra|Chevrolet Astra]]<br />[[w:Chevrolet Aveo (T200)|Chevrolet Aveo]]<br /> [[w:Chevrolet C/K|Chevrolet C/K]] <br />[[w:Chevrolet Celebrity|Chevrolet Celebrity]]<br />[[w:Buick Century#Fifth generation (1982–1996)|Chevrolet Century]]<br />[[w:Chevrolet Chevette#Latin America|Chevrolet Chevette]]<br />[[w:Chevrolet Corsa|Chevrolet Corsa]]<br /> [[w:Chevrolet Cruze#First generation (J300; 2008)|Chevrolet Cruze]]<br />[[w:Chevrolet Tahoe#First generation (1992)|Chevrolet Grand Blazer]]<br />[[w:Chevrolet Kodiak|Chevrolet Kodiak]]<br /> [[w:Chevrolet Malibu#Fourth generation (1978)|Chevrolet Malibu]]<br />[[w:Opel Ascona#Chevrolet Monza|Chevrolet Monza]]<br />[[w:Isuzu Elf|Chevrolet N-Series]]<br />[[w:Daewoo Lacetti|Chevrolet Optra]]<br />[[w:Chevrolet Orlando#First generation (J309; 2011)|Chevrolet Orlando]]<br />[[w:Chevrolet S-10 Blazer|Chevrolet S-10 Blazer]]<br />[[w:Chevrolet Silverado|Chevrolet Silverado]]<br /> [[w:Chevrolet Spark|Chevrolet Spark]]<br />[[w:Chevrolet Tahoe|Chevrolet Tahoe]]<br />[[w:Chevrolet TrailBlazer#First generation (KC; 2001)|Chevrolet TrailBlazer]] ||1979||2017||Originally built by Chrysler de Venezuela SA. GM bought the plant from Chrysler in 1979 and moved their entire operations there from the Caracas plant by 1983. <br /> There had already been production pauses because of part shortages between 2014 and 2016. On May 2, 2017 GM announced the total closure of the plant and deconsolidation of the Venezuelan unit from its accounts due to the illegal seizure of its factory by the Venezuelan government. The plant halted all of its operations of manufacturing vehicles and now only retains the GM brands representation.<ref>{{cite web|url=https://www.semana.com/internacional/articulo/general-motors-cierra-operaciones-en-venezuela/244829|title=General Motors concreta el cierre de sus operaciones en Venezuela|website=Semana.com|date=May 2, 2017}}</ref><ref>{{cite news|url=https://elpais.com/internacional/2017/04/20/actualidad/1492679446_631610.html|title=General Motors suspende operaciones en Venezuela tras el embargo de una planta|newspaper=El País|date=April 20, 2017|via=elpais.com}}</ref><ref>{{cite web|url=http://www.elcomercio.com/actualidad/generalmotors-cierre-operaciones-venezuela-negocios.html|title=General Motors inicia cierre de operaciones en Venezuela|website=El Comercio|date=May 2, 2017}}</ref> |- |&nbsp;||[[w:GM Vietnam|GM Vietnam]]||[[w:Hanoi, Vietnam|Hanoi]]||[[w:Vietnam|Vietnam]]||[[w:Chevrolet Aveo|Chevrolet Aveo]]<br />[[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]]<br />[[w:Chevrolet Cruze#First generation (J300; 2008)|Chevrolet Cruze]]<br />[[w:Chevrolet Lacetti|Chevrolet Lacetti]]<br />[[w:Chevrolet Spark#Second generation (M200, M250; 2005)|Chevrolet Spark Lite]]<br />[[w:Chevrolet Spark#Third generation (M300; 2009)|Chevrolet Spark]]<br />[[w:Chevrolet Orlando#First generation (J309; 2011)|Chevrolet Orlando]]<br />[[w:Chevrolet Vivant|Chevrolet Vivant]]<br>[[w:Daewoo Cielo|Daewoo Cielo]]<br>[[w:Daewoo Lacetti|Daewoo Lacetti]]<br />[[w:Daewoo Lanos|Daewoo Lanos]]<br>[[w:Daewoo Leganza|Daewoo Leganza]]<br>[[w:Daewoo Magnus|Daewoo Magnus]]<br>[[w:Daewoo Matiz|Daewoo Matiz]]<br>[[w:Daewoo Nubira|Daewoo Nubira]]<br>[[w:Daewoo Damas|Daewoo Damas]]||1995||2018||Originally established as VIDAMCO (a joint venture with a state owned co.) in 1993 by Daewoo Motor Co. Daewoo bought out its Vietnamese partner in April 2000, making VIDAMCO 100% owned by Daewoo Motor Co. Bought by GM in 2002 as part of the creation of [[w:GM Daewoo|GM Daewoo Auto & Technology Co.]] In July 2011, the name of the company was changed from VIDAMCO to GM Vietnam. Sold to [[w:VinFast|VinFast]] in 2018. [[w:VinFast Fadil|VinFast Fadil]] produced under license from GM; is a rebadged [[w:Chevrolet Spark#Fourth generation (M400; 2015)|Chevrolet Spark (M400)]]/[[w:Opel Karl|Opel Karl]]. |- |&nbsp;||[[w:Warren Transmission|Warren Transmission]]||[[w:Warren, Michigan|Warren, Michigan]]||United States||[[w:GM-Ford 6-speed automatic transmission|6T70, 6T75, 6T80]] ||1958||2020||Located at 23500 Mound Road. Past transmissions: [[w:GM 4T60-E transmission|4T65-E]], [[w:List of GM transmissions#Hybrid and PHEV|5ET50 EVT]] Plant originally built in 1941 as a US Navy Ordnance facility operated by the Hudson Motor Car Co. building 20mm Oerlikon anti-aircraft guns. In 1943, the Navy moved the contract from Hudson to Westinghouse, which now operated the Warren plant for the Navy. Ford bought the plant in 1946 and used it to produce axles and ball joints. GM bought the plant in 1958.<ref>{{Cite web|url=https://gmauthority.com/blog/2022/01/old-gm-warren-transmission-plant-set-to-be-demolished/|title = Old GM Warren Transmission Plant Set To Be Demolished|author=Sam McEachern|publisher=GMAuthority.com|date=January 25, 2022}}</ref> The plant became a Chevrolet facility making auto parts. It also made artillery shells in the 1960's and 1970's. The factory was transferred to the Hydramatic Division in 1980, later becoming part of GM Powertrain. [https://nadc1.com/?portfolio=gm-paint-shop-strip-out] Ended production on August 1, 2019. Reopened for production of face masks during the COVID-19 pandemic beginning in March 2020<ref>{{Cite web|url=https://www.freep.com/story/money/cars/general-motors/2020/06/08/gm-warren-transmission-plant-coronavirus/3135789001/|title = GM revived Warren plant for face mask production. What happens when demand slows?|author=Jamie LaReau|publisher=Detroit Free Press|date=June 8, 2020}}</ref>. First face mask produced March 27, 2020. Sold to a developer in 2021. |- |&nbsp;||[[w:Welch Motor Car Company|Welch]]||[[w:Pontiac, Michigan|Pontiac]], [[w:Michigan|Michigan]]||United States||Welch automobiles||1909||1911||Welch Motor Car Company became affiliated with GM in 1909 and GM officially took it over in 1910. Welch ended production in 1911. Welch was noted for having engines with a single overhead cam and hemispherical combustion chambers, unusual technology for its time. |- |&nbsp;||[[w:Welch Motor Car Company|Welch-Detroit]]||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Welch-Detroit automobiles||1910||1911||The Welch Company of Detroit was a separate company from the Welch Motor Car Company of Pontiac, Michigan and was set up in June 1909 to build a smaller, cheaper car than the Welch made in Pontiac, Michigan. Both Welch companies became affiliated with GM in 1909 and GM officially took over both companies in 1910. Both Welch and Welch-Detroit ended production in 1911. Equipment from the factory was moved to the also GM-owned, former Rainier Motor Car Company factory in Saginaw to make the 1912 Marquette, which was said to be a combination of the previous Rainier and Welch-Detroit brands. |- |W||[[w:Willow Run Assembly|Willow Run Assembly]]||[[w:Ypsilanti Township, Michigan|Ypsilanti Twp, Michigan]]||United States||[[w:Chevrolet Caprice#Fourth generation (1991–1996)|Chevrolet Caprice]] sedan & wagon (1991-1993) <br />[[w:Oldsmobile Custom Cruiser#Third generation (1991–1992)|Oldsmobile Custom Cruiser]] wagon (1991-1992)<br />[[w:Buick Roadmaster#1991–1996|Buick Roadmaster Estate wagon]] (1991-1993)||1956||1993||Located at 2625 Tyler Road, to the south of the former Willow Run Transmission plant. Initially opened in 1956 to exclusively build Chevrolet trucks in a 500,000 sq. ft. building that had been used as a warehouse by GM and was previously used by Kaiser-Frazer's engineering dept. [https://aadl.org/aa_news_19561208-chevrolet_willow_run_truck_plant_gains_momentum] In 1958-59, plant was expanded into a 2-part Chevrolet & Fisher Body passenger car assembly plant to make the Chevrolet Corvair. First completed 1960 Corvair rolls off the line on July 7, 1959 [https://www.facebook.com/photo/?fbid=792700342891740&set=a.453129043515540]. Added the Chevy II (Nova) for 1962. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Willow Run Assembly joined the GM Assembly Division in 1971. Idled in Nov. 1978. Converted in 1978-79 to build the fwd X-body compacts for 1980. Began building fwd X-cars on January 17, 1979. In 1984, joined the new BOC group in preparation for its conversion to build the new fwd H-body full-size cars for 1986. Final H-car built on May 19, 1989 and in September, moved to the CPC group. Converted to build the body-on-frame, rwd B-body for 1991. Chevy Caprice sedan production began in January 1990 followed by station wagons in July. Closed July 1993. B-body production consolidated in Arlington, TX. Assembly plant was 2.5 million sq. ft. when it closed. The Willow Run Assembly Plant is now the Willow Run Business Center, a multi-tenant warehouse and distribution facility, part of which is leased by GM to distribute automotive service parts, which is known as Ypsilanti #87 Processing Center, part of GM Customer Care and Aftersales. The nearby Willow Run Company Vehicle Operations site at 2901 Tyler Road was sold to International Turbine Industries in April 2013.<ref name=WR-Assembly-sold>{{cite news|author=Katrease Stafford|title=GM Willow Run plant redevelopment: Aircraft maintenance firm buys 1 building|url=https://www.annarbor.com/news/ypsilanti/gm-willow-run-plant-redevelopment-aircraft-maintenance-firm-purchases-facility-25-new-jobs-expected/|access-date=24 April 2013|newspaper=AnnArbor.com|date=April 2, 2013}}</ref> Past models: [[w:Chevrolet Task Force|Chevrolet Task Force]] (1957-1958), [[w:Chevrolet Suburban#Fourth generation (1955)|Chevrolet Suburban]] (1958), [[w:Chevrolet Corvair|Chevrolet Corvair]] (1960-1969), [[w:Chevrolet Nova|Chevrolet Chevy II/Nova]] (1962-79), [[w:Acadian (automobile)|Acadian]] (Canada only: 1968-71), [[w:Pontiac Ventura#1971–1977 X-body compact|Pontiac <br> Ventura]] (1971-1977), [[w:Pontiac GTO#Fourth generation|Pontiac GTO]] (1974), [[w:Pontiac Phoenix#First generation (1977–1979)|Pontiac Phoenix (rwd <br> X-body)]] (1977-1979), [[w:Oldsmobile Omega|Oldsmobile Omega (rwd X-body)]] (1973-1979), [[w:Buick Skylark#Fourth generation (1975–1979)|Buick Skylark (rwd <br> X-body)]] (1977-1978), [[w:Chevrolet Citation|Chevrolet Citation]] (1980-1981, 1984-1985), [[w:Oldsmobile Omega#Third generation (1980–1984)|Oldsmobile Omega (fwd X-body)]] (1980-1984), [[w:Buick Skylark#Fifth generation (1980–1985)|Buick Skylark (fwd <br> X-body)]] (1980-1985), [[w:Oldsmobile 88#Ninth generation (1986–1991)|Oldsmobile 88]] (1986-89), [[w:Pontiac Bonneville#Eighth generation (1987–1991)|Pontiac Bonneville]] (1987-1989). |- |&nbsp;||[[w:Willow Run Transmission|Willow Run Transmission]]||[[w:Ypsilanti, Michigan|Ypsilanti, Michigan]]||United States|| [[w:Hydramatic|Hydramatic]] automatic transmissions <br /> [[w:GM 4L80-E transmission|4L80-E transmission]]<br />[[w:GM 4L80-E transmission|4L85-E transmission]]<br />[[w:GM 4T60-E transmission|4T60-E transmission]]<br />[[w:GM 4T60-E transmission|4T65-E transmission]]<br />[[w:GM 4T80-E transmission|4T80-E transmission]]<br />[[w:GM 6L50 transmission|6L50-E transmission]]<br />[[w:GM 6L80 transmission|6L80-E transmission]]<br />[[w:GM 6L90 transmission|6L90-E transmission]]<br />||1953||2010||Began as the Ford [[w:B-24 Liberator|B-24 Liberator]] bomber plant in World War II which opened in 1941, grew from 3.5 million square feet to nearly 5 million square feet under GM. Ford built the factory and sold it to the US government, which leased it back to Ford for the duration of WWII. Ford Motor had first option on the plant after war production ended, an option it ultimately chose not to exercise. The factory was instead leased and then sold to [[w:Kaiser-Frazer|Kaiser-Frazer]] and was their main production site from 1946-1953, when they moved production to Toledo, OH following Kaiser-Frazer's acquisition of Toledo-based [[w:Willys-Overland|Willys-Overland]]. In addition to automobiles, [[w:Kaiser-Frazer|Kaiser-Frazer]] also built [[w:C-119 Flying Boxcar|C-119 Flying Boxcar]] cargo planes at Willow Run under license from [[w:Fairchild Aircraft|Fairchild Aircraft]], producing an estimated 88 C-119s between 1951 and 1953. In 1953, GM first leased then bought the plant to replace the Detroit Transmission Division factory in Livonia, Michigan that had burned down earlier in 1953. Whatever equipment could be salvaged was brought from the destroyed Detroit Transmission Division plant in Livonia to Willow Run in 1953. Also supplied Hydramatics to Lincoln, Nash, Hudson, Rambler, Kaiser, and Willys. It was also initially supplied to Rolls-Royce before Rolls-Royce set up their own Hydramatic production line in the UK building Hydramatics under license from GM. Rolls-Royce also supplied Armstrong-Siddeley and [[w: British Motor Corporation|BMC]], which in turn supplied other British automakers like Jensen that used BMC’s biggest engines. The Detroit Transmission Division became the Hydramatic Division in October 1963. The Hydramatic Division merged with the GM Engine Division to form GM Powertrain in 1991-1992. Over the years, GM expanded the plant to almost 5 million sq. ft. In addition to automatic transmissions, GM also produced the M16A1 rifle and the M39A1 20mm autocannon for the US military during the Vietnam War at Willow Run Transmission. GM Powertrain also had an on-site engineering center. The plant closed in December 2010. A small portion of the plant was saved by the [[w:Yankee Air Museum|Yankee Air Museum]] to be turned into the National Museum of Aviation and Technology at Historic Willow Run but more than 95% of the plant was demolished from 2013-2014. The rest of the site has been redeveloped into the [[w:American Center for Mobility|American Center for Mobility]], an autonomous- and connected-driving testing center which opened in December 2017. |- |Y (1964 [[w:Chevrolet|Chevrolet]] and 1965-2010) <br /><br /> W <br /> (Pre-1965 [[w:Oldsmobile|Oldsmobile]] & [[w:Pontiac (automobile)|Pontiac]])<br /><br /> 5 (Pre-1965 [[w:Buick|Buick]]) || [[w:Wilmington Assembly|Wilmington Assembly]] || [[w:Wilmington, Delaware|Wilmington, Delaware]]||United States||[[w:Pontiac Solstice|Pontiac Solstice]] (2006-2010)<br />[[w:Saturn Sky|Saturn Sky]] (2007-2010) <br />[[w:Opel GT#GT (roadster) (2007–2010)|Opel GT]] (Europe: 2007-2010) <br />[[w:Daewoo G2X#Daewoo G2X|Daewoo G2X]] (S. Korea: 2007-2009) ||1947||2009||Located at 801 Boxwood Road. Was originally part of the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. Wilmington began making Chevrolet passenger cars for 1964. BOP Assembly Division became GM Assembly Division in 1965. Converted to make the Chevette small car for 1976. Switched back to making B-body full-size cars for 1985. Converted to make the fwd Chevy Corsica & Beretta for 1987. Then built Corsica's replacement, Malibu, for 1997. Converted to build Saturn's 2nd model range, the Opel Vectra-based, plastic body paneled Saturn L-Series for 2000. Converted to build the rwd, Kappa platform small sports cars for 2006 beginning with the Pontiac Solstice. Final car produced was a Solstice roadster on July 28, 2009. The plant was sold to [[w:Fisker Automotive|Fisker Automotive]] in 2010, which had planned to build its [[w:Fisker Atlantic|2nd model line]] there. However, Fisker Automotive went bankrupt in Nov. 2013 before ever building any cars in Wilmington. Fisker Automotive's assets, including the Wilmington plant, were purchased out of bankruptcy by Wanxiang Group in February 2014. Wanxiang did not use the plant and sold it in 2017. Plant was demolished in 2019. A large part of the site is now an Amazon fulfillment center.<br />Past models: [[w:Chevrolet Corsica|Chevrolet Corsica]] (1987-1996), [[w:Chevrolet Beretta|Chevrolet Beretta]] (1987-1996), [[w:Pontiac Tempest#Fourth generation (1987–1991)|Pontiac Tempest (Canada only)]] (1988-91), [[w:Chevrolet Malibu#Fifth generation (1997)|Chevrolet Malibu]] (1997-1999), [[w:Saturn L-Series|Saturn L-Series]] (2000-2005), [[w:Chevrolet Chevette|Chevrolet Chevette]] (1976-1984), [[w:Pontiac 1000|Pontiac 1000]] (1981-1984), [[w:Pontiac Acadian|Pontiac Acadian]] (Canada only: 1976-1984), [[w:Buick Centurion|Buick Centurion]] (1971-1973), [[w:Buick Electra|Buick Electra]] (1959-1962, 1971-1974), [[w:Buick Estate#1971-1976|Buick Estate]] (1972-1973, 1975), [[w:Buick GS|Buick GS]] (1968-1969), [[w:Buick Invicta|Buick Invicta]] (1959-1962), [[w:Buick LeSabre|Buick LeSabre]] (1959-1975), [[w:Buick Limited#1958 Limited|Buick Limited]] (1958), [[w:Buick Roadmaster|Buick Roadmaster]] (1948-1950, 1955-1957), [[w:Buick Skylark#Third generation (1968–1972)|Buick Skylark]] (1968-1969), [[w:Buick Special|Buick Special]] (1950, 1953-1958), [[w:Buick Super|Buick Super]] (1954-1958), [[w:Buick Wildcat|Buick Wildcat]] (1963-1970), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1964), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1964-1968), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1975, 1985-1986), [[w:Chevrolet Impala|Chevrolet Impala]] (1964-1975, 1985), [[w:Oldsmobile 88|Oldsmobile 88]] (1949-1963, 1985), [[w:Oldsmobile 98|Oldsmobile 98]] (1948-1963), [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1963), [[w:Pontiac Bonneville|Pontiac Bonneville]] (1958-1963), [[w:Pontiac Catalina|Pontiac Catalina]] (1959-1960, 1962-1963), [[w:Pontiac Chieftain|Pontiac Chieftain]] (1950-1951, 1954-1957), [[w:Pontiac Grand Prix#First generation (1962–1964)|Pontiac Grand Prix]] (1962-1963), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1955-1958, 1960), [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1960-1961) |- |&nbsp;||[[w:Windsor Transmission|Windsor Transmission]]||[[w:Windsor, Ontario|Windsor, Ontario]]||[[w:Canada|Canada]]||[[w:GM 4T40 transmission|4T40E/4T45E transmission]]<br />Transmission components||1920||2010||Plant was originally in [[w:Walkerville, Ontario|Walkerville]] until Walkerville was annexed by Windsor in 1935. Was located at 1550 Kildare Road. Walker Road is at the back of the property. Previous: 1920 - 1928 axles and parts, 1928 - 1963 engines (including the [[w:Chevrolet Stovebolt engine|Chevrolet Stovebolt OHV inline-6 engine]] and Buick engines from 1935-1942). The Windsor plant was taken over by McKinnon Industries Ltd., a GM subsidiary based in St. Catharines, Ontario, Canada in 1963. As a result, engine production in Windsor was moved to St. Catharines and transmission production in St. Catharines was moved to Windsor. At this point, the Windsor plant was renamed the Windsor Transmission Plant. In 1969, McKinnon Industries Ltd. was integrated into GM Canada rather than being a separate subsidiary. Windsor Transmission was closed on July 28, 2010. The 4-spd. automatics made in Windsor were discontinued and replaced by 6-spd. automatics made in St. Catharines. Sold in 2014 and completely demolished by 2017. Site now occupied by MotiPark Ltd. |- |&nbsp;||Windsor Trim||[[w:Windsor, Ontario|Windsor, Ontario]]||[[w:Canada|Canada]]||Seat assemblies and door trim panels||1965||1996|| Located at 1600 Lauzon Rd. Sold to Peregrine, Inc. in 1996 and then sold to [[w:Lear Corp.|Lear Corp.]] in 1999. Closed by Lear in 2005. Demolished in 2009. Part of the property is now the [[w:WFCU Centre|WFCU Centre]] and part will be residential homes. |- |&nbsp;||[[w:Wixom Performance Build Center|Wixom Performance Build Center]]||[[w:Wixom, Michigan|Wixom, Michigan]]||United States||[[w:GM LS engine|6.2L LS3 V8]] [[w:Chevrolet Corvette (C6)#Grand Sport|(C6 Corvette Grand Sport coupe w/manual transmission only)]]<br />[[w:GM LS engine|7.0L LS7 V8]]<br />[[w:GM LS engine|6.2L supercharged LS9 V8]]<br />[[w:Northstar engine series#LC3|4.4L supercharged LC3 Northstar V8]] ||2004||2013<ref>{{Cite web|url=https://www.torquenews.com/106/gm-closing-wixom-performance-engine-facility-build-your-own-engine-program-ends|title=GM Closing Wixom Performance Engine Facility, Build-Your-Own-Engine Program Ends|author=Patrick Rall|date=September 20, 2013|publisher=Torquenews.com}}</ref>||Located at 30240 Oak Creek Dr.<br> Performance Build Center relocated to <br> Bowling Green Assembly in 2014. |- |&nbsp;||[[w:Detroit Assembly#LaSalle Factory/DeSoto Factory|Wyoming Assembly (LaSalle Wyoming Ave. plant)]]||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||[[w:LaSalle (automobile)|LaSalle]] 1927-1933||1926||1934||Located at 6000 Wyoming Avenue. Originally built to produce Liberty aircraft engines in World War I, opening in 1917. In 1919, was taken over by Saxon Motor Co., owned by Hugh Chalmers of Chalmers Motor Co. GM bought the plant in 1926 and built the LaSalle there from 1927. GM sold Wyoming Assembly to Chrysler in 1934, which then used it to build its DeSoto brand. After the DeSoto brand was discontinued in late 1960, became Wyoming Export plant which was used to prepare vehicles for export. Plant closed in 1980. Plant was demolished in 1992. |- |&nbsp;||[[w:GMC (marque)#History|Yellow Truck & Coach Manufacturing Company]]||[[w:Chicago|Chicago]], [[w:Illinois|Illinois]]||United States||Yellow Cab taxis<br>Yellow Coach buses<br>Yellocab trucks (T-1, T-2, and T-3)||1925||1928||Located on West Dickens Ave. In 1925, General Motors Truck Corp., the parent of the GMC brand, merged with Yellow Cab Manufacturing Company (including its Yellow Coach Mfg. Co. bus-making subsidiary) to form Yellow Truck & Coach Manufacturing Company, in which GM owned a majority stake of 57%. Yellocab trucks were discontinued during 1927 and were replaced with new light-duty GMC trucks (T-10 & T-20). During 1928, bus and taxi production was consolidated at the GMC Pontiac Central plant in Pontiac, Michigan. The Chicago plant was closed and sold. |- |&nbsp;||Yellow Sleeve-Valve Engine Works||[[w:East Moline|East Moline]], [[w:Illinois|Illinois]]||United States||Yellow-Knight engines||1925||1929||Production began in 1923. In 1925, General Motors Truck Corp., the parent of the GMC brand, merged with Yellow Cab Manufacturing Company (including its Yellow Coach Mfg. Co. bus-making subsidiary) to form Yellow Truck & Coach Manufacturing Company, in which GM owned a majority stake of 57%. The Northway Motor Division of Detroit was transferred to General Motors Truck Corp. as part of that merger but was liquidated in 1926. During 1929 and 1930, Yellow Sleeve Valve Engine production equipment was transferred from East Moline, Illinois to Pontiac West Plant 1 in Pontiac, Michigan. The East Moline plant was closed at the end of 1929 and was sold. |- |&nbsp;||[[w:Yulon GM|Yulon GM]]||[[w:Miaoli|Miaoli]]||[[w:Taiwan|Taiwan]]||[[w:Buick Excelle#Taiwan|Buick Excelle]]<br />[[w:Buick LaCrosse#China|Buick LaCrosse]] ||2006||2012||A joint venture owned 49% by GM & 51% by [[w:Yulon|Yulon Motor Co]]. Yulon bought GM's stake in the venture in Dec. 2008. Production continued after the sale through licensing but cooperation between GM & Yulon ended in 2012. |- |&nbsp;||General Motors Zaire||[[w:Kinshasa|Kinshasa]]||[[w:Zaire|Zaire]] (now [[w:Democratic Republic of the Congo|D.R. Congo]])||[[w:Chevrolet|Chevrolet]] trucks<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Opel Commodore|Opel Commodore]]<br />[[w:Opel Ascona|Opel Ascona]]<br />[[w:Bedford Vehicles|Bedford Trucks]]||1975||1987||GM sold the plant in 1987 to local businessmen. Plant was looted bare in 1991. |} == Former partner factories == {| class="wikitable sortable" style="font-size:90%" !VIN !! Name !! City/State !! Country !! class="unsortable" | Products !! Opened !! Idled !! class="unsortable" | Comments |- |H||[[w:AM General#Hummer brand|AM General]] Commercial plant||[[w:Mishawaka, Indiana|Mishawaka, Indiana]]||United States||[[w:Hummer H2|Hummer H2]] (2003-2009)||2002||2009||Located at 12900 McKinley Highway. Built under contract for GM by AM General. Plant later built the [[w:Mercedes-Benz R-Class|Mercedes-Benz R-Class]] under contract for Mercedes for export to China from 2015-2017 as well as the [[w:VPG MV-1|VPG MV-1]] under contract for VPG (later Mobility Ventures MV-1; Mobility Ventures being an AM General subsidiary that took over VPG's assets after VPG went bankrupt). MV-1 was made from 2011-2016. |- |E||[[w:AM General#Hummer brand|AM General]] Military plant||[[w:Mishawaka, Indiana|Mishawaka, Indiana]]||United States||[[w:Hummer H1|Hummer H1]] (2000-2006)||1992 (civilian production)||2006 (civilian production)||Located at 13200 McKinley Highway. This plant built the military [[w:Humvee|Humvee]] from fall 1984 and civilian Hummers from 1992. In Dec. 1999, GM bought the rights to the Hummer brand from AM General. AM General still handled manufacturing but GM handled marketing and distribution. At this point, the AM General Hummer was renamed Hummer H1. H1 built under contract for GM by AM General. Humvee production for military use continued after 2006. |- |&nbsp;||Asoke Engineering (Asoke Motors)||Bangkok?||[[w:Thailand|Thailand]]||[[w:Bedford HA#The BTV|Plai Noi]]<br />[[w:Opel Rekord|Opel Rekord]]||Mid-1970s||Early-1980s||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Plai Noi was assembled in Thailand in 1974. |- |&nbsp;||Associated Industries Ltd.||[[w:Georgetown, Guyana|Georgetown]]||[[w:Guyana|Guyana]]||[[w:Bedford HA#The BTV|Tapir]]||Mid-1970's||Late-1970's||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Tapir was assembled in Guyana. |- |&nbsp;||Associated Motor Industries Ltd.||[[w:Jurong|Jurong]] (Jurong Industrial Estate)||[[w:Singapore|Singapore]]||[[w:Chevrolet Impala|Chevrolet Impala]]<br />[[w:Statesman (automobile)#HQ|Chevrolet 350]]<br />[[w:Vauxhall Motors|Vauxhall]] including: <br />[[w:Vauxhall Victor|Victor]]<br />[[w:Vauxhall Viva|Viva]]<br />[[w:Vauxhall VX4/90|VX4/90]]||1968||1975||Jointly owned by Wearne Brothers Limited & Motor Investments Bhd. Associated Motor Industries Ltd. assembled vehicles under license from GM beginning in 1968 as well as brands from other automakers (Austin, Morris, & Renault). |- |&nbsp;||Associated Motor Industries Malaysia Sdn. Bhd.||[[w:Batu Tiga|Batu Tiga]], [[w:Selangor|Selangor]]||[[w:Malaysia|Malaysia]]||[[w:Holden|Holden]]<br />||1968||1971 (?)||Associated Motor Industries Malaysia assembled Holden vehicles under license from GM beginning in 1968 as well as brands from other automakers. |- |C||[[w:Automobilwerk Eisenach|Automobilwerk Eisenach]] (AWE)||[[w:Eisenach|Eisenach]]||[[w:Germany|Germany]]||[[w:Opel Vectra#Vectra A (1988–1995)|Opel Vectra]] A<br />||1990||1991|| The old [[w:Wartburg (marque)|Wartburg]] plant built vehicles for Opel for a short time before closing permanently. |- |&nbsp;||[[w:Avtotor|Avtotor]]||[[w:Kaliningrad|Kaliningrad]]||[[w:Russia|Russia]]||[[w:Chevrolet Aveo (T200)|Chevrolet Aveo]], [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]], [[w:Chevrolet Epica|Chevrolet Epica]], [[w:Chevrolet Lacetti|Chevrolet Lacetti]], [[w:Chevrolet Malibu#Eighth generation (2013)|Chevrolet Malibu]], [[w:Chevrolet Orlando#First generation (J309; 2010)|Chevrolet Orlando]], [[w:Chevrolet Rezzo|Chevrolet Rezzo]], [[w:Chevrolet Tahoe#Second generation (2000) |Chevrolet Tahoe (GMT800)]], [[w:Chevrolet Tahoe#Third generation (2007)|Chevrolet Tahoe (GMT900)]], [[w:Chevrolet Trailblazer (SUV)#First generation (KC; 2001)|Chevrolet Trailblazer]], [[w:Cadillac BLS|Cadillac BLS]], [[w:Cadillac CTS|Cadillac CTS]], [[w:Cadillac Escalade#Second generation (2001)|Cadillac Escalade (GMT800)]], [[w:Cadillac Escalade#Third generation (2007)|Cadillac Escalade (GMT900)]], [[w:Cadillac SRX|Cadillac SRX]], [[w:Cadillac STS|Cadillac STS]], [[w:Hummer H2|Hummer H2]], [[w:Hummer H3|Hummer H3]], [[w:Opel Antara|Opel Antara]], [[w:Opel Astra|Opel Astra]], [[w:Opel Insignia|Opel Insignia]], [[w:Opel Mokka#First generation (J13; 2012)|Opel Mokka]], [[w:Opel Meriva|Opel Meriva]], [[w:Opel Zafira|Opel Zafira]]||2004||2015||Built under contract by [[w:Avtotor|Avtotor]] for GM. GM ended the contract in 2015. |- |&nbsp;||Azia Avto||[[w:Ust-Kamenogorsk|Ust-Kamenogorsk]]||[[w:Kazakhstan|Kazakhstan]]||[[w:Chevrolet Aveo (T200)|Chevrolet Aveo]], [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]], [[w:Chevrolet Cruze|Chevrolet Cruze]], [[w:Chevrolet Epica|Chevrolet Epica]], [[w:Chevrolet Lacetti|Chevrolet Lacetti]], [[w:Chevrolet Malibu#Eighth generation (2013)|Chevrolet Malibu]], [[w:Chevrolet Orlando#First generation (J309; 2010)|Chevrolet Orlando]], [[w:Chevrolet Trax|Chevrolet Tracker]]||2007||2018||Built under contract by Azia Avto for GM. |- |&nbsp;||[[w:Bangchan General Assembly|Bangchan General Assembly]] Co., Ltd.||[[w:Khan Na Yao district|Khan Na Yao district]], [[w:Bangkok|Bangkok]]||[[w:Thailand|Thailand]]||[[w:Opel Kadett|Opel Kadett]] <br />[[w:Opel Rekord|Opel Rekord]] <br />[[w:Holden Kingswood|Holden Monaro LS]]<br />[[w:Statesman (automobile)|Chevrolet De Ville]]||1970||1987 (?)||[[w:Isuzu|Isuzu]] invested in Bangchan in 1979 but then sold its stake to [[w:Honda|Honda]] in 1987. Phra Nakorn Automobile Group became sole owner of Bangchan in 2005. |- |B||[[w:Gruppo Bertone|Gruppo Bertone]]||[[w:Grugliasco|Grugliasco]]||[[w:Italy|Italy]]||[[w:Opel Kadett#Kadett E (1984–1995)|Opel Kadett E convertible]]<br />[[w:Vauxhall Astra#Second generation (1984–1993)|Vauxhall Astra Mark 2 convertible]]<br />[[w:Opel Astra#F|Opel/Vauxhall Astra F convertible]]<br />[[w:Opel Astra#G|Opel/Vauxhall Astra G coupe & convertible]]<br />[[w:Holden Astra#Fourth generation (TS; 1998)|Holden Astra convertible (TS)]] ||1987||2006||Built under contract by [[w:Gruppo Bertone|Gruppo Bertone]] for Opel/Vauxhall. |- |&nbsp;||Central African Transport Company (CATCO)||?||[[w:Malawi|Malawi]]||[[w:Bedford HA#The BTV|Zonse]]||Mid-1970's||?||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Zonse was assembled in Malawi. |- |&nbsp;||Centroamericana de Ensamblaje y Fabricación||(?)||[[w:Honduras|Honduras]]||[[w:El Compadre (car)|Compadre]]||1970s||(?)||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Compadre was assembled in Honduras. |- |&nbsp;||Champion Motors||[[w:Shah Alam|Shah Alam]], [[w:Selangor|Selangor]]||[[w:Malaysia|Malaysia]]||[[w:Chevrolet Impala|Chevrolet Impala]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Bedford Vehicles|Bedford trucks]] including [[w:Bedford TJ|Bedford TJ]]||1968||1982 (?)||Champion Motors assembled vehicles under license from GM beginning in 1968. Champion Motors was renamed Assembly Services Sdn. Bhd. (ASSB) in 1975. The last products still being built for GM were Bedford trucks. A joint venture of Toyota & [[w:UMW Holdings|UMW Holdings Bhd.]] called Sejati Motor took over ASSB in 1982 which was then renamed UMW Toyota Motor in 1987. |- |&nbsp;||Chinese Automobile Co., Ltd.||[[w:Xinzhuang District|Xinzhuang District]], [[w:New Taipei City|New Taipei City]]||[[w:Taiwan|Taiwan]]||[[w:Opel Astra|Opel Astra]] F & G<br />[[w:Opel Vectra#Vectra B (1995–2002)|Opel Vectra]] B ||1993||2000||GM ended the assembly contract in 2001. |- |&nbsp;||Fabrica Superior de Centro America S.A.||?||[[w:El Salvador|El Salvador]]||[[w:Bedford HA#The BTV|Cherito]]||1973||1975||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Cherito was assembled in El Salvador. It was distributed by Auto Palace. |- |&nbsp;||Fernandes Autohandel||?||[[w:Suriname|Suriname]]||[[w:Bedford HA#The BTV|Moetete]]||1973||1975||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Moetete was assembled in Suriname. |- |&nbsp;||[[w:GAZ|GAZ]]||[[w:Nizhny Novgorod|Nizhny Novgorod]]||[[w:Russia|Russia]]||[[w:Chevrolet Aveo#Second generation (T300; 2012)|Chevrolet Aveo]]||2013||2015||Built under contract by [[w:GAZ|GAZ]] for GM. GM ended the contract in 2015. |- |&nbsp;||Genoto (General Otomotiv Sanayi ve Ticaret AS)||[[w:Kozyatağı|Kozyatağı]], [[w:Istanbul|Istanbul]]||[[w:Turkey|Turkey]]||[[w:Bedford Vehicles|Bedford trucks]] including [[w:Bedford TK|Bedford TK]] (KG EJR & KBC 10 & 570)||1965||1986||Built Bedford trucks under license from GM, sometimes rebadged as Genoto. |- |E||[[w:Heuliez|Heuliez]]||[[w:Cerizay|Cerizay]]||[[w:France|France]]||[[w:Opel Tigra#Tigra TwinTop B (2004–2009)|Opel/Vauxhall Tigra TwinTop B]]<br />[[w:Opel Tigra#Tigra TwinTop B (2004–2009)|Holden Tigra (XC)]]||2004||2009||Built under contract by [[w:Heuliez|Heuliez]] for Opel/Vauxhall. |- |&nbsp;||[[w:Hindustan Motors|Hindustan Motors]]||[[w:Uttarpara|Uttarpara]], [[w:West Bengal|West Bengal]]||[[w:India|India]]||[[w:Vauxhall Motors|Vauxhall]] models under Hindustan name including [[w:Hindustan Contessa|Hindustan Contessa]] (based on [[w:Vauxhall Victor|Vauxhall Victor]])<br />[[w:Bedford Vehicles|Bedford]] models including [[w:Bedford TJ|Bedford TJ]]<br />[[w:Allison Transmission|Allison Transmission]]<br />[[w:Terex|Terex]]||1957 (?)||2004||Built under license by [[w:Hindustan Motors|Hindustan Motors]]. |- |&nbsp;||INDEVESA, S.A. (Industrias Nicaraguenses De Vehiculos SA)||(?)||[[w:Nicaragua|Nicaragua]]||[[w:Bedford HA#The BTV|Pinolero]]||1974||(?)||The Nicaraguan state-owned company produced a version of GM's BTV called the Pinolero. |- |&nbsp;||Industrias Superior||[[w:Guatemala City|Guatemala City]]||[[w:Guatemala|Guatemala]]||[[w:Bedford HA#The BTV|Chato]]||1977||1970's||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Chato was assembled in Guatemala. It was distributed by CIDEA. |- |3||[[w:Isuzu|Isuzu]] Kawasaki plant||[[w:Kawasaki, Kanagawa|Kawasaki, Kanagawa]]||[[w:Japan|Japan]]||[[w:Chevrolet W-Series|Chevrolet W-Series]] (1984-1998)<br />[[w:GMC W-Series|GMC W-Series]] (1984-1998)<br />[[w:Isuzu N-Series|Isuzu N-Series]] (1987-1994)<br />[[w:Isuzu F-Series|Isuzu F-Series]] (1995-98 FRR, 1989-96 FSR, 1992-96 FTR/FVR)||1938||2005||[[w:Isuzu|Isuzu]] plant. Closed 2005. |- |H<br />(WMI: MPA)||[[w:Isuzu Motors (Thailand)|Isuzu Motors Co., (Thailand) Ltd.]] (IMCT)||Samrong Tai, [[w:Phra Pradaeng district|Phra Pradaeng district]], [[w:Samut Prakan province|Samut Prakan province]]||[[w:Thailand|Thailand]]||[[w:Holden Rodeo|Holden Rodeo (RA)]]||2003||2008||Rebadged Isuzu D-Max produced by Isuzu Thailand for GM Holden in Australia and New Zealand. Replaced by the updated and renamed Holden Colorado, which was made by GM Thailand rather than Isuzu Thailand. The model name was changed because after GM sold the last of its shares in Isuzu in 2006, GM Holden lost the right to use the Rodeo name, which was owned by Isuzu, during 2008. |- |9||[[w:KUKA|KUKA]]||[[w:Livonia, Michigan|Livonia]], [[w:Michigan|Michigan]]||United States||[[w:BrightDrop Zevo 600|BrightDrop Zevo 600]] (2022)||2021||2022||Produced under contract for GM in a limited run of less than 500 units. A temporary measure until GM's CAMI plant is ready to start building BrightDrop electric vans. |- |&nbsp;||[[w:Lilpop, Rau i Loewenstein|Lilpop, Rau and Loewenstein (LRL)]]||[[w:Warsaw|Warsaw]]||[[w:Poland|Poland]]||[[w:Chevrolet|Chevrolet]] cars, trucks, and buses<br />[[w:Buick|Buick]]<br />[[w:Opel|Opel]]||1937||1939||Was located at Bema Street. Lilpop, Rau and Loewenstein was a GM distributor who also assembled vehicles from CKD kits under license from GM until the German invasion that began World War II interrupted production. The Germans took over the factory during the war and the company was nationalized by the Communist Polish govt. after the war. |- |N (Opel Speedster &<br />Vauxhall VX220)<br /><br />H (Lotus models)||[[w:Lotus Cars|Lotus Cars]]||[[w:RAF Hethel|RAF Hethel]], [[w: Hethel|Hethel]], [[w:Norfolk|Norfolk]], [[w:England|England]]||[[w:United Kingdom|United Kingdom]]|| [[w:Opel Speedster|Opel Speedster]]/[[w:Vauxhall VX220|Vauxhall VX220]] (2001-2006) 7,207 units [[w:Lotus Elise|Lotus Elise]]<br />[[w:Lotus Exige|Lotus Exige]] ||2000||2005||GM owned Lotus from 1986-1993. GM sold Lotus in 1993 to A.C.B.N. Holdings S.A. of Luxembourg, a company controlled by Italian businessman Romano Artioli, who also owned Bugatti Automobili SpA. Artioli sold Lotus to Malaysian automaker [[w:Proton Holdings|Proton]] in 1996. The Opel Speedster & Vauxhall VX220 were built under contract for GM by Lotus after GM had sold Lotus. The Opel Speedster & Vauxhall VX220 were based on the Lotus Elise. |- |6||[[w:Magna Steyr|Magna Steyr]]||[[w:Graz|Graz]]||[[w:Austria|Austria]]||[[w:Saab 9-3#Second generation (2003–2014)|Saab 9-3 Convertible]] (2004-2010)||2003||2009||Built under contract by [[w:Magna Steyr|Magna Steyr]] for GM-owned Saab Automobile AB. 9-3 Convertible production was moved to Saab's own plant in Trollhattan, Sweden in January 2010. |- |&nbsp;||[[w:de:McCairns Motors|McCairns Motors Ltd.]]||[[w:Dublin Docklands|Dublin Docklands]], [[w:Dublin|Dublin]] and [[w:Santry|Santry]]||[[w:Republic of Ireland|Republic of Ireland]]||[[w:Vauxhall Cresta|Vauxhall Cresta]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Bedford Vehicles|Bedford trucks]]<br />[[w:Chevrolet Bel Air|Chevrolet Bel Air]]||1935||1975||McCairns Motors was the local assembler and distributor for Vauxhall and Bedford in Ireland. Assembly began at Dublin Port on Alexandra Road in November 1935. In 1951, car assembly moved to a larger plant in Santry. McCairns also assembled and sold other brands like Simca, Alfa Romeo, and Mitsubishi Fuso. Production ended due to Ireland joining the European Economic Community in 1973 and the end of tariffs on imports of completely built-up vehicles. This removed the need for local assembly in Ireland. McCairns Motors used the site in Santry until 1987. The Omni Park shopping center now stands where the assembly plant in Santry used to be. |- |&nbsp;||[[w:Mercury Marine|Mercury Marine]]||[[w:Stillwater, Oklahoma|Stillwater, Oklahoma]]||United States||[[w:Chevrolet small-block engine (first and second generation)#LT5|5.7L LT5 DOHC V8 engine]] (For 1990-1995 C4 Chevrolet Corvette ZR-1)||1989||1993||Engine was built for GM by Mercury Marine at their existing MerCruiser marine engine plant in Stillwater. 21,000 square feet of the 650,000 square foot plant was partitioned from the rest of the plant for assembly of this engine. LT5 engine production actually ended in 1993. Extra engines were built to be sufficient for Corvette ZR-1 production through 1995. The extra engines were sealed and crated for long-term storage and were shipped to the Corvette plant in Bowling Green, Kentucky and stored there until they were needed for installation in a '94 or '95 Corvette ZR-1. <br> Plant was located at 3003 N Perkins Rd. Closed in December 2011. Sold in 2012 to Belgium-based aerospace supplier Asco Industries. |- |&nbsp;||Neal and Massy Industries Ltd.||[[w:Morvant|Morvant]]<br /> later moved to <br />[[w:Arima|Arima]]||[[w:Trinidad and Tobago|Trinidad and Tobago]]||[[w:Holden Commodore#First generation (1978–1988)|Holden Commodore]]<br />[[w:Holden Kingswood|Holden Kingswood]]<br />[[w:Statesman (automobile)|Chevrolet Caprice (rebadged Statesman DeVille)]]<br />[[w:Opel Rekord Series C|Opel Rekord]]<br />[[w:Vauxhall Cresta|Vauxhall Cresta]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Bedford Vehicles|Bedford trucks]]||1966||1994 (Production for GM may have ended earlier)||Built under license by Neal and Massy for GM. Neal and Massy also assembled vehicles for Datsun (Nissan) and Mazda. Assembly operation closed in 1994. Neal and Massy (now called Massy Motors) still operates as an importer/distributor for several non-GM automotive brands. |- |&nbsp;||[[w:Nexus Automotive|Nexus Automotive (Pvt.) Ltd.]]||[[w:Port Qasim|Port Qasim]], [[w:Karachi|Karachi]], [[w:Sindh|Sindh province]]||[[w:Pakistan|Pakistan]]||[[w:Chevrolet Spark#Asia|Chevrolet Joy]]||2005||2006||Nexus Automotive was a GM licensed assembler and distributor. Built under contract for [[w:Nexus Automotive|Nexus Automotive]] by [[w:Ghandhara Nissan|Ghandhara Nissan]] at a plant with spare capacity. |- |K||[[w:Nissan USA#Manufacturing|Nissan Mexicana]]||[[w:Cuernavaca|Cuernavaca]]||[[w:Mexico|Mexico]]||[[w:Chevrolet City Express|Chevrolet City Express]] (2015-2018)<br />[[w:Nissan NV200|Nissan NV200]] (2013-2021)||2014||2018||Nissan plant. Chevrolet City Express is a rebadged Nissan NV200 made for GM by Nissan. Chevrolet <br> City Express discontinued after 2018. NV200 discontinued in North America after 2021. |- |&nbsp;||[[w:Nissan Motor Australia|Nissan Motor Australia]] Clayton plant||[[w:Clayton South, Victoria|Clayton South]], [[w:Victoria (state)|Victoria]]||[[w:Australia|Australia]]||[[w:Holden Astra#First generation (LB, LC; 1984–1987)|Holden Astra (LB/LC)]]<br />[[w:Nissan Pulsar#N12 (1982)|Nissan Pulsar (N12)]]<br />[[w:Holden Astra#Second generation (LD; 1987–1989)|Holden Astra (LD)]]<br />[[w:Nissan Pulsar#N13 (1986)|Nissan Pulsar (N13)]]||1984 (GM prod.)||1989 (GM prod.)|| Production for GM Holden at Nissan's Australian plant was done as part of the Australian government's [[w:Button car plan|Button car plan]] for rationalization of local automotive production. The relationship ended in 1989 and GM Holden established a joint venture with Toyota called [[w:United Australian Automobile Industries|United Australian Automobile Industries]] to replace the Nissan relationship. The Nissan Pulsar-based Holden Astra was replaced by the Toyota Corolla-based Holden Nova. Nissan closed its Australian vehicle assembly plant in 1992. The Clayton plant was later taken over by HSV and the Walkinshaw Group. |- |Y||[[w:Nissan Motor Ibérica|Nissan Motor Ibérica]]||[[w:Barcelona|Barcelona]]||[[w:Spain|Spain]]||[[w:Opel Vivaro A|Opel/Vauxhall Vivaro A]] (high roof versions only)<br />[[w:Renault Trafic#Second generation (X83; 2001)|Renault Trafic]] (high roof versions only)<br />[[w:Renault Trafic#Second generation (X83; 2001)|Nissan Primastar]] (high roof versions only)||2001||2015||This is a Nissan plant that built high roof versions of Renault-designed midsize vans for Opel/Vauxhall as part of a supply deal between GM Europe & Renault as well as for Renault and Nissan. The low roof versions were made by Vauxhall at the IBC Vehicles/GMM Luton plant however that UK plant could not fit the high roof versions so they were built by Nissan in Spain. Van production in Barcelona ended in 2015 and high roof Opel/Vauxhall Vivaro production was moved to Renault's plant in Sandouville, France, which also handled all Renault Trafic and Nissan NV300 (Primastar replacement) production. Nissan closed this plant in Dec. 2021. |- |&nbsp;||[[w:de:O’Shea’s Limited (Opel)|O’Shea’s Limited]]||[[w:Cork (city)|Cork]], [[w:Munster|Munster]]||[[w:Republic of Ireland|Republic of Ireland]]||[[w:Opel|Opel]] cars including [[w:Opel Rekord|Rekord]]||1937||1965|| Before 1962, O’Shea’s was the sole Opel assembler and distributor in Ireland. From 1962-1965, assembly and distribution of Opels in Ireland was split between Reg Armstrong Motors and O’Shea’s Limited. After 1965, Reg Armstrong Motors was the sole Opel assembler and distributor in Ireland. |- |&nbsp;||PT. Pantja Motor||[[w:Sunter, Jakarta|Sunter]], [[w:North Jakarta|North Jakarta]], [[w:Jakarta|Jakarta]]||[[w:Indonesia|Indonesia]]||[[w:Chevrolet Tavera|Chevrolet Tavera]]||2001||2005||Isuzu's Indonesian assembler, now known as [[w:Isuzu Astra Motor Indonesia|Isuzu Astra Motor Indonesia]]. Built the Isuzu Panther-based Tavera for GM Indonesia. |- |&nbsp;||[[w:Pininfarina|Pininfarina]]||[[w:Grugliasco|Grugliasco]]||[[w:Italy|Italy]]||[[w:Cadillac Eldorado#1959–60 Eldorado Brougham|Cadillac Eldorado Brougham (Series 6900)]] (1959-1960) painted bodies||1959||1960||Bodies were built by [[w:Pininfarina|Pininfarina]] and mated with chassis shipped to Italy by Cadillac and then shipped back to the US. |- |&nbsp;||[[w:Pininfarina|Pininfarina]]||[[w:San Giorgio Canavese|San Giorgio Canavese]]||[[w:Italy|Italy]]||[[w:Cadillac Allanté|Cadillac Allanté]] (1987-1993) painted bodies||1986||1993||Bodies were designed and manufactured under contract by [[w:Pininfarina|Pininfarina]] for Cadillac. Plant was built specially for the Allanté. Bodies were then flown from Turin, Italy to Detroit on specially equipped Boeing 747s and then trucked to GM's Detroit/Hamtramck Assembly Plant for final assembly. The assembly process was known as the "Allanté Air Bridge". It was also referred to as "the world's longest assembly line." |- |&nbsp;||[[w:Pragoti|Pragoti Industries Ltd.]]||[[w:Sitakunda|Sitakunda]], [[w:Chittagong Division|Chittagong Division]]||[[w:Bangladesh|Bangladesh]]||[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Bedford Vehicles|Bedford trucks and buses]]<br />[[w:Bedford HA#The BTV|BTV]]||1966||1970's||Began as part of [[w:Ghandhara Industries|Ghandhara Industries]] Ltd. in 1966 when Bangladesh was still [[w:East Pakistan|East Pakistan]] and assembled GM vehicles like the Ghandhara plant in Karachi did. After Bangladesh became independent in 1971, the operation was nationalized by the new government and became Pragoti Industries Ltd. |- |&nbsp;||[[w:de:Reg. Armstrong Motors|Reg Armstrong Motors Ltd.]]||[[w:Ringsend|Ringsend]], [[w:Dublin|Dublin]]||[[w:Republic of Ireland|Republic of Ireland]]||[[w:Opel|Opel]] cars including [[w:Opel Kadett|Kadett]], [[w:Opel Rekord|Rekord]], and [[w:Opel Commodore|Commodore]]||1962||1974||From 1962-1965, assembly and distribution of Opels in Ireland was split between Reg Armstrong Motors and O’Shea’s Limited. After 1965, Reg Armstrong Motors was the sole Opel assembler and distributor in Ireland. Reg Armstrong Motors also assembled the [[w:NSU Prinz|NSU Prinz]], [[w:Honda motorcycles|Honda motorcycles]], and from 1976-1978, the original [[w:Mini|Mini]] at the Ringsend plant. Production ended due to Ireland joining the European Economic Community in 1973 and the end of tariffs on imports of completely built-up vehicles. This removed the need for local assembly in Ireland. |- |B (GM)||[[w:Société de Véhicules Automobiles de Batilly|Renault Batilly]]||[[w:Batilly, Meurthe-et-Moselle|Batilly]]||[[w:France|France]]||[[w:Renault Trafic#First generation (1980)|Opel/Vauxhall Arena]]<br />[[w:Renault Trafic#First generation (1980)|Renault Trafic]]<br />[[w:Renault Master#Second generation (1997)|Opel/Vauxhall Movano A]]<br />[[w:Renault Master#Third generation (2010)|Opel/Vauxhall Movano B]]<br />[[w:Renault Master|Renault Master]]<br />[[w:Renault Master#Renault Mascott|Renault Trucks Mascott]]<br />[[w:Nissan Interstar|Nissan Interstar]]<br />[[w:Nissan NV400|Nissan NV400]]||1997||2017||Renault-[[w:Société de Véhicules Automobiles de Batilly|SOVAB]] plant. Opel/Vauxhall was sold to [[w:PSA Group|PSA Group]] in 2017. As part of PSA Group, Opel/Vauxhall became part of [[w:Stellantis|Stellantis]] in 2021. Movano switched to being PSA/Fiat-based instead of Renault-based in 2021. |- |S (GM)||[[w:Sandouville Renault Factory|Renault Sandouville]]||[[w:Sandouville|Sandouville]]||[[w:France|France]]||[[w:Renault Trafic#Third generation (X82; 2014)|Opel/Vauxhall Vivaro]] B (high roof versions only) <br />[[w:Renault Trafic#Third generation (X82; 2014)|Renault Trafic]]<br />[[w:Nissan NV300|Nissan NV300]]<br />[[w:Renault Trafic#Third generation (X82; 2014)|Nissan Primastar]]<br />[[w:Renault Trafic#Third generation (X82; 2014)|Fiat Talento]]||2014||2017||Renault plant. Opel/Vauxhall was sold to [[w:PSA Group|PSA Group]] in 2017. Vivaro switched to being PSA-based instead of Renault-based in 2018. As part of PSA Group, Opel/Vauxhall became part of [[w:Stellantis|Stellantis]] in 2021. |- |&nbsp;||[[w:Renault Argentina|Renault Santa Isabel]]||[[w:Santa Isabel, Córdoba|Santa Isabel]], [[w:Córdoba Province, Argentina|Cordoba]]||[[w:Argentina|Argentina]]||[[w:Chevrolet D-20|Chevrolet C-20 & D-20]]<br />[[w:Chevrolet Tahoe#First generation (1992)|Chevrolet Grand Blazer]] (GMT400)<br />[[w:Chevrolet C/K#1997–2001|Chevrolet Silverado]] (GMT400)<br />[[w:Renault Trafic#South America|Chevrolet Trafic/SpaceVan]] ||1991||2002||[[w:Renault Argentina|Renault Argentina]]-CIADEA plant. Built Chevrolets under license for GM. |- |&nbsp;||[[w:Sevel Argentina|Sevel Argentina]]||[[w:Córdoba, Argentina|Estación Ferreyra, Córdoba]], [[w:Córdoba Province, Argentina|Cordoba]]||[[w:Argentina|Argentina]]||[[w:Chevrolet D-20|Chevrolet C-20/D-20]]||1985||1991||Fiat - PSA jointly owned plant. Built Chevrolets under license for GM. |- |For Saab<br> 9-2X:<br> G (w/man. trans.),<br> H (w/auto. trans.)||[[w:Subaru#Manufacturing facilities|Subaru Main Plant]]||[[w:Ōta, Gunma|Ōta, Gunma]]||[[w:Japan|Japan]]||[[w:Saab 9-2X|Saab 9-2X]] (2005-2006)<br />[[w:Subaru Forester#Second generation (SG; 2002)|Chevrolet Forester (India)]] (2003-2007)||2003 (GM prod.)||2007 (GM prod.)||[[w:Subaru|Subaru]] plant |- |4||[[w:Subaru-Isuzu Automotive|Subaru-Isuzu Automotive]] (S.I.A.)||[[w:Lafayette, Indiana|Lafayette, Indiana]]||United States||[[w:Holden Frontera#Second generation (1998)|Holden Frontera]] (UE/MX)||1999 (GM prod.)||2003 (GM prod.)||Subaru & Isuzu joint venture plant. Isuzu built a rebadged, rhd version of the 2nd generation US market Isuzu Rodeo & Amigo SUVs for export to GM Holden in Australia and New Zealand. |- |W (GM),<br />4 (Suzuki)||Suzuki Iwata Assembly||[[w:Iwata, Shizuoka|Iwata, Shizuoka]]||[[w:Japan|Japan]]||[[w:Chevrolet Tracker (Americas)#First generation|Geo Tracker]] (US: 1989-1990)<br />[[w:Suzuki Sidekick|Suzuki Sidekick]] (US: 1989-1995, 1997-98)<br />[[w:Suzuki Sidekick|Suzuki Sidekick Sport]] (US: 1996-1998)<br />[[w:Suzuki Grand Vitara|Suzuki Grand Vitara]] (1999-2013)<br />[[w:Suzuki XL-7#First generation (XL-7; 1998)|Suzuki XL-7]] (2001-2006)<br />[[w:Holden Drover#Second generation (1981)|Holden Drover (QB)]]<br />[[w:Holden Scurry#Eighth generation (DA71/DB71/DA81/DA41/DB41/DA51/DB51; 1985)|Holden Scurry (NB)]]||1985 (GM prod.)||1990 (GM prod.)||[[w:Suzuki|Suzuki]] plant |- |K (GM),<br />5 (Suzuki)||Suzuki Kosai Assembly||[[w:Kosai, Shizuoka|Kosai, Shizuoka]]||[[w:Japan|Japan]]||[[w:Chevrolet Sprint|Chevrolet Sprint]] (US: 1985-1988)<br />[[w:Geo Metro|Geo Metro]] (US: 1989-1993)<br />[[w:Pontiac Firefly|Pontiac Firefly]] (Canada)<br />[[w:Holden Barina#First generation (MB, ML; 1985–1988)|Holden Barina (MB/ML)]]<br />[[w:Holden Barina#Second generation (MF, MH; 1989–1994|Holden Barina (MF/MH)]]<br />[[w:Suzuki Cultus|Suzuki Swift]] (US: 1989-1994)<br />[[w:Suzuki Ignis#Chevrolet Cruze|Chevrolet/Holden Cruze (YGM1)]] (YG) ||1984 (GM prod.)||2008 (GM prod.)||[[w:Suzuki|Suzuki]] plant |- |M (GM),<br />0 (Suzuki/Fiat/Subaru)||[[w:Magyar Suzuki Corporation|Magyar Suzuki Corporation]]||[[w:Esztergom|Esztergom]]||[[w:Hungary|Hungary]]||[[w:Opel Agila#Second generation (H08; 2007)|Opel/Vauxhall Agila B]]<br />[[w:Suzuki Splash|Suzuki Splash]]<br />[[w:Suzuki Swift|Suzuki Swift]]<br />[[w:Suzuki Cultus#Second generation (1988)|Subaru Justy]]<br />[[w:Suzuki SX4|Suzuki SX4]]<br />[[w:Fiat Sedici|Fiat Sedici]]<br />[[w:Suzuki Ignis#Suzuki Ignis (2003 facelift)|Suzuki Ignis]]<br />[[w:Suzuki Ignis#Suzuki Ignis (2003 facelift)|Subaru G3X Justy]]||1992<br /><br />2007 (GM prod.)||2014 (GM prod.)||[[w:Suzuki|Suzuki]] plant |- |&nbsp;||Suzuki Sagara Assembly & Engine||[[w:Makinohara|Makinohara]], [[w:Shizuoka Prefecture|Shizuoka Prefecture]]||[[w:Japan|Japan]]||[[w:Chevrolet MW|Chevrolet MW]] (sold in Japan)<br />||2000||2010||[[w:Suzuki|Suzuki]] plant.<br /> Also built the 3.6-liter GM High Feature V6 engine ([[w:GM High Feature engine#LY7|Suzuki N36A]]) to power the [[w:Suzuki XL-7#Second generation (XL7; 2006)|2nd generation Suzuki XL7]] under license from GM. (Note: Dates reflect beginning & end dates of production for GM.) |- |&nbsp;||Tecna SA||[[w:Arica, Chile|Arica]]||[[w:Chile|Chile]]||[[w:Acadian (automobile)|Acadian]] (1962-71 from CKD kits supplied by GM Oshawa and Willow Run)<br />[[w:Beaumont (automobile)|Acadian Beaumont]] (1964-71 from CKD kits supplied by GM Oshawa)<br />[[w:Vauxhall Victor|Vauxhall Victor]]||1962||1971|| |- |&nbsp;||Tecno S.A.||[[w:Uruca|La Uruca]], [[w:San José, Costa Rica|San José]]||[[w:Costa Rica|Costa Rica]]||[[w:Bedford HA#The BTV|GM Amigo]]||1970s||(?)||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Amigo was assembled in Costa Rica. |- |&nbsp;||Tecnomotor S.A.||(?)||[[w:Paraguay|Paraguay]]||[[w:Bedford HA#The BTV|GM Mitai]]||1970s||(?)||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Mitai was assembled in Paraguay. |- |9 (GM),<br />6 (Fiat & Ram)||[[w:Tofaş|Tofaş]]||[[w:Bursa|Bursa]]||[[w:Turkey|Turkey]]||[[w:Opel Combo#Combo D (2012-2018)|Opel/Vauxhall Combo D]]<br />[[w:Fiat Doblo|Fiat Doblo]]<br />[[w:Ram ProMaster City|Ram ProMaster City]]||2011||2017||[[w:Fiat|Fiat]] plant (joint venture with Koç Holding of Turkey). Opel/Vauxhall was sold to PSA Group in 2017. Combo switched to being PSA-based instead of Fiat-based in 2019. As part of PSA Group, Opel/Vauxhall became part of Stellantis in 2021. Fiat and Tofaş also became part of Stellantis in 2021. |- |&nbsp;||[[w:Toyota Australia|Toyota Australia]] [[w:Toyota Australia Altona Plant|Altona plant]]||[[w:Altona North|Altona North]], [[w:Victoria (state)|Victoria]]||[[w:Australia|Australia]]||[[w:Holden Nova#Second generation (LG; 1994–1996)|Holden Nova (LG)]]<br />[[w:Toyota Corolla (E100)|Toyota Corolla (E100)]]<br />[[w:Holden Apollo|Holden Apollo (JM/JP)]]<br />[[w:Toyota Camry (XV10)|Toyota Camry (XV10)]]||1994||1996 (GM prod.)|| Production for GM Holden at Toyota's Australian plant was done as part of [[w:United Australian Automobile Industries|United Australian Automobile Industries]], a model sharing joint venture in Australia between Holden and Toyota from 1987-1996. This was created as part of the Australian government's [[w:Button car plan|Button car plan]] for rationalization of local automotive production. Toyota consolidated its Australian production at the new Altona plant in 1994-1995. The joint venture dissolved in 1996 and Holden's rebadged Toyotas were replaced with rebadged Opel models (Astra and Vectra) from GM Europe. Corolla production in Australia ended in 1999. Toyota closed the Altona plant in 2017. |- |&nbsp;||[[w:Toyota Australia|Toyota Australia]] Port Melbourne plant||[[w:Port Melbourne|Port Melbourne]], [[w:Victoria (state)|Victoria]]||[[w:Australia|Australia]]||[[w:Holden Apollo|Holden Apollo (JK/JL)]]<br />[[w:Toyota Camry#V20 (1986–1992)|Toyota Camry (V20)]]<br />[[w:Holden Apollo|Holden Apollo (JM)]]<br />[[w:Toyota Camry (XV10)|Toyota Camry (XV10)]]||1989 (GM prod.)||1994 (GM prod.)|| Production for GM Holden at Toyota's Australian plant was done as part of [[w:United Australian Automobile Industries|United Australian Automobile Industries]], a model sharing joint venture in Australia between Holden and Toyota from 1987-1996. This was created as part of the Australian government's [[w:Button car plan|Button car plan]] for rationalization of local automotive production. Toyota consolidated its Australian production at the new Altona plant in 1994-1995 and production ended at the older Port Melbourne plant in late 1994. The joint venture would later dissolve in 1996 and Holden's rebadged Toyota Camry was replaced with a rebadged Opel Vectra from GM Europe. |- |&nbsp;||PT. Udatin (Usaha Dagang Teknik Indonesia)||[[w:Surabaya|Surabaya]], [[w:East Java|East Java]]||[[w:Indonesia|Indonesia]]||[[w:Holden FC|Holden FC]]<br />[[w:Holden FB|Holden FB]]<br />[[w:Holden EK|Holden EK]]<br />[[w:Holden EJ|Holden EJ]]<br />[[w:Holden EH|Holden EH]]<br />[[w:Holden HQ|Holden HQ]]<br />[[w:Holden HJ|Holden HJ]]<br />[[w:Holden HX|Holden HX]]<br />[[w:Holden HZ|Holden HZ]]<br />[[w:Statesman (automobile)|Statesman brand HQ-HZ]]<br />[[w:Holden Monaro|Holden Monaro]] HQ<br />[[w:Holden Torana|Holden Torana]] LJ, LH, LX<br /> [[w:Holden Gemini#First generation|Holden Gemini TX, TC, TD, TE, TF, TG]]<br />[[w:Holden Camira|Holden Camira]] JB<br />[[w:Isuzu Aska#South-East Asia and New Zealand|Holden Aska]]<br />[[w:Holden Gemini#Second generation|Holden Gemini (RB)]]<br />[[w:Holden Commodore (VB)|Holden Commodore (VB)]]<br />[[w:Holden Commodore (VC)|Holden Commodore (VC)]]<br />[[w:Holden Commodore (VH)|Holden Commodore (VH)]]<br />[[w:Holden Commodore (VK)|Holden Commodore (VK)]]<br />[[w:Holden Commodore (VL)|Holden Calais (VL)]]<br />[[w:Isuzu Faster#Second generation (1980–1988)|Holden Lincah/Raider]]<br />[[w:GMC (automobile)|GMC trucks]]||1959||1988||Built vehicles under contract for GM. During the 1960's, production was off and on due to Indonesian government policies and the economic situation. Production ended in 1988. |- |&nbsp;||Unison||[[w:Minsk|Minsk]]||[[w:Belarus|Belarus]]||[[w:Chevrolet Tahoe#Fourth generation (2015)|Chevrolet Tahoe]] K2XX, [[w:Chevrolet Trax|Chevrolet Tracker]], [[w:Cadillac Escalade#Fourth generation (2015)|Cadillac Escalade]] K2XX, [[w:Opel Mokka#First generation (J13; 2012)|Opel Mokka]]||2015||2018||Built under contract by Unison for GM. Production ended in 2018. |- |6,7 (Saab)<br />9 (Opel/Vauxhall)||[[w:Valmet Automotive|Valmet Automotive]]||[[w:Uusikaupunki|Uusikaupunki]]||[[w:Finland|Finland]]||[[w:Saab 9-3#First generation (1998–2003)|Saab 9-3 Convertible & 9-3 Viggen]]<br />[[w:Saab 900|Saab 900]] (including 900 Convertible)<br />[[w:Opel Calibra|Opel/Vauxhall Calibra]]||1969||2003||Built under contract by [[w:Valmet Automotive|Valmet Automotive]] for Saab & for Opel/Vauxhall. Saab-Valmet was established in 1968 as a joint venture between Valmet and Saab-Scania. In 1992, Valmet became the sole owner, and the company was renamed Valmet Automotive in 1995. |- |X||[[w:ZAZ|ZAZ]]||[[w:Zaporizhia|Zaporizhia]] & [[w:Illichivsk|Illichivsk]]||[[w:Ukraine|Ukraine]]||[[w:Chevrolet Aveo (T200)|Chevrolet Aveo]], [[w:Chevrolet Lacetti|Chevrolet Lacetti]], [[w:Chevrolet Lanos|Chevrolet Lanos]], [[w:Opel Astra#G|Opel Astra Classic]], [[w:Opel Astra#H|Opel Astra]], [[w:Opel Corsa|Opel Corsa]], [[w:Opel Combo|Opel Combo]], [[w:Opel Meriva|Opel Meriva]], [[w:Opel Vectra|Opel Vectra]], [[w:Opel Zafira|Opel Zafira]]||2003||2012||Built under contract by [[w:ZAZ|ZAZ]] for GM. |- |} 50ez7my49nqj08373rbte9cxavlrmok 4656690 4656663 2026-08-07T19:08:29Z JustTheFacts33 3434282 /* Current factories */ 4656690 wikitext text/x-wiki This is a '''history of [[w:General Motors|General Motors]] factories''' that are being or have been used to produce cars, vans, SUVs, trucks, buses, and automobile components.<ref name=GMfacilities>[https://web.archive.org/web/20080614231130/http://www.gm.com/corporate/responsibility/environment/plants/index.jsp GM facilities map]. Retrieved on July 8, 2009.</ref> The factories are sometimes idled for re-tooling. Originally, GM's different divisions each had their own serial number formats and plant codes. Chevrolet cars, Pontiac, Oldsmobile, and Buick unified their serial number formats and plant codes in 1965. Cadillac adopted the same unified format in 1971. Chevrolet trucks and GMC trucks unified their serial number formats in 1972. Chevrolet trucks and GMC trucks were already using the same plant codes from 1964 and those were unified with the car divisions (other than Cadillac) in 1965. Cadillac did not use plant codes before 1971 as all Cadillacs were made at Cadillac's home plant in Detroit until 1971. In 1971, Cadillacs began to be made in more than one plant so they started using plant codes, using the same codes that the other GM car divisions were using since 1965. GM Canada used the same format as GM USA from 1967. For US-built models: For '''Chevrolet cars including El Camino''': Plant code was the 1st or 1st 2 digits of the serial number from 1928-1952. Plant code was the 4th position of the serial number from 1953-1957 6-cylinder models. Plant code was the 5th position of the serial number from 1955-1957 V8 models. Plant code was the 4th position of the serial number from 1958-1959. Plant code was the 6th position of the serial number from 1960-1964. Plant code was the letter or number in the 7th position of the serial number from 1965-1980. For '''Chevrolet trucks''': Plant code was the 1st or 1st 2 digits of the serial number from 1947-1952. Plant code was the 4th position of the serial number from 1953-1954 & for the 1955 1st Series models. Plant code was the 5th position of the serial number for 1955 2nd Series models and 1956-1959 models with 6-cylinder engines. Plant code was the 6th position of the serial number for 1955 2nd Series models and 1956-1959 models with V8 engines. Plant code was the 6th position of the serial number from 1960-1971. Plant code was the letter or number in the 7th position of the serial number from 1972-1980. For '''Pontiac''': Plant code was the 1st letter in the serial number from 1936-1938 for plants other than Pontiac, MI (Pontiac, MI omitted the 1st letter so the 1st position was a number rather than a letter for Pontiac, MI as Pontiac, MI didn't use a specific plant code). Plant code was the 1st position of the serial number from 1939-1958. Plant code was the 4th position of the serial number from 1959-1964. Plant code was the letter or number in the 7th position of the serial number from 1965-1980. For '''Oldsmobile''': Plant code was the 1st of 2 letters in the serial number from 1937-1940 for plants other than Lansing (Lansing omitted the 1st letter so there was only 1 letter before the numbers rather than 2 letters for Linden & Southgate as Lansing didn't have a specific plant code). Plant code was the letter in the 3rd position of the serial number from 1941-1948 for plants other than Lansing (Lansing omitted the letter and didn't have a specific plant code). Plant code was the 4th position of the serial number from 1949-1964. Plant code was the letter or number in the 7th position of the serial number from 1965-1980. For '''Buick''': Plant code was the number in the 1st position of the serial number from 1938-1953. Plant code was the number in the 3rd position of the serial number from 1954-1964. Plant code was the letter or number in the 7th position of the serial number from 1965-1980. For '''Cadillac''': Plant code was the letter or number in the 7th position of the serial number from 1971-1980. (Cadillac did not use plant codes before 1971 as all Cadillacs were made at Cadillac's home plant in Detroit until 1971.) For '''GMC Sprint & Caballero''': Plant code was the letter or number in the 7th position of the serial number from 1971-1980. For '''GMC trucks''': Plant code was the 6th position of the serial number from 1952-1954 & for 1955 1st Series models with manual transmission. Plant code was the 7th position of the serial number from 1952-1954 & for 1955 1st Series models with automatic transmission. Plant code was the 4th position of the serial number for 1955 2nd Series models and 1956-1959 models with 6-cylinder engines. Plant code was the 5th position of the serial number for 1955 2nd Series models and 1956-1959 models with V8 engines. Plant code was the 5th position of the serial number for 1960-1966 models with 2wd and V6 or V8 engines. Plant code was the 6th position of the serial number for 1960-1966 models with inline-6 engines or with 4wd. Plant code was the 7th position of the serial number from 1967-1971 (most models had a dash in the 6th position except for some models that had a special designation indicated in the 6th position). Plant code was the letter or number in the 7th position of the serial number from 1972-1980. All models from 1981 on have the plant code in the 11th position as per standardized VIN regulations. The above applies to Canadian-built models from 1967 on. ==Current factories== {| class="wikitable sortable" style="font-size:90%" !VIN !! Name !! City/State !! Country !! class="unsortable" | Products !! Opened !! Idled !! class="unsortable" | Comments |- |R (1963-1964 [[w:Chevrolet|Chevrolet]] and 1965-present)<br /><br />T (Pre-1965 [[w:Oldsmobile|Oldsmobile]] and Pre-1960 [[w:Pontiac (automobile)|Pontiac]])<br /><br />A (1960-1964 [[w:Pontiac (automobile)|Pontiac]])<br /><br />8 (Pre-1964 [[w:Buick|Buick]])||[[w:Arlington Assembly|Arlington Assembly]]||[[w:Arlington, Texas|Arlington, Texas]]||[[w:United States|United States]]||[[w:GMT T1XX|T1XX]] SUVs (2021-):<br /> [[w:Chevrolet Tahoe#Fifth generation (2021)|Chevrolet Tahoe]]<br />[[w:Chevrolet Suburban#Twelfth generation (2021)|Chevrolet Suburban]]<br />[[w:Chevrolet Tahoe#Yukon|GMC Yukon]]<br />[[w:Chevrolet Suburban#Yukon XL|GMC Yukon XL]]<br />[[w:Cadillac Escalade#Fifth generation (2021)|Cadillac Escalade]]<br />[[w:Cadillac Escalade#Fifth generation (2021)|Cadillac Escalade ESV]] ||1954||&nbsp;||Located at 2525 E Abram St.<br />Was originally part of the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. Production began on January 6, 1954. The first vehicle produced was a 1954 Pontiac Chieftain 4-door. Arlington began making Chevrolet passenger cars for 1963. BOP Assembly Division became GM Assembly Division in 1965. Arlington began making midsize cars for 1968 but focused exclusively on midsize cars from 1971-1987. Arlington resumed making full-size cars for 1988 for the first time since 1970. Arlington focused exclusively on rwd, full-size cars from 1988-1996. When Willow Run Assembly closed in 1993, Arlington became GM's only factory still building traditional body-on-frame, rwd, full-size cars. Passenger car production ended in 1996. It's interesting to note that Arlington has never built any fwd vehicles or any unibody vehicles. Arlington was then converted to build full-size SUVs. SUV production began for 1998. Full-size pickups were also built for 1998-2000. Arlington Assembly has produced models for all of GM's primary American brands: Chevrolet, Pontiac, Oldsmobile, Buick, Cadillac, and GMC. Arlington Assembly has produced over 13 million vehicles. A new 129,250-square-foot body shop on the plant's west side was announced in 2011 as part of retooling for the K2XX generation SUVs launched in 2014. A new stamping plant was announced in 2012 and opened in 2013 at Arlington Assembly, replacing stampings previously sourced from GM stamping plants elsewhere in the US.<br /> A $1.4 billion plant upgrade was completed to build the <br /> T1XX generation SUVs beginning in 2020. It included a new <br /> 1 million sq. ft. body shop & a 600,000-sq. ft. extension to the paint shop. The general assembly area was also upgraded. <br /> Past models:<br /> [[w:GM A platform (RWD)|GM A platform (RWD)]] (intermediate): [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1970-1977), [[w:Chevrolet El Camino|Chevrolet El Camino]] (1974-1981), [[w:Chevrolet Malibu|Chevrolet Malibu]] (1978-1981), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1970-1981), [[w:GMC Sprint|GMC Sprint]] (1974-1977), [[w:GMC Caballero|GMC Caballero]] (1978-1981), [[w:Oldsmobile Cutlass|Oldsmobile Cutlass]] (1971-1981), [[w:Oldsmobile Cutlass Supreme|Oldsmobile Cutlass Supreme]] (1971-1981), [[w:Oldsmobile 442|Oldsmobile 442]] (1971-1977), [[w:Pontiac GTO|Pontiac GTO]] (1968-1970), [[w:Pontiac LeMans|Pontiac LeMans]] (1968-1970), [[w:Pontiac Tempest|Pontiac Tempest]] (1968-1970)<br /> [[w:General Motors G platform (1969)|GM G platform (RWD) 1982-1988]]: [[w:Buick Regal|Buick Regal]] (1982-1983), [[w:Chevrolet El Camino|Chevrolet El Camino]] (1982-1984), [[w:Chevrolet Malibu|Chevrolet Malibu]] (1982-1983), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1982-1987), [[w:GMC Caballero|GMC Caballero]] (1982-1984), [[w:Oldsmobile Cutlass Supreme|Oldsmobile Cutlass Supreme]] (1982-1987), [[w:Oldsmobile 442|Oldsmobile 442]] (1985).<br /> [[w:General Motors A platform (1925)|GM full-size A platform]]: [[w:Pontiac Chieftain|Pontiac Chieftain]] (1954-1957), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1954-1957)<br /> [[w:GM B platform|GM B platform]]: [[w:Buick Century#Second generation (1954–1958)|Buick Century]] (1954-1958), [[w:Buick Invicta|Buick Invicta]] (1959-1963), [[w:Buick LeSabre|Buick LeSabre]] (1959-1960), [[w:Buick Roadmaster#1991–1996|Buick Roadmaster sedan]] (1992-1996), [[w:Buick Estate#1991–1996|Buick Roadmaster Estate wagon]] (1994-1996), [[w:Buick Special#1949–1958|Buick Special]] (1954-1958), [[w:Buick Wildcat|Buick Wildcat]] (1963), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1963-1970), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1963-1970), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1970, 1988-1996), [[w:Chevrolet Impala|Chevrolet Impala]] (1963-1970), [[w:Chevrolet Impala#Seventh generation (Impala SS, 1994–1996)|Chevrolet Impala SS]] (1994-1996), [[w:Oldsmobile 88|Oldsmobile 88]] (1955-1964), [[w:Oldsmobile Custom Cruiser#Second generation (1977–1990)|Oldsmobile Custom Cruiser]] (1988-1990), [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1966), [[w:Pontiac 2+2|Pontiac 2+2]] (1964-1967), [[w:Pontiac Bonneville|Pontiac Bonneville]] (1959-1968), [[w:Pontiac Catalina|Pontiac Catalina]] (1959-1970), [[w:Pontiac Grand Prix|Pontiac Grand Prix]] (1962-65, 1967-68), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1963, 1966), [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1960-1961).<br />[[w:General Motors C platform (RWD)|GM C platform (RWD)]]: [[w:Buick Electra|Buick Electra]] (1959-1963), [[w:Buick Limited#1958 Limited|Buick Limited]] (1958), [[w:Buick Roadmaster|Buick Roadmaster]] (1955-1958), [[w:Buick Super|Buick Super]] (1955-1958), [[w:Oldsmobile 98|Oldsmobile 98]] (1954-1964) <br /> [[w:GM D platform|GM D platform]]: [[w:Cadillac Brougham|Cadillac Brougham]] (1988-1992), [[w:Cadillac Fleetwood#Rear-wheel drive 1993–1996|Cadillac Fleetwood]] (1993-1996) <br />[[w:GMT400|GMT400]] pickups: [[w:Chevrolet C/K (fourth generation)|Chevrolet C/K]] (1998-2000), [[w:Chevrolet C/K (fourth generation)|GMC Sierra]] (1998-2000).<br /> [[w:GMT400|GMT400]] SUVs: [[w:Chevrolet Tahoe#First generation (1992)|Chevrolet Tahoe]] (1998-1999), [[w:Chevrolet Tahoe#Tahoe Limited and Tahoe Z71|Chevrolet Tahoe Limited and Z71]] (2000), [[w:Chevrolet Tahoe#First generation (1992)|GMC Yukon]] (1998-1999), [[w:Chevrolet Tahoe#GMC Yukon Denali|GMC Yukon Denali]] (1999-2000), [[w:Cadillac Escalade#First generation (1999)|Cadillac Escalade]] (1999-2000)<br /> [[w:GMT800|GMT800]] SUVs: [[w:Chevrolet Tahoe#Second generation (2000)|Chevrolet Tahoe]] (2001-2006), [[w:Chevrolet Tahoe#Second generation (2000)|GMC Yukon]] (2001-2006), [[w:Cadillac Escalade#Second generation (2002)|Cadillac Escalade]] (2002-2006), [[w:Chevrolet Suburban#Ninth generation (2000)|Chevrolet Suburban]] (2001-2005), [[w:Chevrolet Suburban#Ninth generation (2000)|GMC Yukon XL]] (2001-2005).<br /> [[w:GMT900|GMT900]] SUVs: [[w:Chevrolet Tahoe#Third generation (2007)|Chevrolet Tahoe]] (2007-2014), [[w:Chevrolet Tahoe#Third generation (2007)|GMC Yukon]] (2007-2014), [[w:Chevrolet Tahoe#Third generation (2007)|GMC Yukon Denali]] (2009-2014), [[w:Cadillac Escalade#Third generation (2007)|Cadillac Escalade]] (2007-2014), [[w:Chevrolet Suburban#Tenth generation (2007)|Chevrolet Suburban]] (2007-2014), [[w:Chevrolet Suburban#Tenth generation (2007)|GMC Yukon XL]] (2007-2014), [[w:Chevrolet Suburban#Tenth generation (2007)|GMC Yukon XL Denali]] (2009-2014), [[w:Cadillac Escalade#Third generation (2007)|Cadillac Escalade ESV]] (2007-2014)<br /> [[w:GMT K2XX|K2XX]] SUVs (2015-2020): [[w:Chevrolet Tahoe#Fourth generation (2015)|Chevrolet Tahoe]], [[w:Chevrolet Tahoe#Fourth generation (2015)|GMC Yukon]], [[w:Cadillac Escalade#Fourth generation (2015)|Cadillac Escalade]], [[w:Chevrolet Suburban#Eleventh generation (2015)|Chevrolet Suburban]], [[w:Chevrolet Suburban#Eleventh generation (2015)|GMC Yukon XL]], [[w:Cadillac Escalade#Fourth generation (2015)|Cadillac Escalade ESV]] |- |U||[[Artisan Center]]||[[w:Warren, Michigan|Warren, Michigan]]||United States||[[w:Cadillac Celestiq|Cadillac Celestiq]] (2025-)||2024||&nbsp;||Located at the [[w:General Motors Technical Center|GM Global Technical Center]] in Warren, Michigan. The Celestiq will be the first production vehicle sold to the public to be built at the GM Tech Center. The Celestiq will be built by hand on a special, low-volume production line and will be highly customizable. The Celestiq will be built to order and each one will be unique. |- |&nbsp;||[[Bay City Powertrain]]||[[w:Bay City, Michigan|Bay City, Michigan]]||United States||Engine components including connecting rods & camshafts||1916||&nbsp;||Located at 1001 Woodside Ave. Originally opened as National Cycle Manufacturing Co. in 1892 to make bicycles. Bought by Chevrolet in 1916 and joined GM along with Chevrolet in 1918. |- |&nbsp;||[[Bedford Casting]]||[[w:Bedford, Indiana|Bedford, Indiana]]||United States||Cylinder heads, cylinder blocks, transmission cases, EV drive unit housings, structural components, Aluminum die casting||1942||&nbsp;||Located at 105 GM Drive. |- |5||[[w:Bowling Green Assembly Plant|Bowling Green Assembly Plant]]||[[w:Bowling Green, Kentucky|Bowling Green, Kentucky]]||United States||[[w:Chevrolet Corvette (C8)|Chevrolet Corvette (C8)]] (2020-)<br /> [[w:General Motors LS-based small-block engine#LT4|LT4 supercharged V8 engine]] for:<br /> Cadillac CT5-V Blackwing '22- and <br /> Cadillac Escalade-V '23-<br /> [[w:Chevrolet Gemini small-block engine|LT6 V8 engine]] ('23- Corvette Z06) [[w:Chevrolet Gemini small-block engine#LT7|LT7 twin-turbo V8 engine]] ('25- Corvette ZR1, '26- Corvette ZR1X) ||1981||&nbsp;||Located at 600 Corvette Drive. Originally built by Chrysler's Airtemp division in 1969-1970 and used to build non-automotive A/C units, the plant closed in 1976 following Chrysler's sale of Airtemp to Fedders and was sold to GM in 1980. GM converted the facility into an automotive assembly plant and began building Corvettes in Bowling Green during June 1981, taking over production from the St. Louis plant.<br/> Past models: <br /> [[w:Chevrolet Corvette (C3)|Chevrolet Corvette (C3)]] (1981-1982)<br />[[w:Chevrolet Corvette (C4)|Chevrolet Corvette (C4)]] (1984-1996)<br />[[w:Chevrolet Corvette (C5)|Chevrolet Corvette (C5)]] (1997-2004)<br />[[w:Chevrolet Corvette (C6)|Chevrolet Corvette (C6)]] (2005-2013)<br />[[w:Chevrolet Corvette (C7)|Chevrolet Corvette (C7)]] (2014-2019) [[w:Cadillac XLR|Cadillac XLR]] (2004-2009)<br /> Performance Build Center relocated from Wixom, MI to Bowling Green Assembly in 2014.<br/> Past engines: [[w:Cadillac twin-turbo V8|Cadillac Blackwing 4.2L LTA twin-turbo V8]],<br />[[w:General Motors LS-based small-block engine#LT4|LT4 supercharged V8 engine]] for: Chevrolet Corvette Z06 (C7) (2015-2016 models with Z07 package or build your own engine option, 2017-2019 all Z06 models) &<br /> Chevrolet Camaro ZL1 (Gen 6) (phased in during 2020, all '21-'24),<br />[[w:General Motors LS-based small-block engine#LT5|LT5 supercharged 6.2L Gen V Small Block V8]] ('19 Corvette ZR1) |- |&nbsp;||[[Brownstown Battery Assembly Plant]]||[[w:Brownstown Charter Township, Michigan|Brownstown Charter Township, Michigan]]||United States||Battery packs for [[w:Chevrolet Corvette (C8)|Chevrolet Corvette <br> E-Ray]] & [[w:Cadillac Celestiq|Cadillac Celestiq]]<br />Electric drive units for Chevrolet Corvette <br> E-Ray<br />Assembles prototype battery packs||2009||&nbsp;||Located at 20001 Brownstown Center Dr.<br /> Battery packs for [[w:Chevrolet Volt|Chevrolet Volt]], [[w:Holden Volt|Holden Volt]], [[w:Opel Ampera|Opel/Vauxhall Ampera]], [[w:Cadillac ELR|Cadillac ELR]], [[w:Chevrolet Spark#Spark EV|Chevrolet Spark EV (2015-2016 only - LG Chem cells)]], [[w:GMC Hummer EV|GMC Hummer EV]], & [[w:Cadillac Lyriq|Cadillac Lyriq]] <br /> Roof module for [[w:Cruise AV|Cruise AV]] |- |6<br />9&nbsp;(BrightDrop)||[[w:CAMI Automotive|CAMI Automotive]]||[[w:Ingersoll, Ontario|Ingersoll, Ontario]]||[[w:Canada|Canada]]||Assembles Ultium battery cells into modules and packs for BrightDrop Zevo & other vehicles made elsewhere||1989||&nbsp;||Located at 300 Ingersoll St. S. Originally, a 50/50 joint venture with [[w:Suzuki|Suzuki]] until December 2009 when GM bought Suzuki's share. Chevy Equinox production ended April 29, 2022. After being retooled, CAMI reopened December 5, 2022 building the BrightDrop Zevo 600. In July 2023, GM announced a 400,000 square-foot expansion to assemble battery modules and packs. Plant idled in October 2023 and restarted in April 2024. Production was suspended in May 2025. On October 21, 2025, GM announced that the BrightDrop van was discontinued and would not resume production anywhere. Past models: [[w:BrightDrop Zevo 600|BrightDrop Zevo 600]] (2023-2024)<ref>{{Cite news |author=Tom Venetis |date=4 April 2022 |title=GM Canada Electric Vehicle Production in Ontario by the End of 2022 |work=Metroland Media Group |url=http://www.canadianautoworld.ca/industry-news/gm-canada-electric-vehicle-production-in-ontario-by-the-end-of-2022 |access-date=24 April 2022}}</ref>,<br> [[w:BrightDrop Zevo 400|BrightDrop Zevo 400]] (2024),<br>[[w:Chevrolet BrightDrop|Chevrolet BrightDrop 400]] (2025),<br />[[w:Chevrolet BrightDrop|Chevrolet BrightDrop 600]] (2025),<br /> [[w:Chevrolet Equinox|Chevrolet Equinox]] (2005-2022)<ref>{{Cite news |author=Bryan Bicknell |date=3 March 2022 |title=The finish line draws closer for gas powered vehicles at Ontario CAMI plant |work=CTV News |url=https://london.ctvnews.ca/the-finish-line-draws-closer-for-gas-powered-vehicles-at-ontario-cami-plant-1.5804523 |access-date=17 May 2022}}</ref>, [[w:Pontiac Torrent|Pontiac Torrent]] (2006-09), [[w:GMC Terrain#First generation (2010)|GMC Terrain]] (2010-2017), [[w:Suzuki XL-7#Second generation (XL7; 2006)|Suzuki XL7]] (2007-2009), [[w:Geo Tracker|Geo/Chevrolet Tracker]] (1990-2004),<br> [[w:Chevrolet Tracker (Americas)#Canada|Asuna/Pontiac Sunrunner]] (Canada only) (1992-1998),<br> [[w:Suzuki Vitara#First generation (ET/TA; 1988)|Suzuki Sidekick]] (1990-1998), [[w:Suzuki Grand Vitara|Suzuki Vitara]] (1999-2004), [[w:Geo Metro|Geo/Chevrolet Metro]] (1990-2001), [[w:Geo Metro|Suzuki Swift]] (1991-2001), [[w:Geo Metro|Pontiac Firefly]] (Canada only) (1991, 1994-2001). |- |B (Suburban HD)||[[w:GM Defense|GM Defense]] Manufacturing Customer Innovation Center (MCIC)||[[w:Concord, North Carolina|Concord, North Carolina]]||United States|| [[w:M1301 Infantry Squad Vehicle|M1301 Infantry Squad Vehicle]] (ISV),<br />[[w:Chevrolet Suburban#HD SUV|Chevrolet Suburban Shield]] (a.k.a. HD SUV) (2024-) ||2021||&nbsp;||Located at 4280 Defender Way. Located next to Hendrick Motorsports, a partner in the ISV program. The ISV program for the US Army is based on the Chevrolet Colorado ZR2. The HD SUV program for the US State Dept. Diplomatic Security Service is based on the T1XX-generation Chevrolet Suburban but with a different chassis and frame to support higher vehicle weight, payload, and GVWR than civilian Suburbans. |- |&nbsp;||[[Defiance Foundry]]||[[w:Defiance, Ohio|Defiance, Ohio]]||United States||Aluminum engine blocks & heads||1948||&nbsp;||Located at 26427 State Route 281. Was part of GM's Central Foundry Division. Iron pouring ended in 2017. The plant now pours only aluminum blocks and heads. Defiance made the aluminum blocks and heads for the Buick 215 V8. Defiance has also supplied [[w:Toyota|Toyota]] with 4-cylinder engine blocks and [[w:Nissan|Nissan]] with V6 engine blocks. |- |U||[[w:Detroit/Hamtramck Assembly|Detroit/Hamtramck Assembly]]<br /> "Factory ZERO"||[[w:Hamtramck, Michigan|Hamtramck, Michigan]] & [[w:Detroit, Michigan|Detroit, Michigan]]||United States||[[w:GMC Hummer EV|GMC Hummer EV]] pickup (2022-)<br />[[w:GMC Hummer EV|GMC Hummer EV]] SUV (2024-)<br />[[w:Chevrolet Silverado EV|Chevrolet Silverado EV]] (2024-)<br />[[w:GMC Sierra EV|GMC Sierra EV]] (2024-)<br />[[w:Cadillac Escalade IQ|Cadillac Escalade IQ]] (2025-)<br />[[w:Cadillac Escalade IQ|Cadillac Escalade IQL]] (2026-)<br />Assembles Ultium battery cells into modules and packs for a variety of vehicles||1985||&nbsp;||Located at 2500 East Grand Blvd. Sometimes called the "Poletown" plant after the Detroit neighborhood where the plant is located. Part of the site was previously the "Dodge Main" plant which opened in 1911 before Dodge was part of the Chrysler Corp. and closed on January 4, 1980. GM bought the closed plant in 1981. Additional land including residential neighborhoods was acquired through the use of eminent domain. The plant straddles the line between 2 cities: Detroit & Hamtramck. The body shop is in Hamtramck while the general assembly area is in Detroit.<ref>{{Cite web|url=https://www.freep.com/story/money/cars/general-motors/2020/10/16/gm-detroit-hamtramck-assembly-plant-renamed-factory-zero/3665925001/|title = GM's Detroit-Hamtramck Assembly plant renamed 'Factory ZERO' amid shift to all-electric|author=Jamie LaReau|publisher=Detroit Free Press|date=October 16, 2020}}</ref> The current site includes a 16.5-acre wildlife habitat. Originally built E/K models. First vehicle produced was a 1986 Cadillac Eldorado on February 4, 1985. Also did final assembly on the Cadillac Allante, whose bodies were made in Italy by Pininfarina and were flown to Detroit and then trucked to Detroit/Hamtramck Assembly for final assembly. Started building fwd G-bodies for 1998. The last <br> E-body, the Cadillac Eldorado, was moved to the Lansing Craft Center during 2000. Started building EREVs based on Delta II for 2011. This was followed by the 2nd gen. Volt based on D2XX for 2016. Started building Epsilon-based cars for 2013. Also built the Omega-based Cadillac CT6 flagship, starting with 2016. The last gas-powered vehicles made at this plant were the Cadillac CT6 on January 24, 2020 & the Chevrolet Impala on February 27, 2020. Renamed "Factory ZERO" on October 16, 2020 to reflect its conversion into an electric vehicle assembly plant (zero for zero emissions). First vehicle produced following the conversion was a 2022 GMC Hummer EV pickup on December 17, 2021. Over 4 million vehicles have been built so far since opening in 1985. <br /> Past models:<br> [[w:Oldsmobile Toronado#Fourth generation (1986–1992)|Oldsmobile Toronado]] (1986-1992), [[w:Buick Riviera#Seventh generation (1986–1993)|Buick Riviera]] (1986-1993), [[w:Cadillac Eldorado|Cadillac Eldorado]] (1986-2000), [[w:Cadillac Seville|Cadillac Seville]] (1986-2004), [[w:Cadillac Allanté|Cadillac Allanté]] (1987-1993) (final assembly),<br> [[w:Cadillac Deville|Cadillac Deville]] (1994-2005), [[w:Cadillac DTS|Cadillac DTS]] (2006-2011),<br> [[w:Buick Park Avenue#Second generation (1997–2005)|Buick Park Avenue]] (1998-2000), [[w:Buick LeSabre#Eighth generation (2000–2005)|Buick LeSabre]] (2000-2005), [[w:Buick Lucerne|Buick Lucerne]] (2006-2011), [[w:Pontiac Bonneville#Tenth generation (2000–2005)|Pontiac Bonneville]] (2004-2005), [[w:Chevrolet Volt|Chevrolet Volt]] (2011-2019), [[w:Chevrolet Volt#Other markets|Holden Volt (RE)]] (2012-2015), [[w:Chevrolet Volt#Opel Ampera (Europe)|Opel/Vauxhall Ampera]] (2012-15), [[w:Cadillac ELR|Cadillac ELR]] (2014, 2016), [[w:Chevrolet Malibu#Eighth generation (2013)|Chevrolet Malibu (2013-2015)/Malibu Limited (2016)]], [[w:Chevrolet Impala#Tenth generation (2014-2020)|Chevrolet Impala]] (2014-2020), [[w:Buick LaCrosse#Third generation (2017)|Buick Lacrosse]] (2017-2019), [[w:Cadillac CT6|Cadillac CT6]] (2016-2020) |- |&nbsp;||[[w:DMAX (engines)|DMAX Ltd.]]||[[w:Moraine, Ohio|Moraine, Ohio]]||United States||[[w:Duramax V8 engine|Duramax V8 engine]]||2000||&nbsp;||Located on 3100 Dryden Rd. Was a joint venture with [[w:Isuzu|Isuzu]]. Originally, was 40% owned by GM & 60% owned by Isuzu. From 2002, 60% owned by GM & 40% owned by Isuzu. GM bought Isuzu's remaining stake in DMAX Ltd. at the end of March 2022 and DMAX Ltd. became a wholly owned subsidiary of GM in May 2022. |- |&nbsp;||[[w:DMAX (engines)|DMAX Ltd.]] Components Plant||[[w:Brookville, Ohio|Brookville, Ohio]]||United States||Machined engine components for [[w:Duramax V8 engine|Duramax V8 engine]]||2021||&nbsp;|| Located at 101 W. Campus Blvd. In June 2023, GM announced a $920 million investment to build a 1.1 million square foot building next to the current 251,000 square foot facility in Brookville to take over Duramax V8 engine production from the original plant in Moraine in 2025. |- |&nbsp;||[[w:GM Egypt|GM Egypt]]||[[w:6th of October City|6th of October City]]|| [[w:Egypt|Egypt]]||[[w:Isuzu N-Series|Chevrolet N-Series]]<br/>[[w:Isuzu D-Max#Second generation (RT; 2011)|Chevrolet T-Series]]<br/>[[w:Chevrolet Move#Chevrolet N300/Move|Chevrolet Move]]<br/>[[w:Chevrolet Aveo#Third generation (310C; 2023)|Chevrolet Optra]] (2025-)||1985||&nbsp;||Partially owned by GM (46.5%). Produced its 1 millionth vehicle, a Chevrolet T-Series pickup truck, on September 22, 2024. GM Egypt is the first automaker in Egypt to produce <br> 1 million vehicles. <br /> Past models: [[w:Chevrolet Aveo (T200)|Chevrolet Aveo]], [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]], [[w:Chevrolet Frontera|Chevrolet Frontera]], [[w:Chevrolet Lanos|Chevrolet Lanos]], [[w:Baojun 630|Chevrolet Optra]] (2016-2023), [[w:Isuzu D-Max#First generation (RA, RC; 2002)|Chevrolet T-Series]], [[w:Isuzu MU#First generation (UCS55/UCS69GW; 1989–1998)|Isuzu Rodeo]], [[w:Isuzu TF|Isuzu TF-Series]], [[w:Opel Astra|Opel Astra]], [[w:Opel Corsa|Opel Corsa]], [[w:Opel Vectra|Opel Vectra]] |- |F||[[w:Fairfax II|Fairfax II]]||[[w:Kansas City, Kansas|Kansas City, Kansas]]||United States||[[w:Chevrolet Bolt#Second generation (2026)|Chevrolet Bolt]] (2027) <br /> [[w:Chevrolet Equinox#Fourth generation (2025)|Chevrolet Equinox]] (Starting Mid-2027) ||1987||&nbsp;||Located at 3201 Fairfax Trafficway. Replaced original Fairfax Assembly Plant (Fairfax I) for 1988 model year production. Built on the site of the old Fairfax Municipal Airport. Originally built W-body cars. Switched to Epsilon-based cars for 2004. Chevy Malibu ended production in November 2024. Cadillac XT4 ended production in January 2025. Fairfax was then idled for retooling. Production of the updated Bolt electric car began in late 2025. The 2027 Bolt is an updated version of the old Bolt EUV. <br />Past models: [[w:Pontiac Grand Prix|Pontiac Grand Prix]] (1988-2003), [[w:Oldsmobile Cutlass Supreme#Fifth generation (1988–1997)|Oldsmobile Cutlass Supreme]] (1995-1997), [[w:Oldsmobile Intrigue|Oldsmobile Intrigue]] (1998-'02), [[w:Chevrolet Malibu#Sixth generation (2004)|Chevrolet Malibu (2004-2007)/Malibu Classic (2008)]], [[w:Chevrolet Malibu#Seventh generation (2008)|Chevrolet Malibu (2008-2012)]],<br> [[w:Chevrolet Malibu#Eighth generation (2013)|Chevrolet Malibu (2013-2015)/Malibu Limited (2016)]], [[w:Chevrolet Malibu#Ninth generation (2016)|Chevrolet Malibu (2016-2025)]], <br /> [[w:Saturn Aura|Saturn Aura]] (2007-2009), [[w:Buick LaCrosse#Second generation (2010)|Buick Lacrosse/Allure]] (2010-2016), [[w:Cadillac XT4|Cadillac XT4]] (2019-2025) |- |&nbsp;||[[w:Flint Engine South|Flint Engine South]]||[[w:Flint, Michigan|Flint, Michigan]]||United States|| 3.0 [[w:Duramax I6 engine|Duramax I6 engine]]||2000||&nbsp;||Located at 2100 Bristol Road. Located just to the south of Flint Truck Assembly and on the east side of Flint Metal Center. <br />Past engines: [[w:GM Atlas engine|4.2 Atlas I6]], 3.6 [[w:GM High Feature engine|High Feature V6 engine]],<br /> 1.4 [[w:GM Family 0 engine#Generation III|Family 0 I4]] (Cruze, Sonic, Volt/Ampera/ELR generator), [[w:GM small gasoline engine#LFV|GM Small Gasoline Engine]] (LFV 1.5 Turbo I4 - Malibu) |- |&nbsp;||[[Flint Metal Center]]||[[w:Flint, Michigan|Flint, Michigan]]||United States|| Sheetmetal stampings for various GM models||1954||&nbsp;||Located at G-2238 Bristol Road. Located just to the south of Flint Truck Assembly and on the west side of Flint Engine South. Metal fabricating plant. |- |&nbsp;||[[Flint Tool & Die]] (North American Engineering and Tooling Center)||[[w:Flint, Michigan|Flint, Michigan]]||United States||Tools & Dies for fabrication & assembly of sheetmetal body parts||1967||&nbsp;||Located at 425 Stevenson St. Was Plant 38 of the "Chevy in the Hole" complex. Last remaining manufacturing plant of the old "Chevy in the Hole" complex. |- |F <br/>(1953-present)<br/><br/> 1 (1947-1952)||[[w:Flint Truck Assembly|Flint Truck Assembly]]||[[w:Flint, Michigan|Flint, Michigan]]||United States||[[w:Chevrolet Silverado|Chevrolet Silverado]] (2001-)<br /> [[w:Chevrolet Silverado|GMC Sierra]] (2001-)||1947||&nbsp;||Located at G 3100 Van Slyke Road. This plant replaced vehicle production at the older "Chevy in the Hole" complex elsewhere in Flint, Michigan and became Chevrolet's new home plant. Began production in June 1947. This is GM's oldest, still active assembly plant in North America. Built all 300 1953 Corvettes on a small makeshift line (1 line for body & 1 for frame/chassis) from June 30 through December 24 in 1953. Built the 50 millionth car built by GM in the US on November 23, 1954. The car was a special gold painted '55 Chevy Bel Air 2-door Sport Coupe with a gold-painted chassis and 716 interior and exterior trim parts plated with 24-carat gold. Last built Chevy full-size cars in 1969. Last built passenger cars in 1970 (the midsize Chevelle & Monte Carlo). The last passenger car built at Flint Assembly was a Monte Carlo on June 24, 1970. At that point, the separate onsite Fisher Body operation (Flint #2) was merged into the Chevrolet operation (the rest of the plant) and the entire plant joined the GM Assembly Division. Since 1971, has only built full-size pickups, full-size SUV's, full-size vans, and medium duty commercial trucks. A new paint shop (Flint Assembly Paint Operations) was announced in December 2013 and opened in 2016, replacing the previous paint shop located inside the assembly plant. The new paint shop is further down Van Slyke Road from the assembly plant at 3848 Van Slyke Road, on the site of the former V8 engine plant that closed in 1999 and was subsequently demolished. Flint Truck Assembly has produced over 15 million vehicles. <br />Past models: [[w:Chevrolet Deluxe|Chevrolet Deluxe]], [[w:Chevrolet Stylemaster|Chevrolet Stylemaster]], [[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]], [[w:Chevrolet 150|Chevrolet 150]] (1953-1957),<br> [[w:Chevrolet 210|Chevrolet 210]] (1953-1957), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1969), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-69), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1969), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-69), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Chevrolet Corvette (C1)|Chevrolet Corvette (1953 only)]]<br> [[w:Chevrolet El Camino#First generation (1959–1960)|Chevrolet El Camino]] (1959-1960),<br> [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1966, 1970),<br> [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1970 only),<br> [[w:Chevrolet K5 Blazer|Chevrolet K5 Blazer]] (1969-1991), [[w:Chevrolet K5 Blazer|GMC K15 Jimmy]] (1970-91), [[w:Chevrolet Suburban|Chevrolet Suburban]] (1960-1991), [[w:GMC Suburban|GMC Suburban]] (1967-91),<br> [[w:Chevrolet Corvair|Chevrolet Corvair Forward Control]] (1961-1964), <br> [[w:Chevrolet van#Third generation (1971-1996)|Chevrolet Van/Sportvan]] (1993-1995),<br> [[w:Chevrolet van#1992-1996|Chevrolet Van/Sportvan G-Classic]] (1996),<br> [[w:Chevrolet van#Third generation (1971-1996)|GMC Vandura/Rally Van]] (1993-1995),<br> [[w:Chevrolet van#1992-1996|GMC Vandura/Rally Van G-Classic]] (1996),<br> [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:Chevrolet C/K|Chevrolet C/K]] (1960-1986), [[w:Chevrolet C/K (second generation)|GMC C/K (Action Line)]] (1967-1972), [[w:Chevrolet C/K (third generation)|GMC C/K (Rounded Line)]] (1973-1986), [[w:Chevrolet C/K (third generation)#R/V-Series (1987–1991)|Chevrolet R/V]] (1987-1991), [[w:Chevrolet C/K (third generation)#R/V-Series (1987–1991)|GMC R/V]] (1987-1991), [[w:Chevrolet C/K (fourth generation)|Chevrolet C/K (GMT400)]] (1995-2000), [[w:Chevrolet C/K (fourth generation)|GMC Sierra (GMT400)]] (1995-98), [[w:Chevrolet C/K (fourth generation)|GMC Sierra Classic (GMT400)]] (1999-2000), [[w:Chevrolet C/K (fourth generation)#C3500HD (1991–2002)|Chevrolet/GMC C3500HD]] (1998-00), [[w:Chevrolet Kodiak#Third generation (2003–2009)|Chevrolet Kodiak/GMC Topkick]] ('03-'09), [[w:Chevrolet Kodiak#Isuzu H-Series|Isuzu H-Series]] (2005-2007), [[w:Isuzu Forward|Chevrolet T-Series]] (2004-2009), [[w:GMC T-Series|GMC T-Series]] (2004-2009), [[w:Isuzu F-Series|Isuzu F-Series]] (2004-2009) <br /> |- |Z||[[w:Fort Wayne Assembly|Fort Wayne Assembly]]||[[w:Roanoke, Indiana|Roanoke, Indiana]]||United States||[[w:Chevrolet Silverado|Chevrolet Silverado]] (1999-)<br />[[w:Chevrolet Silverado|GMC Sierra]] (1988-)||1986||&nbsp;||Located at 12200 Lafayette Center Rd.<br /> Past models: [[w:Chevrolet C/K (fourth generation)|Chevrolet C/K]] (1988-1998) |- |&nbsp;||[[Fuel Cell System Manufacturing LLC]]||[[w:Brownstown Charter Township, Michigan|Brownstown Charter Township, Michigan]]||United States||Fuel Cell Systems for [[w:Honda CR-V#CR-V e:FCEV|Honda CR-V e:FCEV]] & various other applications by GM & Honda & to outside companies||2024||&nbsp;||Located at 20001 Brownstown Center Dr. Located next to GM's Brownstown Battery Assembly Plant.<br /> A 50/50 joint venture with [[w:Honda|Honda]]. GM & Honda have been co-developing fuel cells since 2013. The manufacturing joint venture was established in January 2017. Production began in January 2024. Production is scheduled to end by the end of 2026. |- |&nbsp;||Grand Rapids Operations||[[w:Wyoming, Michigan|Wyoming, Michigan]]||United States||Valvetrain products <br /> Axles for full-size trucks ||1943||&nbsp;||Located at 2100 Burlingame Avenue SW. Originally established as Diesel Equipment Division of GM. Spun off with Delphi Automotive Systems in 1999 (Delphi Powertrain Systems Grand Rapids); taken back under [[w:Delphi Corporation|Delphi Corporation]] bankruptcy and made part of [[w:General Motors Components Holdings|General Motors Components Holdings]] in 1999. |- |G||[[w:General Motors do Brasil|Gravatai Automotive Industrial Complex]]||[[w:Gravatai|Gravatai]], [[w:Rio Grande do Sul|Rio Grande do Sul]]||[[w:Brazil|Brazil]]||[[w:Chevrolet Onix|Chevrolet Onix]]<br /> ||2000||&nbsp;||Past models: [[w:Chevrolet Celta|Chevrolet Celta]]<br />[[w:Chevrolet Prisma (disambiguation)|Chevrolet Prisma]]<ref>{{cite web|url=http://www.autointell.com/nao_companies/general_motors/gm-manufacturing/blue-macaw-01.htm|title=General Motors: Gravatai Automotive Complex|access-date=2021-09-14 }}</ref><ref>[https://www.reuters.com/article/idUSN1533675720090715 UPDATE 2-GM to spend $1 bln in Brazil on new family of cars] Retrieved 14 September 2021</ref><br /> [[w:Suzuki Fun|Suzuki Fun]] |- |&nbsp;||[[Joinville]]||[[w:Joinville|Joinville]], [[w:Santa Catarina (state)|Santa Catarina]]||[[w:Brazil|Brazil]]||[[w:GM E-Turbo engine|1.0 & 1.0 Turbo 3-cylinder engine]]<br />[[w:GM E-Turbo engine|1.2 & 1.2 Turbo 3-cylinder engine]] ||2013||&nbsp;||Past engines: [[w:GM Family 1 engine#SPE / 4|1.0L & 1.4L SPE / 4<br /> 4-cylinder engines]] |- |&nbsp;||Kokomo Operations<ref>{{Cite web|url=https://plants.gm.com/media/us/en/gm/company_info/facilities/component-fac/kokomo.html|title=GM Corporate Newsroom - United States - Company}}</ref>||[[w:Kokomo, Indiana|Kokomo, Indiana]]||United States||Automotive Electronic Components including Engine Control Modules, Transmission Control Modules, Body Control Modules, & Airbag Sensing Diagnostic Modules||1936||&nbsp;||Located at 2603 South Goyer Rd. The site was first used in the 1890's to make cars by [[w:Haynes-Apperson|Haynes-Apperson]] and later by [[w:Haynes Automobile Company|Haynes]] until the company went out of business in 1925. Purchased by GM in 1936 from Crosley Radio Corp., which used the site to make radios for Chevrolet briefly during 1936. Initially run by Delco Remy, the site became a separate GM division called Delco Radio Division in June 1936. Delco Radio made radios for all GM cars as well as other electronic equipment. During WWII, Delco Radio made electronic equipment for the war effort. In 1970, Delco Radio merged with AC Electronics Division of Milwaukee to form [[w:Delco Electronics|Delco Electronics Division]]. On December 31, 1985, General Motors merged Hughes Aircraft, which it had acquired on December 20, 1985, with its Delco Electronics unit to form Hughes Electronics Corporation, an independent subsidiary. The group then consisted of Delco Electronics Corporation and Hughes Aircraft Company. In 1997, GM transferred Delco Electronics to its Delphi Automotive Systems business. Spun off with Delphi Automotive Systems in 1999 (Delco Electronics and Safety); taken back under [[w:Delphi Corporation|Delphi Corporation]] bankruptcy and made part of [[w:General Motors Components Holdings|General Motors Components Holdings]] in 2009. |- | ||[[w:GM Korea|GM Korea]]||[[w:Boryeong|Boryeong]], [[w:South Chungcheong Province|South Chungcheong Province]]||[[w:South Korea|South Korea]]||Automatic Transmissions||2008||&nbsp;||[[w:GM 6T40 transmission|GM 6T40 transmission]] (GF6) |- |B<br /><br />0 ('07-'08 Antara)||[[w:GM Korea|GM Korea]]||[[w:Bupyeong-gu|Bupyeong District]], [[w:Incheon|Incheon]]||[[w:South Korea|South Korea]]||[[w:Chevrolet Trailblazer (crossover)|Chevrolet Trailblazer]]<br/>[[w:Buick Encore GX|Buick Encore GX]]<br/>[[w:Buick Envista|Buick Envista]] Engines: [[w:GM Family 0 engine|GM Family 0 engine]]<br />[[w:GM E-Turbo engine|1.3L Turbo 3-cylinder engine]] |1962<br /><br/>1971 (engine plant)||&nbsp;||Bupyeong has 2 vehicle assembly plants and a powertrain plant. The Bupyeong 2 Assembly Plant ended production on November 26, 2022. Bupyeong 2 was last producing the Chevrolet Malibu and Trax and Buick Encore.<br />Past models : [[w:Chevrolet Aveo|Chevrolet Aveo]], [[w:Chevrolet Sonic|Chevrolet Sonic]], [[w:Chevrolet Captiva|Chevrolet Captiva]], [[w:Chevrolet Epica|Chevrolet Epica]], [[w:Chevrolet Evanda|Chevrolet Evanda]], [[w:Chevrolet Malibu|Chevrolet Malibu]], [[w:Chevrolet Trax#First generation (U200; 2013)|Chevrolet Trax]]<br /> [[w:Buick Encore#First generation (2013)|Buick Encore]]<br /> [[w:Buick LaCrosse#Korean market: Alpheon|Alpheon]] [[w:Daewoo LeMans|Daewoo LeMans]], [[w:Daewoo Cielo|Daewoo Cielo]], [[w:Daewoo Espero|Daewoo Espero]], [[w:Daewoo Lanos|Daewoo Lanos]], [[w:Daewoo Leganza|Daewoo Leganza]], [[w:Daewoo Magnus|Daewoo Magnus]], [[w:Daewoo Tosca|Daewoo Tosca]], [[w:Daewoo Kalos|Daewoo Kalos]], [[w:Chevrolet Aveo (T200)#T250|Daewoo Gentra]], [[w:Daewoo Winstorm|Daewoo Winstorm]] [[w:Holden Barina#Fifth generation (TK; 2005–2011)|Holden Barina (TK)]], [[w:Holden Barina#Sixth generation (TM; 2011–2018)|Holden Barina (TM)]], [[w:Opel Antara|Holden Captiva MaXX/Captiva 5]], [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Holden Captiva/Captiva 7]], [[w:Holden Epica|Holden Epica (EP)]], [[w:Chevrolet Malibu#Eighth generation (2013)|Holden Malibu (EM)]], [[w:Chevrolet Trax#First generation (U200; 2013)|Holden Trax (TJ)]] <br /> [[w:Opel Antara|GMC Terrain (Middle East only)]] <br /> [[w:Opel Mokka#First generation (J13; 2012)|Opel/Vauxhall Mokka]], [[w:Opel Antara|Opel/Vauxhall Antara]]<br /> [[w:Pontiac LeMans#Sixth generation (1988–1993)|Pontiac LeMans]], [[w:Pontiac Wave|Pontiac Wave]], [[w:Pontiac G3|Pontiac G3]] <br /> [[w:Suzuki Swift+|Suzuki Swift+]] (Canada only), [[w:Suzuki Verona|Suzuki Verona]] Past engines: [[w:GM Family 1 engine|GM Family 1 engine]] |- |C||[[w:GM Korea|GM Korea]]||[[w:Changwon|Changwon]], [[w:Gyeongsang Province|Gyeongsang Province]]||[[w:South Korea|South Korea]]||[[w:Chevrolet Trax#Second generation (2023)|Chevrolet Trax]]<br/>[[w:GM small gasoline engine|GM small gasoline engine]] LV7, LE2<br/>Manual transmissions |1991||&nbsp;||Past models: [[w:Daewoo Damas|Damas]], [[w:Daewoo Labo|Labo]]<br />[[w:Daewoo Matiz|Daewoo Matiz]], [[w:Daewoo Tico|Daewoo Tico]]<br />[[w:Opel Karl|Opel Karl]]/[[w:Vauxhall Viva#Name revival|Vauxhall Viva]]<br />[[w:Pontiac G2#Second generation (M200, M250; 2005)|Pontiac G2]], [[w:Pontiac Matiz#M150 (2000–2005)|Pontiac Matiz]],<br /> [[w:Chevrolet Spark|Chevrolet Spark]], [[w:Chevrolet Spark#Spark EV|Chevrolet Spark EV]]<br />[[w:Holden Spark#Australasia|Holden Barina Spark (MJ)]]<br>[[w:Holden Spark|Holden Spark (MP)]] Past engines: [[w:Daewoo S-TEC engine#S-TEC II|Daewoo S-TEC II]] |- |J||[[w:Lansing Delta Township Assembly|Lansing Delta Township Assembly]]||[[w:Delta Township, Michigan|Delta Township, Michigan]]||United States||[[w:Chevrolet Traverse|Chevrolet Traverse]] (2010-)<br />[[w:Buick Enclave|Buick Enclave]] (2008-)<br />[[w:GMC Acadia#Third generation (2024)|GMC Acadia]] (2024-)||2006||&nbsp;||Located at 8175 Millett Hwy. Originally opened to build Lambda-based crossovers. Switched to C1XX-based models for 2018. <br /> Past models: [[w:Saturn Outlook|Saturn Outlook]] (2007-2010),<br>[[w:GMC Acadia#First generation (2007)|GMC Acadia]] (2007-2016), [[w:GMC Acadia#Acadia Limited|GMC Acadia Limited]] (2017), <br>[[w:Chevrolet Traverse#Second generation (2018)|Chevrolet Traverse Limited]] (2024) |- |0||[[w:Lansing Grand River Assembly|Lansing Grand River Assembly]]/Stamping||[[w:Lansing, Michigan|Lansing, Michigan]]||United States||[[w:Cadillac CT4|Cadillac CT4]] (2020-)<br />[[w:Cadillac CT5|Cadillac CT5]] (2020-)||2001||&nbsp;||Located at 920 Townsend Street. Stamping plant added in 2016. This newly constructed plant was built on the grounds of the former Oldsmobile home plant complex in Lansing. The former Oldsmobile HQ building ("Building 70") is still standing and still has "Oldsmobile Administration Center" carved into the marble barrier in front of the flagpole between the 2 stairways. Building 70 was Oldsmobile HQ from 1966-1996, when Oldsmobile HQ moved to Detroit. Building 70 is now vacant but the exterior is often used by GM for large ads that are wrapped around the side of the building on the corner of Townsend St. and William St. Originally opened to build vehicles on the Sigma platform. Started building vehicles on the Alpha platform for 2013.<br /> Past models: [[w:Cadillac CTS|Cadillac CTS]] (2003-2019), [[w:Cadillac SRX#First generation (2004)|Cadillac SRX]] (2004-2009), [[w:Cadillac STS|Cadillac STS]] (2005-2011), [[w:Cadillac ATS|Cadillac ATS]] (2013-2019), [[w:Chevrolet Camaro (sixth generation)|Chevrolet Camaro]] (2016-2024) |- |&nbsp;||[[Lansing Regional Stamping]] (LRS)||[[w:Delta Township, Michigan|Delta Township, Michigan]]||United States||&nbsp;||2004|| ||Located within the Lansing Delta Assembly complex. |- |||[[w:Lansing Service Parts Operation|Lansing Redistribution Center]] (SPO)||[[w:Delta Township, Michigan|Delta Township, Michigan]]||United States||&nbsp;||1960|| ||Located at 4400 West Mount Hope Road. Previously Lansing Plant 4. Now called Lansing Redistribution Center, part of GM Customer Care and Aftersales. |- |&nbsp;||[[Lockport Operations]]||[[w:Lockport, NY|Lockport, NY]]||United States||Thermal products (climate control systems, powertrain cooling systems) and stators for EV motors.||1914||&nbsp;||Located at 200 Upper Mountain Road. Founded in 1910 as the Harrison Radiator Company. Acquired by United Motors in 1916 which was then acquired by GM in 1918. Spun off with Delphi Automotive Systems in 1999 (Harrison Thermal Systems); taken back under [[w:Delphi Corporation|Delphi Corporation]] bankruptcy and made part of [[w:General Motors Components Holdings|General Motors Components Holdings]] in 2009. |- |&nbsp;||[[Marion Metal Center]]||[[w:Marion, Indiana|Marion, Indiana]]||United States||Sheetmetal stamped parts & blanks for various GM models||1956||&nbsp;||Located at 2400 West Second St. Metal fabricating. Originally a Fisher Body division plant. |- |&nbsp;||[[Mogi das Cruzes]]||[[w:Mogi das Cruzes|Mogi das Cruzes]], [[w:São Paulo (state)|São Paulo state]]||[[w:Brazil|Brazil]]||Stampings for new & replacement parts||1999||&nbsp;||Stamping plant |- |4||[[w:Orion Assembly|Orion Assembly]]||[[w:Orion Township, Michigan|Orion Township, Michigan]]||United States||Assembly of Battery packs for EVs:<br> Silverado EV, Sierra EV, Hummer EV, and Escalade IQ<br><br>Scheduled for Early 2027: [[w:Chevrolet Silverado|Chevrolet Silverado]] 1500 (2027-)<br />[[w:GMC Sierra|GMC Sierra]] 1500 (2027-) ||1983||idled 2009; reopened 2011; idled 2023||Located at 4555 Giddings Road. Originally opened to build the 1985 Fwd C-bodies. Began building Fwd H-bodies for 1994. Began building Fwd G-bodies for 1995. On June 18, 2004, production of the Buick LeSabre & Park Ave., the last 2 models built at Orion Assembly, ended. Plant was then converted from building full-size cars to midsize cars for 2005, beginning with the Pontiac G6. Idled during 2009 as part of GM's bankruptcy. Reopened in 2011 with the help of govt. incentives & special agreement with the UAW to build the Chevy Sonic subcompact. Later added the Buick Verano compact car. In 2016, began building the Chevy Bolt EV, which was joined in 2021 by the slightly larger Bolt EUV. Idled in 2023 when both Bolts were discontinued. In late summer 2024, Orion Assembly began assembling battery cells supplied by Ultium Cells LLC in Warren, OH into packs which are then supplied to the Factory Zero plant for installation into the electric trucks & SUVs made there. Orion was going to be converted to building electric trucks, supplementing Factory Zero's production of Silverado EV & Sierra EV but that plan was postponed and later cancelled. In 2025, a new plan was announced for Orion to build fuel-powered Silverado & Sierra 1500 pickups & Escalade SUVs beginning in 2027.<br> Past models: [[w:Chevrolet Bolt EV|Chevrolet Bolt EV]] (2017-2023), [[w:Chevrolet Bolt EUV|Chevrolet <br> Bolt EUV]] (2022-2023), [[w:Cruise AV|Cruise AV]], [[w:Chevrolet Bolt#European countries|Opel Ampera-e]] (2017-19),<br> [[w:Chevrolet Sonic|Chevrolet Sonic]] (2012-2020), [[w:Buick Verano#First generation (2011)|Buick Verano]] (2012-2017), [[w:Chevrolet Malibu#Seventh generation (2008)|Chevrolet Malibu]] (2008-2010), [[w:Pontiac G6|Pontiac G6]] (2005-2010),<br> [[w:Buick Riviera#Eighth generation (1995–1999)|Buick Riviera]] (1995-1999), [[w:Oldsmobile Aurora|Oldsmobile Aurora]] (1995-2003),<br> [[w:Buick Park Avenue#Second generation (1997-2005)|Buick Park Avenue]] (1997-2005), [[w:Buick LeSabre#Eighth generation (2000–2005)|Buick LeSabre]] (2000-2005), [[w:Cadillac de Ville series#Sixth generation (1985–1993)|Cadillac DeVille]] (1985-1993), [[w:Cadillac Fleetwood#Front-wheel drive: 1985–1993|Cadillac Fleetwood]] (1985-1992), [[w:Cadillac Sixty Special#1987–1993|Cadillac Sixty Special]] (1989-1993), [[w:Oldsmobile 88#Tenth generation (1992–1999)|Oldsmobile 88]] (1994-99), [[w:Oldsmobile LSS|Oldsmobile LSS]] (1996-1999), [[w:Oldsmobile Regency|Oldsmobile Regency]] (1997-98), [[w:Oldsmobile 98#Eleventh generation (1985–1990)|Oldsmobile 98]] (1985-1990), [[w:Oldsmobile 98#Twelfth generation (1991–1996)|Oldsmobile 98]] (1991-1996), [[w:Oldsmobile Touring Sedan|Oldsmobile Touring Sedan]] (1988-1990),<br> [[w:Pontiac Bonneville#Ninth generation (1992–1999)|Pontiac Bonneville]] (1994-1998), [[w:Pontiac Bonneville#Tenth generation (2000–2005)|Pontiac Bonneville]] (2000-03) |- |1 (2022-)<br /><br />1 (Line 2 a.k.a. Consolidated Line)<br> (1984-2019)<br>/<br />9 (Line 1 a.k.a. Flex Line)<br> (1984-2020)<br /><br />1 (1967-1983)||[[w:Oshawa Car Assembly|Oshawa Car Assembly]]||[[w:Oshawa, Ontario|Oshawa, Ontario]]||[[w:Canada|Canada]]||[[w:Chevrolet Silverado#Fourth-generation Silverado / fifth-generation Sierra (T1XX; 2019)|Chevrolet Silverado 1500]] (2022-)<br />[[w:Chevrolet Silverado#Fourth-generation Silverado / fifth-generation Sierra (T1XX; 2019)|Chevrolet Silverado HD]] (2022-)||1953||&nbsp;||Located at 900 Park Rd South.<br /> Past models: [[w:Cadillac XTS|Cadillac XTS]] (2013-2019), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1985, 2000-2020), [[w:Chevrolet Impala#Impala Limited (2014–2016)|Chevrolet Impala Limited]] (2014-2016), [[w:Chevrolet Lumina|Chevrolet Lumina]] (1990-2001), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1995-2007), [[w:Buick Century#Sixth generation (1997–2005)|Buick Century]] (1997-2005), [[w:Buick Regal|Buick Regal]] (1988-2004, 2011-2017), [[w:Buick LaCrosse#First generation (2005)|Buick LaCrosse/Allure]] (2005-2009), [[w:Buick Special#1949–1958|Buick Special]] (1954-1958), [[w:Buick LeSabre|Buick LeSabre]] (1959-1966), [[w:Buick Century#Second generation (1954–1958)|Buick Century]] (1954-1958), [[w:Buick Invicta|Buick Invicta]] (1959-1962), [[w:Buick Wildcat|Buick Wildcat]] (1963-1966), [[w:Oldsmobile 88|Oldsmobile 88]] (1954-1966), [[w:Chevrolet 150|Chevrolet 150]] (1954-1957), [[w:Chevrolet 210|Chevrolet 210]] (1954-1957), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1955-1981), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1975), [[w:Chevrolet Camaro (fifth generation)|Chevrolet Camaro]] (2010-2015), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1985), [[w:Chevrolet Corvair|Chevrolet Corvair]] (1960-1966), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet Equinox#Second generation (2010)|Chevrolet Equinox]] (2011-2017), [[w:Chevrolet Nova|Chevrolet Nova]] (1962-1967),<br> [[w:General Motors A platform (1925)#1964|A-body (rwd) cars]]: [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1964-1977)/[[w:Chevrolet Malibu|Chevrolet Malibu]] (1978-1983)/[[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1971-1981)/ [[w:Oldsmobile Cutlass|Oldsmobile Cutlass]]/[[w:Oldsmobile 442|Oldsmobile 442]]/[[w:Pontiac LeMans|Pontiac LeMans]] (1971, 1973-1981)/[[w:Pontiac GTO|Pontiac GTO]] (1970)/[[w:Buick Special|Buick Special]]/[[w:Buick Skylark|Buick Skylark]],<br> [[w:General Motors A platform (1982)|A-body (fwd) cars]]: [[w:Chevrolet Celebrity|Chevrolet Celebrity]] (1982-1987)/[[w:Pontiac 6000|Pontiac 6000]] (1982-1988)/[[w:Oldsmobile Cutlass Ciera|Oldsmobile Cutlass Ciera]] (1985-1988),<br> [[w:Pontiac Bonneville#Sixth generation (1977–1981)|Pontiac Bonneville]] (1977-1981), [[w:Pontiac Catalina#1977–1981|Pontiac Catalina]] (1977-1981), [[w:Pontiac Grand Prix#Eighth generation (2004–2008)|Pontiac Grand Prix]] (2004-2008), [[w:Pontiac Catalina#Canada and Canadian exports|Pontiac Laurentian]] (1954-1981), [[w:Pontiac Parisienne|Pontiac Parisienne]] (1958-1984, US: 1983-1984), [[w:Pontiac Pathfinder|Pontiac Pathfinder]] (1954-1958), [[w:Pontiac Catalina#Canada and Canadian exports|Pontiac Strato Chief]] (1958-1970), [[w:Acadian (automobile)|Acadian]] (1962-1967), [[w:Beaumont (automobile)|Beaumont]] (1966-1969), [[w:Chevrolet Silverado#Third-generation Silverado / fourth-generation Sierra (K2XX; 2014)|Chevrolet Silverado 1500 LD/2500HD]] (2019), [[w:Chevrolet Silverado#Third-generation Silverado / fourth-generation Sierra (K2XX; 2014)|GMC Sierra 1500 Limited/2500HD]] (2019). <br /> VIN code 1 (1984-2019): Chevrolet Celebrity (1984-1987), Pontiac 6000 (1984-1985), Buick Regal (1988-2004), Chevrolet Lumina 4-d (1990-2001), Buick Century (1997-05), Pontiac Grand Prix (2004-2008), Buick LaCrosse/Allure (2005-2009), Chevrolet Impala (2008-2013), Chevrolet<br /> Impala Limited (2014-2016), Chevrolet Equinox (2011-2017), Chevrolet Silverado 1500 LD/2500HD (2019),<br /> GMC Sierra 1500 Limited/2500HD (2019) VIN code 9: Chevrolet Impala (1984-1985), Chevrolet Caprice (1984-1985), Pontiac Parisienne (1984), Pontiac 6000 (1985-1988), Oldsmobile Cutlass Ciera (1985-1988), Chevrolet Lumina 4-d (1990-1999), Chevrolet Lumina 2-d (1990-1994), Chevrolet Monte Carlo (1995-07), Chevrolet Impala (2000-08), Chevrolet Camaro (2010-2015), Buick Regal (2011-2017), Cadillac XTS (2013-2019), Chevrolet Impala (2014-2020) The current Oshawa complex (South plant; also known as Autoplex beginning in the 1980's) opened on November 7, 1953. The passenger car assembly plant had 2 assembly lines. Operations were gradually moved from the older North plant to the newer South plant. Originally built Chevrolet, Pontiac, Oldsmobile, and Buick models. However, Oldsmobile production ended in 1969 and Buick production ended in 1971. Oldsmobile production resumed with the '85 Cutlass Ciera while Buick production resumed with the '88 Regal. Oldsmobile production again ended in 1988 while Buick production continued through 2017 with a temporary hiatus in 2009-2010 calendar years. Pontiac production at Oshawa ended after 1988; only resuming in 2003 for the '04 Grand Prix. Pontiac production at Oshawa ended for good in 2008. Cadillac production began at the Oshawa South plant for the first time in 2012 with the 2013 XTS. Full-size pickups were built on Line 2 for 2019. This was the first time that pickups were built on one of Oshawa's passenger car assembly lines and the first time that pickups were made in Oshawa since Oshawa Truck closed in 2009. The last XTS was built on Sept. 10, 2019, the last Oshawa-built Impala on Oct. 25, 2019, & the last pickups on Dec. 18, 2019. Vehicle production at the South plant ended in 2019; plant will be transformed for stamping and production of body panels and subassemblies. Restart of vehicle production announced in Nov. 2020 - Truck production started in late 2021 with Silverado HD followed by the Silverado 1500 in 2022. Oshawa is now the only plant producing both Silverado 1500 & Silverado HD. Oshawa also produced face masks during the COVID-19 pandemic starting in 2020. |- |&nbsp;||[[w:Oshawa Metal|Oshawa Metal]]||[[w:Oshawa, Ontario|Oshawa, Ontario]]||[[w:Canada|Canada]]||Stamped metal parts for new production and for service parts||1986||&nbsp;||Part of the overall Oshawa Assembly complex (Autoplex) on Park Road South. Located at 1000 Park Road South. |- |&nbsp;||[[w:Parma Metal Center|Parma Metal Center]]||[[w:Parma, Ohio|Parma, Ohio]]||United States||Sheetmetal stampings & assemblies for various GM models||1948||&nbsp;||Located at 5400 Chevrolet Blvd.<br /> Metal fabricating |- |&nbsp;||[[Pontiac Metal Center]]||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States||Sheetmetal stampings & assemblies for various GM models||1926||&nbsp;||Located at 260 E. Beverly Ave.<br />Metal fabricating<br />Originally, an [[w:Oakland Motor Car Company|Oakland Motor Car]] plant. Last remaining manufacturing plant of the original Pontiac Assembly complex, which was Pontiac's home plant. |- |S||[[w:Ramos Arizpe Assembly|Ramos Arizpe Assembly]]||[[w:Ramos Arizpe|Ramos Arizpe]]||[[w:Mexico|Mexico]]||[[w:Chevrolet Blazer (crossover)|Chevrolet Blazer]] (2019-) <br />[[w:Chevrolet Blazer EV|Chevrolet Blazer EV]] (2024-) <br /> [[w:Chevrolet Equinox EV|Chevrolet Equinox EV]] (2024-) <br />[[w:Cadillac Optiq|Cadillac Optiq EV]] (2025-)<br /> [[w:Honda Prologue|Honda Prologue EV]] (2024-) ||1981||&nbsp;||Ramos Arizpe opened building 4 Chevrolet models for the Mexican market: Citation, Celebrity, Malibu, and Monte Carlo. The 1985 El Camino & Caballero were the first Mexican-built GM models to be sold in the US. GM began exporting the Celebrity to the US for 1987 followed by the Buick Century for 1989. GM began exporting the Chevy Cavalier to the US for 1991 followed by the Pontiac Sunbird for 1993, which was replaced by the Sunfire for 1995. Stamping plant added in 1995 and a paint shop added in 1997. The plant was expanded to add a 2nd assembly line to build the Pontiac Aztek for 2001, followed by the Buick Rendezvous for 2002. The 2nd line was also used to build the Chevy HHR, Saturn Vue, Chevy Captiva Sport, Cadillac SRX, & Saab 9-4X. Some 2nd gen. Chevy Cruze sedans made at Ramos Arizpe were sold in the US for the '16-'17 model years. All 2nd gen. Chevy Cruze 5-d hatchbacks ('17-'19) were made in Ramos Arizpe. All Chevy Cruze production at Ramos Arizpe ended in <br> Dec. 2018. The Cruze was the last passenger car made at Ramos Arizpe. A new paint shop was added in 2021, replacing the original from 1997. EV production began in 2023.<br />Past Models: <br> Mexico or Latin America only: [[w:Chevrolet Citation|Chevrolet Citation]] (1982-1986), [[w:Chevrolet Celebrity|Chevrolet Celebrity]] (1982-1986), [[w:Chevrolet Malibu#Fourth generation (1978)|Chevrolet Malibu]] (1981), [[w:Chevrolet Monte Carlo#Fourth generation (1981–1988)|Chevrolet Monte Carlo]] (1981-1984), [[w:Oldsmobile Cutlass Ciera|Chevrolet Cutlass (Mexico only)]], [[w:Buick Century#Fifth generation (1982–1996)|Chevrolet Century (Mexico only)]], [[w:Chevrolet Chevy|Chevrolet Chevy]] (Mexico: 1995-2012), [[w:Chevrolet Captiva Sport|Chevrolet Captiva Sport]] (2008-2017), [[w:Chevrolet Sonic|Chevrolet Sonic]] (Mexico: 2012-2017).<br> Export to US: [[w:Chevrolet El Camino|Chevrolet El Camino]] (1985-1987), [[w:GMC Caballero|GMC Caballero]] (1985-1987), [[w:Chevrolet Celebrity|Chevrolet Celebrity]] (US: 1987-1989), [[w:Buick Century#Fifth generation (1982–1996)|Buick Century]] (1989-1994), [[w:Chevrolet Cavalier|Chevrolet Cavalier]] (1991-2004), [[w:Pontiac Sunbird#Second generation (1982–1988)|Pontiac Sunbird]] (1993-1994), [[w:Pontiac Sunfire|Pontiac Sunfire]] (1995-2005), [[w:Pontiac Aztek|Pontiac Aztek]] (2001-2005), [[w:Buick Rendezvous|Buick Rendezvous]] (2002-2007), [[w:Chevrolet HHR|Chevrolet HHR]] (2006-2011), [[w:Saturn Vue#Second generation (2008)|Saturn Vue]] (2008-2010), [[w:Chevrolet Captiva Sport|Chevrolet Captiva Sport]] (US: 2012-2015), [[w:Cadillac SRX#Second generation (2010)|Cadillac SRX]] (2010-2016), [[w:Saab 9-4X|Saab 9-4X]] (2011), [[w:Chevrolet Cruze#Second generation (J400)|Chevrolet Cruze]] (2016-2019), [[w:Chevrolet Equinox#Third generation (2018)|Chevrolet Equinox]] (2018-2024).<br> Export to Australia/New Zealand: [[w:Holden Equinox|Holden Equinox (EQ)]] (2018-2020) |- |&nbsp;||Ramos Arizpe Engine||[[w:Ramos Arizpe|Ramos Arizpe]]||[[w:Mexico|Mexico]]||[[w:GM E-Turbo engine|1.2L Turbo 3-cylinder engine]]<br />[[w:General Motors LS-based small-block engine#Generation V (2013–present)|Gen V Small Block V8 & V6]]||1982||&nbsp;||Past engines: [[w:General Motors 60° V6 engine|Chevrolet 60° V6 engine]]<br />[[w:GM High Value engine|GM High Value V6]]<br />[[w:GM High Feature engine|GM High Feature V6]] |- |&nbsp;||Ramos Arizpe Transmission||[[w:Ramos Arizpe|Ramos Arizpe]]||[[w:Mexico|Mexico]]||VT40 (CVT250) [[w:Continuously variable transmission|CVT]] transmission ||1999||&nbsp;||Past transmissions: [[w:GM 4L60-E transmission|4L60-E/4L65-E 4-speed automatic]]<br />[[w:GM-Ford 6-speed automatic transmission|6T70/6T75 6-speed automatic (GF6)]]<br />4ET50 EVT (for [[w:Chevrolet Volt|Chevrolet Volt]])<br />4ET55 EVT (for [[w:Cadillac ELR|Cadillac ELR]]) |- |&nbsp;||[[w:Rochester Products Division|Rochester Operations]]||[[w:Rochester, NY|Rochester, NY]]||United States||Chevrolet, GMC, Cadillac, and Buick Components - Engine management systems, fuel injection systems, and related products. ||1939||&nbsp;||Located at 1000 Lexington Avenue. Founded in 1908 as the Rochester Coil Company. Renamed North East Electric Company in 1909. Acquired by GM in 1929. In 1930, merged with Delco-Light Co. to become Delco Appliance. A planned, second Delco Appliance plant on Lexington Ave. in Rochester instead became the Rochester Products Division of GM in 1939. This division made carburetors, fuel injection systems, & other fuel system equipment. During WWII, it made warplane and tank electrical accessories. In 1981, Rochester Products Division merged with GM's Diesel Equipment Division of Grand Rapids, Michigan retaining the Rochester Products Division name. On August 30, 1988, Rochester Products Division merged with GM's AC Spark Plug Division to form the AC Rochester Division. The Grand Rapids-based diesel fuel-injection business of the former Diesel Equipment Division was sold on August 26 to a joint venture of G.M. and the Penske Corporation called Diesel Technology Corporation (80% Penske, 20% Detroit Diesel, itself a joint venture between Penske & GM). Robert Bosch invested in Diesel Technology Corporation in 1992, eventually taking over the whole company by 2002. AC Rochester merged with parts of Delco Remy (the parts not spun off into Remy International) in 1994 to form AC Delco Systems. AC Delco Systems became part of GM's Delphi Automotive Systems subsidiary in 1995. Spun off with Delphi Automotive Systems in 1999 (Rochester Powertrain); taken back under [[w:Delphi Corporation|Delphi Corporation]] bankruptcy and made part of [[w:General Motors Components Holdings|General Motors Components Holdings]] in 2009. |- |&nbsp;||[[w:Romulus Engine|Romulus Engine]]||[[w:Romulus, Michigan|Romulus, Michigan]]||United States||[[w:GM High Feature engine#Fourth generation|Gen4 High Feature V6]] ||1976||&nbsp;||Located at 36880 Ecorse Road. Originally part of GM's Detroit Diesel Allison Division where it built diesel engines and components. Switched to gasoline engines in the 1980's.<br /> Past engines: [[w:Chevrolet 90° V6 engine|Chevrolet 90° V6 engine]]<br />[[w:General Motors LS-based small-block engine#Generation III (1997–2007)|Gen III Small Block V8]]<br />[[w:GM LS engine#Generation IV (2005–2020)|Gen IV Small Block V8]] |- |&nbsp;||[[w:Romulus Engine|Romulus Transmission]]||[[w:Romulus, Michigan|Romulus, Michigan]]||United States||[[w:"Ford-GM 10-speed automatic transmission#General Motors|10L80/90 Transmission]]||1995||&nbsp;||Located at 36880 Ecorse Road.<br />Past transmissions: [[w:GM 4L60-E transmission|GM 4L60-E transmission]] |- |R||Rosario||[[w:Alvear, Santa Fe|Alvear]], [[w:Rosario Department|Rosario Department]], [[w:Santa Fe Province|Santa Fe Province]]||[[w:Argentina|Argentina]]||<br/>[[w:Chevrolet Tracker (2019)|Chevrolet Tracker]] Engines: [[w:GM small gasoline engine#LE2|1.4L Turbo I4 LE2]] ||1997||&nbsp;||Engine plant added in 2016. Past Models: [[w:Chevrolet Cruze#Second generation (J400)|Chevrolet Cruze]], [[w:Opel Corsa#Corsa C (X01; 2000)|Chevrolet Corsa C]], [[w:Opel Corsa#Corsa B|Chevrolet Corsa B/Corsa Classic/Classic]], [[w:Chevrolet Agile|Chevrolet Agile]]<br /> and [[w:Chevrolet Tracker (Americas)#Second generation|Suzuki Grand Vitara/Chevrolet Tracker]] |- |&nbsp;||[[w:Saginaw Metal Casting Operations|Saginaw Metal Casting Operations]]||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||Metal casting for powertrains (High Feature V6 engine): engine blocks, heads, and crankshafts<br/>Front 4WD axle assembly castings||1919||&nbsp;||Located at 1629 N. Washington Avenue. Originally the Grey Iron Foundry, a part of General Motors Saginaw Products Co. and renamed as Chevrolet Saginaw Grey Iron Foundry when transferred to Chevrolet Motor Division in 1927. Moved to Central Foundry Division in 1983. Joins GM Powertrain Division in 1991. Renamed Saginaw Metal Casting Operations in 1994 to reflect that it now pours aluminum. First production aluminum heads produced in 1995. Over the years, it has produced both cast iron and cast aluminum engine blocks for the Chevy Small-Block V8. |- |L||[[w:San Luis Potosí Assembly|San Luis Potosí Assembly]]||[[w:San Luis Potosí, San Luis Potosí|San Luis Potosí]]||[[w:Mexico|Mexico]]||[[w:Chevrolet Equinox#Fourth generation (2025)|Chevrolet Equinox]] (2025-)<br />[[w:GMC Terrain#Third generation (2025)|GMC Terrain]] (2025-)||2008||&nbsp;||Note: Aveo & G3 made in San Luis Potosi were not sold in the US but they were sold in Canada. Onix was not sold in the US or Canada. 2013-2014 Trax was sold in Canada & Mexico but not in the US.<br> Past models: [[w:Chevrolet Aveo (T200)|Chevrolet Aveo (T250)]] (2009-2018)<br />[[w:Pontiac G3|Pontiac G3/G3 Wave]] (2009-2010)<br />[[w:Chevrolet Onix#Second generation (2019)|Chevrolet Onix]] (2020-2022)<br />[[w:Chevrolet Trax#First generation (U200; 2013)|Chevrolet Trax]] (2013-2020)<br />[[w:Chevrolet Equinox#Third generation (2018)|Chevrolet Equinox]] (2018-2024)<ref>{{Cite web|url=https://vpic.nhtsa.dot.gov/mid/home/displayfile/7c659360-416a-4e96-ae38-0b69d916c106|title=GM Vehicle Identification Numbering Standard - 2021 - United States and Canada|date=August 14, 2020}}</ref><br />[[w:GMC Terrain#Second generation (2018)|GMC Terrain]] (2018-2024) |- |&nbsp;||San Luis Potosí Transmission||[[w:San Luis Potosí, San Luis Potosí|San Luis Potosí]]||[[w:Mexico|Mexico]]||FWD GF9 9 Speed Transmissions||2009||&nbsp;||[[w:GM-Ford 6-speed automatic transmission|GM-Ford 6-speed automatic transmission]] 6T40/45 (GF6) |- |B||[[w:General Motors do Brasil|São Caetano do Sul Assembly]]||[[w:São Caetano do Sul|São Caetano do Sul]], [[w:São Paulo (state)|São Paulo]]||[[w:Brazil|Brazil]]|| [[w:Chevrolet Montana#Third generation (2022)|Chevrolet Montana]] <br /> [[w:Chevrolet Spin|Chevrolet Spin]]<br />[[w:Chevrolet Tracker (2019)|Chevrolet Tracker]]<br /> ||1930||&nbsp;||Past Models: [[w:Opel Astra#G|Chevrolet Astra]], [[w:Opel Astra#H |Chevrolet Vectra/Vectra GT]] (both until 2011), [[w:Chevrolet C/K#1985–1996|Chevrolet Bonanza]], [[w:Chevrolet C/K#1964–1984|Chevrolet C-10/C-14/C-15/Chevy 4/D-10/A-10]], [[w:Chevrolet D-20|Chevrolet A-10/C-10/A-20/C-20/D-20]], Chevrolet A40/D40, [[w:Chevrolet Cobalt#Second generation (2011)|Chevrolet Cobalt]], [[w:Chevrolet Comodoro|Chevrolet Comodoro]], [[w:Opel Corsa#Corsa B (S93; 1993)|Chevrolet Corsa B]], [[w:Chevrolet Corsa|Chevrolet Corsa Classic]], [[w:Chevrolet Cruze#First generation (J300; 2008)|Chevrolet Cruze]], [[w:Chevrolet Diplomata|Chevrolet Diplomata]], [[w:Chevrolet Onix|Chevrolet Joy]], [[w:Chevrolet Kadett|Chevrolet Kadett]] 1996-1998, [[w:Chevrolet Montana#Second generation (2011–2021)|Chevrolet Montana]], [[w:Opel Ascona#Chevrolet Monza|Chevrolet Monza]], [[w:Chevrolet Omega#Omega A|Chevrolet Omega A]], [[w:Chevrolet Opala|Chevrolet Opala]], [[w:Opel Vectra#Vectra A (1988–1995)|Chevrolet Vectra A]], [[w:Opel Vectra#Vectra B (1995–2002)|Chevrolet Vectra B]], [[w:Chevrolet Veraneio|Chevrolet C-1416/Veraneio]], Chevrolet 3100/Brasil/Amazona/Alvorada/Corisco, Chevrolet 6500, Chevrolet C64/C65/C68/D64/D65/D68/D74/D75/D78,<br> Bus bodies, Frigidaire appliances |- |C||[[w:General Motors do Brasil|São José dos Campos Assembly]]||[[w:São José dos Campos|São José dos Campos]], [[w:São Paulo (state)|São Paulo]]||[[w:Brazil|Brazil]]|| [[w:Chevrolet S-10#Third generation (2012)|Chevrolet S-10]]<br/>[[w:Chevrolet Trailblazer (SUV)#Second generation (RG; 2011)|Chevrolet Trailblazer]] Engines:<br/> 2.8L turbodiesel <br> 4-cylinder engines<br /> Transmissions |1959||&nbsp;||Supplied 1.8L & 2.0L SOHC Family II I4 engines to the US from 1982-1994. <br />Past Models: [[w:Chevrolet Montana#First generation (2003–2010)|Chevrolet Montana]]<br /> [[w:Chevrolet S-10 Blazer#Second generation (1995)|Chevrolet Blazer]], [[w:Opel Corsa#Corsa C (X01; 2000)|Chevrolet Corsa C]], [[w:Opel Corsa#Corsa C (X01; 2000)|Chevrolet Corsa Sedan C]], [[w:Opel Meriva#First generation (2003)|Chevrolet Meriva]], [[w:Opel Zafira#Zafira A (1999–2006)|Chevrolet Zafira]] (all until 2012)<br />[[w:Chevrolet Chevette|Chevrolet Chevette]], [[w:Chevrolet Chevette#Chevy 500|Chevrolet Chevy 500]], [[w:Chevrolet Kadett|Chevrolet Kadett]] 1989-1996, [[w:Chevrolet S-10#Second generation (1994)|Chevrolet S-10]], [[w:Chevrolet C/K#1997–2002|Chevrolet Silverado D20]], Chevrolet 11000/12000/14000/22000, [[w:GMC Chevette|GMC Chevette]], [[w:GMC Chevette|GMC 500]], [[w:Chevrolet C/K#1997–2002|GMC 6-100/6-150/3500HD]], [[w:Chevrolet Kodiak#Second generation (1990–2002)|GMC 12-170/14-190/16-220]], [[w:Isuzu Forward|GMC 15-190]] Engines including: [[w:Chevrolet Stovebolt engine#261|Chevrolet Jobmaster 261 I6]], [[w:Chevrolet 153 4-cylinder engine#Brazil|Chevrolet 153 4-cylinder]], [[w:Chevrolet Turbo-Thrift engine|Chevrolet Turbo-Thrift engine]], [[w:GM Family 1 engine|GM Family 1 engine]], [[w:GM Family II engine|GM Family II engine]]<br />Detroit Diesel Series 53<br />Transmissions |- |G||[[Silao Assembly]]||[[w:Silao, Mexico|Silao]]||[[w:Mexico|Mexico]]||[[w:Chevrolet Silverado|Chevrolet Silverado]] (2006-)<br />[[w:Chevrolet Silverado|GMC Sierra]] (2006-), Chevrolet Cheyenne (Mexico)||1995||&nbsp;|| Stamping plant added in 1997. Began by building full-size SUVs for 1995. Was the sole assembler of GM's full-size SUTs. Began building full-size pickups for 2006. Full-size SUV production moved entirely to Arlington Assembly after the 2009 model year.<br> Past production models: [[w:Chevrolet Suburban|Chevrolet Suburban]] (1995-2009), [[w:Chevrolet Suburban#Eighth generation (1992)|GMC Suburban]] (1995-1999), [[w:GMC Yukon XL|GMC Yukon XL]] (2000-2006), [[w:Cadillac Escalade#Second generation (2002)|Cadillac Escalade ESV]] (2003-2006),<br> [[w:Chevrolet Suburban (eighth generation)#Holden Suburban|Holden Suburban (K8)]] (1998-2001),<br> [[w:Chevrolet Avalanche|Chevrolet Avalanche]] (2002-2013),<br> [[w:Cadillac Escalade EXT|Cadillac Escalade EXT]] (2002-2013) |- |&nbsp;||Silao Engine||[[w:Silao, Mexico|Silao]]||[[w:Mexico|Mexico]]||[[w:General Motors LS-based small-block engine#Generation V (2013–present)|Gen V Small Block V8]]||2001||&nbsp;||[[w:General Motors LS-based small-block engine#Generation IV (2005–2020)|Gen IV Small Block V8]] |- |&nbsp;||Silao Transmission||[[w:Silao, Mexico|Silao]]||[[w:Mexico|Mexico]]||[[w:GM 8L45 transmission|8L45]], [[w:GM 8L90 transmission|8L90]], [[w:Ford-GM 10-speed automatic transmission|10L80]]||2008||&nbsp;||[[w:GM 6L50 transmission|6L50]], [[w:GM 6L80 transmission|6L80/90]] |- |Z,<br />S (Traverse & Vue)||[[w:Spring Hill Manufacturing|Spring Hill Manufacturing]]||[[w:Spring Hill, Tennessee|Spring Hill, Tennessee]]||United States||<br /> [[w:Cadillac XT5|Cadillac XT5]] (2017-)<br />[[w:Cadillac Lyriq|Cadillac Lyriq]] (2023-) <br />[[w:Cadillac Vistiq|Cadillac Vistiq]] (2026-) <br /><br /> [[w:Chevrolet Blazer|Chevrolet Blazer]] (Starting 2027) <br /> <br />[[w:GM small gasoline engine#1.5|1.5L Turbo I4]]<br />[[w:GM Ecotec engine#Generation III|Ecotec Gen III 2.0L Turbo I4]]<br />[[w:GM L3B engine|2.7L L3B turbo I4]]<br />5.3 & 6.2 [[w:LS based GM small-block engine#Generation V (2013–present)|Gen V <br />Small-Block V8 Engine]]<br /><br />Stamping<br />Components||1990||2009-2012||Located at 100 Saturn Parkway. The original home of the [[w:Saturn Corporation|Saturn]] brand. Originally, Saturn built everything here - all its vehicles, engines, transmissions, stampings, and components. But, gradually, Saturn production was broadened to other plants and by 2007, Saturn production in Spring Hill had ended. Spring Hill made products for other GM brands and has continued to do so since Saturn was closed down during GM's bankruptcy. <br /> Past models: [[w:Saturn S-Series|Saturn S-Series]] (1991-2002), [[w:Saturn Ion|Saturn Ion]] (2003-2007), [[w:Saturn Vue#First generation (2002)|Saturn Vue]] (2002-2007), [[w:Chevrolet Traverse#First generation (2009)|Chevrolet Traverse]] (2009-2010), [[w:Chevrolet Equinox#Second generation (2010)|Chevrolet Equinox]] (2013-2016), [[w:GMC Acadia#Second generation (2017)|GMC Acadia]] (2017-2023), [[w:Holden Acadia|Holden Acadia (AC)]], [[w:Cadillac XT6|Cadillac XT6]] (2020-2025),<br /> [[w:Acura ZDX#Second generation (2024)|Acura ZDX EV]] (2024).<br /> Past Engines: [[w:Saturn I4 engine|Saturn I4 engine]], [[w:GM Ecotec engine#2.4|Ecotec Gen II 2.4L I4]],<br> [[w:GM Ecotec engine#LHU (A20NFT Opel)|Ecotec Gen II LHU 2.0L Turbo I4]], [[w:GM Ecotec engine#Generation III|Ecotec Gen III 2.5L I4]] <br /> [[w:Saturn MP transmission|Saturn MP series manual and automatic transmissions]] Transmission production in Spring Hill ended in 2002. Ion production ended March 28, 2007 and was replaced by the Belgian-built Astra for the 2008 model year. Vue production ended March 30, 2007 and moved to Mexico for the 2008 model year. Assembly was idled for more than a year beginning April 1, 2007 for conversion to Chevy Traverse production. Traverse production began September 2, 2008. Assembly idled in November 2009 when Chevy Traverse production was moved to Lansing Delta Township Assembly. Assembly reopened in September 2012<ref>{{cite news| url=https://www.nytimes.com/2011/09/18/business/general-motors-said-to-offer-bonuses-in-new-deal-with-workers.html | work=The New York Times | author1=Bill Vlasic | author2=Nick Bunkley | title=G.M. Will Offer Bonuses in New Deal With Workers | date=September 17, 2011}}</ref> to produce the [[w:Chevrolet Equinox#Second generation (2010)|Chevrolet Equinox]]. Spring Hill also includes a plastic injection molding operation that produce various plastic components. Plastic components have also been produced for models not built in Spring Hill such as [[w:Chevrolet Traverse|Chevrolet Traverse]] and the [[w:Chevrolet Corvette (C7)|Chevrolet Corvette (C7)]]. |- |&nbsp;||[[w:St. Catharines Engine Plant|St. Catharines Propulsion Plant]]||[[w:St. Catharines, Ontario|St. Catharines, Ontario]]||[[w:Canada|Canada]]||[[w:General Motors LS-based small-block engine#Generation V (2013–present)|Gen V Small Block V8]]<br />[[w:Tremec|Tremec]] TR-9080 8-speed dual clutch transmission<br />Engine components||1954||&nbsp;||Located at 570 Glendale Avenue. Operated as part of GM subsidiary McKinnon Industries, Ltd. until 1969 when it became "General Motors of Canada Limited, St. Catharines".<br />Previously:<br />[[w:Chevrolet Turbo-Thrift engine|Chevrolet Turbo-Thrift I6 engine]] (1963-1967)<br />[[w:Oldsmobile V8 engine|Oldsmobile Rocket V8 engine]] (through 1966)<br />[[w:Buick V6 engine#225|Buick 225 V6 engine]] (through 1966)<br />[[w:Buick V8 engine|Buick V8 engine]] (300, 340, 401) (through 1966)<br /> [[w:General Motors 60° V6 engine|Chevrolet 60° OHV V6 engine]] (2.8, 3.1)<br />[[w:General Motors 60° V6 engine#LQ1|Chevrolet 3.4L DOHC LQ1 V6 engine]]<br />[[w:GM High Feature engine|High Feature V6 engine]] (2.8, 3.6)<br />[[w:Chevrolet small-block engine (first and second generation)|Chevrolet Small-Block V8]] (265/267/283/305/307/327/350)<br />[[w:General Motors LS-based small-block engine#Generation III (1997–2007)|Gen III Small Block V8]]<br />[[w:GM LS engine#Generation IV (2005–2020)|Gen IV Small Block V8]]<br />[[w:GM 6T40 transmission|(GF6) 6T45 6-speed automatic]] |- |&nbsp;||[[w:Toledo Transmission|Toledo Transmission]]||[[w:Toledo, Ohio|Toledo, Ohio]]||United States||Transmissions:<br /> RWD GM-Allison 10-speed (10L1000) (AB1V) / 8-speed ([[w:GM 8L45 transmission|8L45]] & [[w:GM 8L90 transmission|8L90]]) <br /> FWD GF9 9 Speed Transmissions||1956|| ||Located at 1455 West Alexis Road. Acquired from the former Martin-Parry Corporation in 1955. Replaced the older Toledo plant on Central Ave. <br />Previously:<br /> [[w:Turbo-Hydramatic#THM350|THM350 3-speed automatic]]<br />[[w:Turbo-Hydramatic#THM700R4 / 4L60 / 4L60E / 4L65E / 4L70E|THM700R4/4L60 4-speed automatic]]<br />[[w:GM 4L60-E transmission|4L60-E/4L65-E/4L70-E 4-speed automatic]]<br />[[w:GM 6T40 transmission|(GF6) 6T30/35/40/45/50 6-speed automatic]] <br /> ([[w:GM 6L50 transmission|6L45/6L50]] & [[w:GM 6L80 transmission|6L80/6L90]]) 6-speed automatics |- ||&nbsp;||Toluca Engine||[[w:Toluca|Toluca]], [[w:State of Mexico|State of Mexico]] |[[w:Mexico|Mexico]] |[[w:GM small gasoline engine|GM Small Gasoline Engine 1.4L/1.5L I4]] (including 1.5 turbo LSD I4 for Equinox/Terrain) [[w:Chevrolet 153 4-cylinder engine#Vortec 3000|Vortec 3000 Marine & Industrial 4-cyl. engine]]<br /> 5.0 & 5.7 Marine & Industrial V8 engines<br /> Small-Block V8 engines for the aftermarket<br /> Aluminum Foundry<br /> |1965 | |Past engines: [[w:GM Family 1 engine|GM Family 1 I4 engine]] <br />[[w:Chevrolet Turbo-Thrift engine#292|Chevrolet 292 (4.8L) Inline-6]] |- |&nbsp;||[[w:Tonawanda Engine|Tonawanda Engine]]||[[w:Buffalo, New York|Buffalo, New York]]||United States||[[w:LS based GM small-block engine#LV1|LV1]] 4.3L V6 [[w:LS based GM small-block engine#L84|L84]] 5.3L V8 [[w:LS based GM small-block engine#L86/L87|L87]] 6.2L V8 [[w:General Motors LS-based small-block engine#LT2|LT2]] 6.2L V8 [[w:LS based GM small-block engine#L8T|L8T]] 6.6L V8 [[w:GM Ecotec engine#LSY|LSY]] 2.0T I4 |1938 |&nbsp;||Located at 2995 River Rd. Includes 3 plants. Plant #1 opened in 1938. Plant #4 opened in 1941. Plant #5 opened in 2001. Past engines: Built the [[w:Pratt & Whitney R-1830 Twin Wasp|Pratt & Whitney R-1830 Twin Wasp]] radial engine used in the [[w:B-24 Liberator|B-24 Liberator]] bomber during WW-2 Built the [[w:Pratt & Whitney R-2800 Double Wasp|Pratt & Whitney R-2800 Double Wasp]] radial engine used in the [[w:P-61 Black Widow|P-61 Black Widow]] & [[w:P-47 Thunderbolt|P-47 Thunderbolt]] fighters during WW-2 [[w:Chevrolet 2300 engine|Chevrolet 2300 engine]] (Vega I4) [[w:General Motors 122 engine|Chevrolet 122 engine]] (1.8/2.0/2.2L OHV I4) [[w:GM Ecotec engine#2.2|Ecotec 2.2L Gen I]] (L850) [[w:GM Ecotec engine#2.2_2|Ecotec 2.2L Gen II]], [[w:GM Ecotec engine#2.4|Ecotec 2.4L Gen II]] [[w:GM Ecotec engine#LTG|Ecotec Gen III LTG 2.0T I-4]], [[w:GM Ecotec engine#2.5|Ecotec 2.5L Gen III]] [[w:General Motors Atlas engine#LK5 (Vortec 2800)|Atlas 2.8/2.9 I4]]<br />[[w:General Motors Atlas engine#L52 (Vortec 3500)|Atlas 3.5/3.7 I5]] [[w:Chevrolet Turbo-Air 6 engine|Corvair Flat-6 (all)]] [[w:Chevrolet Stovebolt engine#Second generation: 1937–1962|Chevrolet Stovebolt / Blue Flame I6]] [[w:Chevrolet 90° V6 engine|Chevrolet 3.3L/3.8L/4.3L 90° V6]] [[w:General Motors 60° V6 engine|Chevrolet 60° V6 engine]], [[w:GM High Value engine|High Value 3.9L V6]] [[w:Chevrolet small-block engine (first and second generation)|Chevrolet Small-Block V8]] [[w:Chevrolet Big-Block engine|Chevrolet Big-Block V8]] Gen V Small-Block 90° V6/V8: [[w:LS based GM small-block engine#LV3|LV3]] 4.3L V6, [[w:LS based GM small-block engine#L82|L82]] 5.3L V8, [[w:LS based GM small-block engine#L83|L83]] 5.3L V8, [[w:LS based GM small-block engine#L86|L86]] 6.2L V8, [[w:LS based GM small-block engine#LT1|LT1]] 6.2L V8, [[w:LS based GM small-block engine#LT4|LT4 6.2L Supercharged V8]] |- |&nbsp;||[[w:Ultium#Production|Ultium Cells LLC - Spring Hill]]||[[w:Spring Hill, Tennessee|Spring Hill, Tennessee]]||United States||Ultium lithium-ion battery cells for EV's||2024|| || Owned by Ultium Cells LLC, a 50/50 joint venture between General Motors and [[w:LG Energy Solution|LG Energy Solution]]. This is Ultium Cells' second plant. Located at 301 Donald F Ephlin Pkwy. |- |&nbsp;||[[w:Ultium#Production|Ultium Cells LLC - Warren]]||[[w:Warren, Ohio|Warren, Ohio]]||United States||Ultium lithium-ion battery cells for EV's||2022|| || Owned by Ultium Cells LLC, a 50/50 joint venture between General Motors and [[w:LG Energy Solution|LG Energy Solution]]. This is Ultium Cells' first plant. Located at 7400 Tod Ave SW. |- |1||[[w:Wentzville Assembly|Wentzville Assembly]]||[[w:Wentzville, Missouri|Wentzville, Missouri]]||United States||[[w:Chevrolet Express|Chevrolet Express]] (1996-)<br />[[w:GMC Savana|GMC Savana]] (1996-)<br />[[w:Chevrolet Colorado|Chevrolet Colorado]] (2015-)<br />[[w:GMC Canyon|GMC Canyon]] (2015-)||1983||&nbsp;||Located at 1500 E. Rte. A. Originally opened to build the 1985 Fwd C-bodies. Began building Fwd H-bodies for 1986. On Oct. 29, 1991, Wentzville built the 30 millionth Pontiac, a white 1992 Bonneville SSEi. Ended passenger car production in 1994. Converted to truck production. Began building full-size vans in 1996. Added midsize pickups in 2014. <br />Past models: [[w:Buick Electra#Sixth generation (1985–1990)|Buick Electra]] (1985-1990), [[w:Buick Park Avenue#First generation (1991–1996)|Buick Park Avenue]] (1991-1994), [[w:Oldsmobile 88#Ninth generation (1986–1991)|Oldsmobile Delta 88/88]] (1986-1991),<br> [[w:Oldsmobile 88#Tenth generation (1992–1999)|Oldsmobile 88]] (1992-1993), [[w:Oldsmobile 98#Eleventh generation (1985–1990)|Oldsmobile 98]] (1985-1989), [[w:Oldsmobile Touring Sedan|Oldsmobile Touring Sedan]] (1989),<br> [[w:Pontiac Bonneville#Eighth generation (1987–1991)|Pontiac Bonneville]] (1989-1991), [[w:Pontiac Bonneville#Ninth generation (1992–1999)|Pontiac Bonneville]] (1992-93) |- |A||[[w:SAIC-GM|SAIC-GM]] Shanghai plant||[[w:Jinqiao|Jinqiao]], [[w:Pudong|Pudong]] district, [[w:Shanghai|Shanghai]]||[[w:China|China]]||[[w:Cadillac CT4|Cadillac CT4]]<br />[[w:Cadillac CT5|Cadillac CT5]]<br />[[w:Cadillac CT6|Cadillac CT6]]<br />[[w:Cadillac Lyriq|Cadillac Lyriq]]<br />[[w:Cadillac Vistiq|Cadillac Vistiq]]<br>[[w:Cadillac XT4|Cadillac XT4]]<br />[[w:Cadillac XT5|Cadillac XT5]]<br />[[w:Cadillac XT6|Cadillac XT6]]<br />[[w:Chevrolet Blazer (crossover)#Chinese version|Chevrolet Blazer]]<br />[[w:Chevrolet Malibu#Ninth generation (2016)|Chevrolet Malibu XL]]<br />[[w:Buick Enclave#China (2020)|Buick Enclave]]<br />[[w:Buick GL8#Third generation (2017–present)|Buick GL8 ES/Avenir/PHEV (Mk III)]]<br />[[w:Buick GL8#Fourth generation (2022)|Buick GL8 Century (Mk IV)]]<br />[[w:Buick GL8#Electra Encasa (2025)|Buick Electra Encasa (Mk V)]]<br />[[w:Buick LaCrosse|Buick LaCrosse]]<br />[[w:Buick Regal#Sixth generation (2018)|Buick Regal]] (E2XX)<br />Engines<br />Engine components<br />Transmissions<br />Ultium batteries||1998||&nbsp;||Operated by [[w:SAIC-GM|SAIC-GM]]. There are 3 vehicle production plants (North, South, & East). North was the original plant. South began production in 2005. The East or "Cadillac" plant began production in 2016. On October 28, 2025, the Shanghai plant produced its 4 millionth vehicle, a 2026 Cadillac XT5. Past models: [[w:Buick Century#Sixth generation (1997–2005)|Buick New Century]] (W-body)<br />[[w:Buick Excelle#First generation (J200; 2003)|Buick Excelle]]<br />[[w:Buick GL8#First generation (2000–2016)|Buick GL8 Mk I (1999-2004)]]<br />[[w:Buick Park Avenue#Third generation (2007–2012)|Buick Park Avenue (WM)]] (CKD)<br />[[w:Buick Regal#China|Buick Regal]] (W-body)<br />[[w:Buick Regal#Fifth generation (2008)|Buick Regal]] (Epsilon II)<br />[[w:Buick Sail|Buick Sail]]<br />[[w:Buick Velite 5|Buick Velite 5]]<br />[[w:Buick Velite 7|Buick Velite 7]]<br />[[w:Chevrolet Malibu#Eighth generation (2013)|Chevrolet Malibu]]<br />[[w:Cadillac ATS#ATS-L|Cadillac ATS-L]]<br />[[w:Cadillac CTS#First generation (2003)|Cadillac CTS]]<br />[[w:Cadillac STS#Chinese Cadillac SLS|Cadillac SLS]]<br />[[w:Cadillac XTS|Cadillac XTS]]<br /> Past Engines: [[w:General Motors 60° V6 engine#Production in China by SAIC-GM|Chevrolet 60° OHV V6]] |- |D||[[w:SAIC-GM|SAIC-GM]] Dongyue Motors||[[w:Yantai|Yantai]], [[w:Shandong|Shandong]]||[[w:China|China]]||[[w:Buick Envision|Buick Envision]]<br />[[w:Cadillac GT4|Cadillac GT4]]||2001||&nbsp;||Operated by [[w:SAIC-GM|SAIC-GM]]. Originally founded in 2001 as Yantai Bodyshop Corp. which built Daewoo vehicles ([[w:Daewoo Lanos|Daewoo Lanos]]) under license from Daewoo Motor Co. SAIC-GM took over the plant in 2002. There are 2 vehicle production plants (North & South). SAIC-GM Dongyue Motors joint venture is owned 50% by SAIC-GM, 25% by GM China, & 25% by SAIC. <br /> Past models: [[w:Buick Encore#First generation (2013)|Buick Encore]]<br />[[w:Buick Encore GX|Buick Encore GX]]<br />[[w:Buick Encore GX|Buick Encore Plus]]<br />[[w:Buick Excelle#Second generation (2018)|Buick Excelle]]<br />[[w:Buick Excelle GT#First generation (2009)|Buick Excelle GT/XT]]<br />[[w:Chevrolet Sail#Buick Sail|Buick Sail]]<br />[[w:Chevrolet Aveo#Second generation (T300; 2012)|Chevrolet Aveo (T300)]]<br />[[w:Chevrolet Sail#Third generation (2014)|Chevrolet Aveo (Mex.)]]<br />[[w:Chevrolet Sail#Chevrolet Sail|Chevrolet Corsa Plus (Chile)]]<br />[[w:Daewoo Magnus|Chevrolet Epica (V200)]]<br />[[w:Daewoo Tosca|Chevrolet Epica]] (V250)<br />[[w:Chevrolet Aveo (T200)|Chevrolet Lova]]<br />[[w:Chevrolet Lova RV|Chevrolet Lova RV]]<br />[[w:Chevrolet Onix#Second generation (2019)|Chevrolet Onix]]<br />[[w:Chevrolet Orlando#Second generation (2018)|Chevrolet Orlando]]<br />[[w:Chevrolet Sail|Chevrolet Sail]]<br />[[w:Chevrolet Trailblazer (crossover)|Chevrolet Trailblazer]]<br />[[w:Chevrolet Trax|Chevrolet Trax]] |- |&nbsp;||[[w:SAIC-GM|SAIC-GM]] Dongyue Powertrain||[[w:Yantai|Yantai]], [[w:Shandong|Shandong]]||[[w:China|China]]||Engines<br />Transmissions including: [[w:GM 6T40 transmission|6T30/6T40/6T45/6T50]], [[w:Continuously variable transmission|CVT]]||1999||&nbsp;||Operated by [[w:SAIC-GM|SAIC-GM]]. Originally founded in 1999 as Shandong Daewoo Automotive Engine Co., Ltd., a 50/50 joint venture between Daewoo Motor Co. & Chinese partners owned by the Shandong provincial govt. SAIC-GM took over the plant in 2005. SAIC-GM Dongyue Powertrain joint venture is owned 50% by SAIC-GM, 25% by GM China, & 25% by SAIC. <br /> Past Engines: [[w:GM Family 1 engine#Generation III|Family I, Gen 3 engine]] |- |&nbsp;||[[w:SAIC-GM|SAIC-GM]] Norsom Motors||[[w:Shenyang|Shenyang]], [[w:Liaoning|Liaoning]]||[[w:China|China]]|| ||1992||2025||Operated by [[w:SAIC-GM|SAIC-GM]]. Originally founded in 1992 as Jinbei GM Automotive Co. Ltd., a 30/70 joint venture between GM & Shenyang Jinbei Automotive. Restructured into a 50/50 joint venture between GM & Jinbei in 1998. SAIC-GM took over the joint venture in 2004, buying out Jinbei. The new SAIC-GM Norsom Motors joint venture is owned 50% by SAIC-GM, 25% by GM China, & 25% by SAIC. Plant closed in February 2025 due to declining sales in China by SAIC-GM. Past models:<br /> Jinbei GM:<br />[[w:Chevrolet S-10 Blazer#Second generation (1995–2005)|Chevrolet Blazer]]<br />[[w:Chevrolet S-10#Second generation (1994)|Chevrolet S-10 Crew Cab]]<br />SAIC-GM:<br />[[w:Chevrolet Cruze|Chevrolet Cruze]]<br />[[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]]<br />[[w:Chevrolet Tracker (2019)|Chevrolet Tracker]] <br />[[w:Chevrolet Seeker|Chevrolet Seeker]]<br/> [[w:Buick Encore#Second generation (2020)|Buick Encore]]<br />[[w:Buick Envista|Buick Envista]]<br />[[w:Buick GL8#First generation (2000–2016)|Buick GL8 Mk I (2004-2016)]]<br />[[w:Buick GL8#Second generation (2010-present)|Buick GL8 Land Business Class (Mk II) (2010-2025)]]<br />[[w:Buick Verano#Second generation (2016)|Buick Verano]] <br/> Engines |- |V||[[w:SAIC-GM|SAIC-GM]] Wuhan Branch||[[w:Wuhan|Wuhan]], [[w:Hubei|Hubei]]||[[w:China|China]]||[[w:Chevrolet Equinox#Fourth generation (2025)|Chevrolet Equinox Plus]]<br />[[w:Chevrolet Monza (China)|Chevrolet Monza]]<br />[[w:Chevrolet Menlo|Chevrolet Menlo]]<br />[[w:Buick Verano#Third generation (Pro, 2021)|Buick Verano Pro]]<br />[[w:Buick Velite 6|Buick Velite 6]]<br />[[w:Buick Electra E5|Buick Electra E5]]<br />[[w:Buick Electra L7|Buick Electra L7]]<br />[[w:Buick Electra E7|Buick Electra E7]]<br />[[w:Cadillac Optiq|Cadillac Optiq]]<br /> Engines||2015<ref>{{Cite news |author=Joseph Szczesny |date=30 January 2015 |title=Ford, GM Implement Expansion Plans in China |work=The Detroit Bureau |url=https://www.thedetroitbureau.com/2015/01/ford-gm-implement-expansion-plans-in-china/ |access-date=19 June 2022}}</ref>||&nbsp;||Operated by [[w:SAIC-GM|SAIC-GM]].<ref>{{Cite news |author=Jamie L. LaReau |date=27 February 2020 |title=Restart of GM's plant in China stalls due to coronavirus crisis |work=Detroit Free Press |url=https://www.freep.com/story/money/cars/general-motors/2020/02/27/gm-delays-start-production-china-plant-due-coronavirus-crisis/4884203002/ |access-date=19 June 2022}}</ref> Past models: [[w:Chevrolet Cavalier#China|Chevrolet Cavalier]] <br />[[w:Chevrolet Equinox#Third generation (2018)|Chevrolet Equinox]]<br />[[w:Buick Electra E4|Buick Electra E4]]<br />[[w:Buick Excelle GT#Second generation (2015)|Buick Excelle GT/GX]]<ref>{{Cite news |author=Sam McEachern|date=28 February 2020 |title=GM Delays Production Restart At Wuhan Plant As Coronavirus Crisis Continues |work=GM Authority |url=https://gmauthority.com/blog/2020/02/gm-delays-production-restart-at-wuhan-plant-as-coronavirus-crisis-continues/ |access-date=19 June 2022}}</ref><br />[[w:Buick GL6|Buick GL6]] |- |&nbsp;||[[w:SAIC-GM-Wuling|SAIC-GM-Wuling]] (HQ plant)||[[w:Liuzhou|Liuzhou]], [[w:Guangxi Zhuang Autonomous Region|Guangxi Zhuang Autonomous Region]]||[[w:China|China]]|| [[w:SAIC-GM-Wuling|Wuling]] models<br />Engines||1982||&nbsp;||Operated by [[w:SAIC-GM-Wuling|SAIC-GM-Wuling]]. There are 2 vehicle production plants (East & West). SAIC & GM jointly created the joint venture with Wuling in 2002. The SAIC-GM-Wuling joint venture was originally owned 50.1% by SAIC, 34% by GM China, & 15.9% by Liuzhou Wuling Automobile Industry Co., Ltd. Since 2011, SAIC-GM-Wuling is now owned 50.1% by SAIC, 44% by GM China, & 5.9% by Liuzhou Wuling Motors Co., Ltd. Engine plant added in 2007. Past models: [[w:Chevrolet Spark#Lechi (China)|Chevrolet Lechi (Spark)]], [[w:Baojun 630|Baojun 630]] |- |&nbsp;||[[w:SAIC-GM-Wuling|SAIC-GM-Wuling]] [[w:Baojun|Baojun]] Base||Liudong New District, [[w:Liuzhou|Liuzhou]], [[w:Guangxi Zhuang Autonomous Region|Guangxi Zhuang Autonomous Region]]||[[w:China|China]]|| [[w:Baojun|Baojun]] models<br />Engines||2012||&nbsp;||Operated by [[w:SAIC-GM-Wuling|SAIC-GM-Wuling]]. SAIC & GM jointly created the joint venture with Wuling in 2002. The SAIC-GM-Wuling joint venture was originally owned 50.1% by SAIC, 34% by GM China, & 15.9% by Liuzhou Wuling Automobile Industry Co., Ltd. Since 2011, SAIC-GM-Wuling is now owned 50.1% by SAIC, 44% by GM China, & 5.9% by Liuzhou Wuling Motors Co., Ltd. Engine plant added in 2015. Past models: [[w:Chevrolet Spark#Lechi (China)|Baojun Lechi]], [[w:Baojun 610|Baojun 610]], [[w:Baojun 630|Baojun 630]] |- |&nbsp;||[[w:SAIC-GM-Wuling|SAIC-GM-Wuling]] Chongqing Branch||[[w:Chongqing|Chongqing]]||[[w:China|China]]|| [[w:SAIC-GM-Wuling|Wuling]] models<br />Engines||2014||&nbsp;||Operated by [[w:SAIC-GM-Wuling|SAIC-GM-Wuling]]. Since 2011, SAIC-GM-Wuling is owned 50.1% by SAIC, 44% by GM China, & 5.9% by Liuzhou Wuling Motors Co., Ltd. |- |&nbsp;||[[w:SAIC-GM-Wuling|SAIC-GM-Wuling]] Qingdao Branch||[[w:Qingdao|Qingdao]], [[w:Shandong|Shandong]]||[[w:China|China]]|| [[w:SAIC-GM-Wuling|Wuling]] models<br />Engines||2000||&nbsp;||Operated by [[w:SAIC-GM-Wuling|SAIC-GM-Wuling]]. Originally founded in 1997 as [[w:Etsong Vehicle Manufacturing|Etsong Vehicle Manufacturing]]. SAIC-GM-Wuling took over the plant in 2005. Since 2011, SAIC-GM-Wuling is owned 50.1% by SAIC, 44% by GM China, & 5.9% by Liuzhou Wuling Motors Co., Ltd. Engine plant added in 2009. |- |J||[[w:SGMW Motor Indonesia|SGMW Motor Indonesia]]||[[w:Cikarang|Cikarang]], [[w:West Java|West Java]]||[[w:Indonesia|Indonesia]]|| [[w:Wuling Air EV|Wuling Air EV]]<br />[[w:Wuling Binguo|Wuling Binguo EV]]<br />[[w:Wuling Cloud EV|Wuling Cloud EV ]]<br />[[w:Wuling Almaz|Wuling Almaz]]<br />[[w:Wuling Alvez|Wuling Alvez]]<br />[[w:Wuling Confero|Wuling Confero]]<br />[[w:Wuling Cortez|Wuling Cortez]]<br />[[w:Wuling Formo|Wuling Formo]]<br />[[w:MG4 EV|MG4 EV]], [[w:MG ZS (crossover)|MG ZS EV]]||2017||&nbsp;||100% owned and operated by [[w:SAIC-GM-Wuling|SAIC-GM-Wuling]]. Since 2011, SAIC-GM-Wuling is owned 50.1% by SAIC, 44% by GM China, & 5.9% by Liuzhou Wuling Motors Co., Ltd. In 2024, SGMW Motor Indonesia began producing MG models on behalf of PT SAIC Motor Indonesia. MG is owned by SAIC, a shareholder of SGMW. Past models: [[w:Chevrolet Captiva#Second generation (CN202S; 2019)|Chevrolet Captiva]] |} == Current partner factories == {| class="wikitable sortable" style="font-size:90%" !VIN !! Name !! City/State !! Country !! class="unsortable" | Products !! Opened !! Idled !! class="unsortable" | Comments |- |&nbsp;||[[Azermash CP LLC]]||[[w:Hajiqabul|Hajiqabul]]||[[w:Azerbaijan|Azerbaijan]]||[[w:Chevrolet Cobalt#Second generation (2011)|Chevrolet Cobalt]], [[w:Chevrolet Lacetti|Chevrolet Lacetti]], [[w:Chevrolet Malibu#Ninth generation (2016)|Chevrolet Malibu]], [[w:Chevrolet Onix#Second generation (2019)|Chevrolet Onix]], [[w:Chevrolet Aveo (T200)|Chevrolet Nexia (T250)]], [[w:Chevrolet Tracker (2019)|Chevrolet Tracker]], [[w:Suzuki Carry#Daewoo Damas|Chevrolet Damas/Labo]] ||2017|| ||Built under contract by Azermash CP LLC for GM & UzAuto Motors. |- |A||[[w:GM Uzbekistan|GM Uzbekistan]]/[[w:UzAuto Motors|UzAuto Motors]]||[[w:Asaka, Uzbekistan|Asaka]], [[w:Andijan Region|Andijan Region]]||[[w:Uzbekistan|Uzbekistan]]||[[w:Chevrolet Cobalt#Second generation (2011)|Chevrolet Cobalt]], [[w:Chevrolet Lacetti|Chevrolet Lacetti]], [[w:Chevrolet Onix#Second generation (2019)|Chevrolet Onix]], [[w:Chevrolet Tracker (2019)|Chevrolet Tracker (2022-)]]||1996|| ||Originally established as Uz-DaewooAuto, a 50/50 joint venture between Daewoo Motor & the Uzbek government. Became GM Uzbekistan, a 25/75 joint venture between GM & state owned UzAvtosanoat in 2008. GM was bought out by the Uzbek govt. in 2019 & the company was renamed UzAuto Motors. Vehicles now built under license from GM by UzAuto Motors. Previous models: [[w:Daewoo Tico|Daewoo Tico]], [[w:Chevrolet Spark#First generation (M100, M150; 1998)|Daewoo Matiz (M150)]], [[w:Daewoo Nexia|Daewoo Nexia]], [[w:Daewoo Nexia|Chevrolet Nexia]], [[w:Daewoo Gentra#Uzbekistan (2013–2015)|Daewoo Gentra]], [[w:Daewoo Damas|Daewoo Damas]], [[w:Daewoo Labo|Daewoo Labo]], [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]], [[w:Chevrolet Epica|Chevrolet Epica]], [[w:Chevrolet Aveo (T200)|Chevrolet Nexia 3]], [[w:Chevrolet Spark#Third generation (M300; 2009)|Chevrolet Spark (M300)]], [[w:Chevrolet Tacuma|Chevrolet Tacuma]], [[w:Chevrolet Trax|Chevrolet Tracker]], [[w:Chevrolet Spark#First generation (M100, M150; 1998)|Ravon Matiz]], [[w:Chevrolet Spark#Third generation (M300; 2009)|Ravon R2]], [[w:Chevrolet Aveo#Ravon Nexia R3|Ravon Nexia R3]], [[w:Chevrolet Cobalt#Second generation (2011)|Ravon R4]], [[w:Daewoo Gentra|Ravon Gentra R5]] |- |&nbsp;||[[w:GM Uzbekistan|GM Uzbekistan]]/[[w:UzAuto Motors|UzAuto Motors]]||[[w:Pitnak|Pitnak]], [[w:Khorezm Region|Khorezm Region]]||[[w:Uzbekistan|Uzbekistan]]||[[w:Chevrolet Damas|Chevrolet Damas]]<br> [[w:Chevrolet Labo|Chevrolet Labo]] ||2014|| ||Was part of GM Uzbekistan, a 25/75 joint venture between GM & state owned UzAvtosanoat formed in 2008. GM was bought out by the Uzbek govt. in 2019 & the company was renamed UzAuto Motors. Vehicles now built under license from GM by UzAuto Motors. In 2021, a new press shop opened at the Pitnak plant. Previous models: [[w:Chevrolet Orlando#First generation (J309; 2010)|Chevrolet Orlando]], [[w:Daewoo Damas|Daewoo Damas]], [[w:Daewoo Labo|Daewoo Labo]] |- |&nbsp;||[[w:GM Uzbekistan|GM Uzbekistan]]/[[w:UzAuto Motors|UzAuto Motors]]||[[w:Tashkent|Tashkent]]||[[w:Uzbekistan|Uzbekistan]]||Repair of used cars ||2009||2019||Was part of GM Uzbekistan, a 25/75 joint venture between GM & state owned UzAvtosanoat formed in 2008. GM was bought out by the Uzbek govt. in 2019 & the company was renamed UzAuto Motors. Vehicles now built under license from GM by UzAuto Motors. Plant assembled SKD vehicles. SKD production ended in 2019. Plant is now used to repair & overhaul used cars acquired as trade-ins for new cars, which are then resold by UzAuto. Previous models: [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]], [[w:Chevrolet Malibu#Eighth generation (2013)|Chevrolet Malibu]], [[w:Chevrolet Malibu#Ninth generation (2016)|Chevrolet Malibu]], [[w:Chevrolet Trax|Chevrolet Tracker (initial production from SKD)]] |- |&nbsp;||[[w:GM Uzbekistan|GM Powertrain Uzbekistan]]/[[w:GM Uzbekistan|UzAuto Motors Powertrain]]||[[w:Tashkent|Tashkent]]||[[w:Uzbekistan|Uzbekistan]]||[[w:Daewoo S-TEC engine|1.2L & 1.5L DOHC I4 engines]]<br />[[w:GM E-Turbo engine|1.2L GM E-Turbo I3 engine]]<br />Engine components (crankshaft, block, heads)<br />Aluminum Foundry ||2011|| ||GM Powertrain Uzbekistan is a 52/48 joint venture between GM & state owned UzAvtosanoat. In 2019, the company was renamed UzAuto Motors Powertrain after UzAvtosanoat bought out GM's share of the joint venture. It now builds engines & components under license from GM. |- |0,4,7,8,9||[[w:Isuzu|Isuzu]] Fujisawa plant||[[w:Fujisawa, Kanagawa|Fujisawa, Kanagawa]]||[[w:Japan|Japan]]||[[w:Isuzu Elf|Chevrolet Low Cab Forward 4500 & 5500 diesel]] (2016-)<br />[[w:Isuzu N-Series|Isuzu N-Series]]<br />[[w:Isuzu F-Series|Isuzu F-Series]]||1961||&nbsp;||[[w:Isuzu|Isuzu]] plant. <br /> Previous models:<br /> [[w:Isuzu Gemini#In other markets|Buick Opel]] (1976-1979)<br />[[w:Chevrolet LUV|Chevrolet LUV]] (1972-1982)<br />[[w:Chevrolet Spectrum|Chevrolet Spectrum]] (1985-1988)<br />[[w:Chevrolet W-Series|Chevrolet W-Series]] (1986-2009)<br />[[w:Geo Spectrum|Geo Spectrum]] (1989)<br />[[w:Geo Storm|Geo Storm]] (1990-1993)<br />[[w:GMC W-Series|GMC W-Series]] (1986-2009)<br />[[w:Isuzu Faster#First generation (1972–1980)|Bedford KB25]]<br />[[w:Isuzu Faster#Second generation (1980–1988)|Bedford KB26/41]]<br />[[w:Opel Campo#Third generation (TF; 1988–2002)|Opel Campo/Bedford Brava/Vauxhall Brava]]<br />[[w:Holden Jackaroo#First generation (1981)|Holden Jackaroo (Gen 1)]]<br />[[w:Opel Monterey#Second generation (1991)|Opel/Vauxhall Monterey/Holden Jackaroo (Gen 2)/Monterey]]<br />[[w:Holden Rodeo|Holden Rodeo]] (1981-2002) (KB/TF)<br />[[w:Holden Piazza#First generation (JR120/130; 1980)|Holden Piazza]]<br />[[w:Holden Shuttle|Holden Shuttle]]<br />[[w:Isuzu I-Mark|Isuzu I-Mark]], [[w:Isuzu Impulse|Isuzu Impulse]], [[w:Isuzu Stylus|Isuzu Stylus]] |- |H||[[w:Navistar|Navistar]] - Springfield Assembly Plant (Main Line)||[[w:Springfield, Ohio|Springfield, Ohio]]||[[w:United States|United States]]||[[w:Chevrolet Silverado#Medium duty version (4500HD, 5500HD, 6500HD, and International CV)|Chevrolet Silverado Medium Duty (2019-)<br />International CV]] (2019-)||2019|| ||Located at 6125 Urbana Road. Jointly developed by GM & Navistar. Built under contract by [[w:Navistar|Navistar]] for GM. |- |N||[[w:Navistar|Navistar]] - Springfield Assembly Plant (Secondary Line)||[[w:Springfield, Ohio|Springfield, Ohio]]||[[w:United States|United States]]||[[w:Chevrolet Express|Chevrolet Express]] cutaway (2017-),<br /> [[w:GMC Savana|GMC Savana]] cutaway (2017-)||2017|| ||Located at 6125 Urbana Road. Built under contract by [[w:Navistar|Navistar]] for GM. |- |&nbsp;||PACE (Planta Automotiva do Ceará=Ceará Automotive Plant)||[[w:Horizonte, Ceará|Horizonte, Ceará]]||[[w:Brazil|Brazil]]||[[w:Chevrolet Spark EUV|Chevrolet Spark EUV]] (2026-),<br /> [[w:Wuling Starlight S|Chevrolet Captiva EV]]||2025|| ||Assembled from semi-knockdown kits imported from China under contract for GM. Production for GM began on December 3, 2025 with the Spark EUV. Production for non-GM brands is also expected. The plant is the former [[w:Troller|Troller]] plant that was bought by Ford in 2007 and closed in 2021. The plant is now operated by Comexport. |- |&nbsp;||[[SaryarkaAvtoProm]]/<br>Allur Automobile Plant||[[w:Kostanay|Kostanay]]||[[w:Kazakhstan|Kazakhstan]]||[[w:Chevrolet Cobalt#Second generation (2011)|Chevrolet Cobalt]], [[w:Chevrolet Onix#Second generation (2019)|Chevrolet Onix]], [[w:Chevrolet Tracker (2019)|Chevrolet Tracker]]||2017|| ||Built under contract by SaryarkaAvtoProm for GM & UzAuto Motors. Past models: [[w:Chevrolet Malibu#Ninth generation (2016)|Chevrolet Malibu]], [[w:Chevrolet Aveo (T200)|Chevrolet Nexia]], [[w:Chevrolet Niva|Chevrolet Niva]], [[w:Suzuki Carry#Daewoo Damas|Chevrolet Damas/Labo]], [[w:Chevrolet Aveo (T200)|Ravon Nexia R3]] |- |S||[[w:Shyft Group|Shyft Group]] - Charlotte plant||[[w:Charlotte, Michigan|Charlotte, Michigan]]||[[w:United States|United States]]||[[w:Isuzu Elf|Chevrolet Low Cab Forward 3500/4500/5500 gas]] (2016-)<br />[[w:Isuzu F-Series|Chevrolet Low Cab Forward 6500XD & 7500XD]] (2018- & 2023-)<br />[[w:Isuzu N-Series|Isuzu N-Series gas]] (2012-)<br />[[w:Isuzu F-Series|Isuzu FTR/FVR]] (2018- & 2023-)||1961||&nbsp;||[[w:Shyft Group|Shyft Group]] plant. Built under contract for Isuzu and GM. |} == Former factories == {| class="wikitable sortable" style="font-size:90%" ! style="width:20px;"|VIN ! style="width:60px;"| Name ! style="width:20px;"| City/State ! style="width:20px;"| Country ! style="width:90px;" class="unsortable" | Products ! style="width:10px;"| Opened ! style="width:10px;"| Idled ! style="width:190px;" class="unsortable" |Comments |- |&nbsp;||AC Electronics||[[w:Oak Creek, Wisconsin|Oak Creek, Wisconsin]]||[[w:United States|United States]]||Automotive Electronics; Avionics, precision guidance systems, & electro-mechanical devices for military use and space exploration (Apollo program) ||1948||1999||Located at 7929 S. Howell Ave. First known as GM's Electronics Division. In 1965, the Milwaukee Operations became known as AC Electronics Division of GM. In 1970, the division merged with Delco Radio and became known as Delco Electronics Division. Spun off with Delphi Automotive Systems (Delphi Electronics & Safety) in 1999. Closed by Delphi in 2008. Is now Drexel Town Square, a retail, commercial, residential and civic development. |- |&nbsp;||[[w:ACDelco#AC Spark Plug Division|AC Spark Plug Division]]||[[w:Flint, Michigan|Flint, Michigan]]||United States||AC Spark Plugs||1929||1975||Located on Industrial Ave at Harriet St. Built in 1909. Champion Ignition Co. moved here from their original location on the 3rd floor of a Buick building on Hamilton Ave. that they used from 1908. This complex was expanded multiple times and was on both sides of Industrial Ave. with 2 overhead walkways connecting the 2 sides. Champion Ignition Co. changed its name to AC Spark Plug in 1922. After founder Albert Champion died in 1927, GM took over AC Spark Plug in 1929. It became a GM division in 1933. Production gradually moved to the Flint East complex until the Industrial Ave. complex closed in 1975. Demolished in 1975-76. Site later used by Buick for parking as it was next to the Buick City complex. |- |&nbsp;||[[w:Flint East|AC Spark Plug Flint East]]||[[w:Flint, Michigan|Flint, Michigan]]||United States||Components (spark plugs, dashboard components such as instrument clusters, fuel system components, air/oil/fuel filters, and fuel pumps)||1929||1999||Located at 1300 North Dort Highway. (Now referred to as 2926 Davison Road, which is the north side instead of the west side of the property.) Purchased by AC Spark Plug in 1925. Plant previously belonged to [[w:Dort Motor Car Company|Dort Motor Car Company]], which went out of business in 1924. Initially produced all products other than spark plugs that were made by AC Spark Plug Co. After founder Albert Champion died in 1927, GM took over AC Spark Plug in 1929. It became a GM division in 1933. Production gradually moved from the old Industrial Ave. complex to the Flint East complex until the Industrial Ave. complex closed in 1975. Became known as Flint East in 1987, when AC took over the "Chevy in the Hole" complex from Chevrolet on Flint's west side, which became known as Flint West. Became AC Rochester in 1988 when AC Spark Plug Division merged with Rochester Products Division. AC Rochester initially had its world headquarters here, just as AC Spark Plug had before the merger. Subsequently, AC Rochester headquarters moved to the Great Lakes Technology Center in the old Flint Fisher Body plant. In 1994, AC Rochester merged with Delco Remy and became AC Delco Systems. Grouped under GM's Delphi Automotive Systems subsidiary in 1995. Spun off with [[w:Delphi Corporation|Delphi Corporation]] in 1999. GM supplied the UAW workers from 2007 under agreement with Delphi and the UAW. Closed by Delphi in 2013. |- |&nbsp;||[[w:ACDelco#AC Spark Plug Division|AC Spark Plug]]||[[w:Sioux City, Iowa|Sioux City, Iowa]]||[[w:United States|United States]]||[[w:Throttle#Throttle body|Throttle Body Fuel Injection Systems]]||1981||1993||Located at 1805 Zenith Drive. Formerly a Zenith Radio Factory. Now the headquarters of Bomgaars Supply, Inc. |- |&nbsp;||[[w:ACDelco#AC Spark Plug Division|AC Spark Plug]]||[[w:Wichita Falls, Texas|Wichita Falls, Texas]]||United States||AC Air Filters||1972||1999||Located at 8600 Interstate 44 Service Rd. Spun off with Delphi Automotive Systems in 1999. Closed by Delphi in 2008. Now owned by Panda Biotech. |- |&nbsp;||[[w:ACDelco#AC Spark Plug Division|AC Spark Plug Overseas Corp. - Kirkby plant]]||[[w:Kirkby|Kirkby]], [[w:Merseyside|Merseyside]], [[w:England|England]]||[[w:United Kingdom|United Kingdom]]||Instrument panels, Gauges, Fuel pumps, Fuel/temperature senders, Oil pressure switches, Radiator caps, Thermostats||1958||?||Plant is near Liverpool. Located on Moorgate Road. Kirkby was originally part of the AC-Delco division of GM Ltd. When the Kirkby plant opened in 1958, production of fuel pumps, thermostats, and instruments was moved there from the Dunstable components plant. In 1979, Kirkby became aligned with AC Spark Plug in the US. In 1982, GM Ltd. was dissolved and the Kirkby plant became part of AC Spark Plug Overseas Corp., part of GM Overseas Corp. |- |&nbsp;||[[w:ACDelco#AC Spark Plug Division|AC Spark Plug Overseas Corp. - Southampton plant]]||[[w:Southampton|Southampton]], [[w:Hampshire|Hampshire]], [[w:England|England]]||[[w:United Kingdom|United Kingdom]]||Air filter elements, Oil filters, Fuel filters, Catalytic converters||1952||?|| Located on West Bay Road in the New Dock area of Southampton. Originally opened in 1938 as a vehicle assembly plant making Chevrolets (See listing for "GM Ltd."). Plant acquired by GM Ltd. in 1951. Southampton was originally part of AC-Sphinx Plug Co., a division of GM Ltd. In 1952, AC-Sphinx Plug Co. was renamed AC-Delco division of GM Ltd. When the Southampton plant opened in 1952, production of automotive filters (air filters, fuel filters) was moved there from the Dunstable components plant. In 1979, Southampton became aligned with AC Spark Plug in the US. In 1982, GM Ltd. was dissolved and the Southampton plant became part of AC Spark Plug Overseas Corp., part of GM Overseas Corp. |- |&nbsp;||Allison,<br> [[w:Allison Transmission|Allison Transmission]], Allison Gas Turbine||[[w:Indianapolis|Indianapolis]], Indiana||United States||Allison Transmissions,<br> Engines for airplanes & helicopters,<br> Bearings and Gears||1929||2007||Located at 4700 W. 10th St. Founded in 1915 as Speedway Team Co. In 1920, it was renamed Allison Engineering Co. Acquired by GM in 1929, it became the Allison Division of GM. GM began designing the CD-850 transmission for tracked military vehicles in 1941; the design was completed in 1944 and Allison was awarded the contract to manufacture the prototypes. In February 1945, General Motors formed the Allison Transmission Engineering Section. In 1946, GM divided the division into 2 sections: Aircraft Operations and Transmission Operations. In 1970, Allison Division merged with the Detroit Diesel Engine Division to become the Detroit Diesel-Allison Division. In 1983, the aviation turbine engine operations were separated out to form a separate division called the Allison Gas Turbine Division. In 1987, the transmission operations are separated out to form the Allison Transmission Division. Allison Gas Turbine was sold in a management buyout in 1993 becoming the Allison Engine Company. [[w:Allison Engine Company|Allison Engine Company]] was then sold in 1995 to [[w:Rolls-Royce Holdings|Rolls-Royce PLC]]. GM sold Allison Transmission in 2007 to private equity groups Carlyle Group & Onex Corp., becoming Allison Transmission Inc. Allison went public as Allison Transmission Holdings Inc. in 2012, trading on the New York Stock Exchange. |- |&nbsp;||Cadillac Amsterdam Street plant||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||[[w:Cadillac|Cadillac]]s||1903||1920||Cadillac's first volume production plant. Located at 450 Amsterdam Street, at the intersection with Cass Avenue. Rebuilt in 1904 after a fire destroyed the original plant. This plant predated Cadillac being part of GM. Replaced by the Clark Street plant in 1921. |- |5 (Plant 2)<br /><br /> 6 (Plant 1)<br /><br />9 (Pre-1976)||Antwerp||[[w:Antwerp|Antwerp]]||[[w:Belgium|Belgium]]||[[w:Opel Astra|Opel Astra]]/[[w:Vauxhall Astra|Vauxhall Astra]]<br />[[w:Opel Astra#Astra H (A04; 2004)|Opel/Vauxhall Astra GTC & OPC/VXR (H)]]<br />[[w:Opel Astra#TwinTop|Opel/Vauxhall Astra TwinTop]]<br />[[w:Opel Astra#Saturn Astra|Saturn Astra]] (2008 & in Canada '09)<br />[[w:Holden Astra#Fourth generation (TS; 1998)|Holden Astra (TS)]]<br />[[w:Holden Astra#Fifth generation (AH; 2004)|Holden Astra (AH)]] ||1925||2010||Originally known as GM Continental SA, then as Opel Antwerp from 1994-2004, & finally as GM Belgium from 2004 on. The original plant was an ex-abbey on Fortuinstraat. In 1926, production moved to an old velodrome on the corner of St. Laureystraat & Haantjeslei. In 1929, production moved to a site in the port of Antwerp near the Albert dock. The site at the port was destroyed by bombing raids in World War II. Production temporarily moved back to the velodrome from 1946-1953. In 1953, a new plant opened on the Noorderlaan which would later come to be known as Plant 1. In 1967, a second plant opened about 6.2 miles (10&nbsp;km) north of the Noorderlaan plant near the Churchill dock. This was called Plant 2. In August 1988, production was consolidated in Plant 2 and Plant 1 was used as a parts warehouse until 1992 and the property was then sold. Plant 2 ended production in December 2010. First vehicle off the line was a Chevrolet. Assembled Opel & Vauxhall cars, Bedford trucks and American GM brands (Chevrolet, Pontiac, Oldsmobile, Buick, & Cadillac) from CKD kits. Also built the [[w:Ranger (automobile)#Europe|Ranger]]. The plant finally closed its doors on December 17, 2010, about two days after last Opel car rolled off the assembly line.&nbsp;<br />Past models: [[w:Chevrolet Camaro (first generation)|Chevrolet Camaro]] (first generation from CKD kits)<br />[[w:Chevrolet Corvair|Chevrolet Corvair]] (from CKD kits supplied from Oshawa)<br />[[w:Opel Ascona|Opel Ascona]]<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Manta|Opel Manta]]<br />[[w:Opel Olympia|Opel Olympia]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Opel Vectra|Opel Vectra]]<br />[[w:Vauxhall Cresta|Vauxhall Cresta]]<br />[[w:Vauxhall Velox|Vauxhall Velox]]<br />[[w:Vauxhall Victor|Vauxhall Victor]] |- |&nbsp;||[[w:General Motors de Argentina|General Motors de Argentina]]||[[w:San Telmo, Buenos Aires|San Telmo]] and [[w:Barracas, Buenos Aires|Barracas]] in [[w:Buenos Aires|Buenos Aires]] & [[w:San Martín, Buenos Aires|San Martin]]||[[w:Argentina|Argentina]]||Chevrolet (cars and trucks) including [[w:Chevrolet 400|Chevrolet 400]], [[w:Chevrolet Chevy Malibu|Chevrolet Chevy]], & [[w:Chevrolet C/K|Chevrolet C/K]] <br />[[w:Chevrolet C/K (second generation)#Medium-duty trucks|Chevrolet C-50/C-60/C-70]]<br />[[w:Chevrolet/GMC B series|Chevrolet B-60 bus chassis]]<br /> Oldsmobile <br />[[w:Opel K 180|Opel K 180]]<br />[[w:Bedford TJ|Bedford TJ]]<br />[[w:Chevrolet 153 4-cylinder engine#Argentina|Chevrolet 153 4-cylinder]]<br />[[w:Chevrolet Turbo-Thrift engine|Chevrolet Turbo-Thrift engine]]<br />Bedford diesel engines||1925 (San Telmo)<br />1928 (Barracas)<br />1940 (San Martin plant)||1978 (San Martin plant)||Other GM brands manufactured included GMC, Opel, and Bedford trucks along with Pontiac, Oakland, Marquette, Buick, LaSalle, Cadillac, Opel, and Vauxhall passenger cars.<ref>{{cite web|url=https://history.gmheritagecenter.com/wiki/index.php/GM_Argentina|title=GM Argentina}}</ref> Also Frigidaire refrigerators. |- |&nbsp;||[[w:Aymesa|Aymesa]]||[[w:Quito, Ecuador|Quito]]||[[w:Ecuador|Ecuador]]|| ||1973||1999 (Last GM production)|| First automotive assembler in Ecuador. GM bought 36.95% of AYMESA in 1982 & increased its stake to 45.9% in 1984. GM sold off its stake in 1999 and switched to using OBB as its Ecuadorian partner. Aymesa now assembles vehicles for Kia and Hyundai. Past models: [[w:Opel Corsa#Corsa B (S93; 1993)|Chevrolet Corsa]]<br />[[w:Suzuki Cultus#First generation (1983)|Suzuki Forsa]]<br />[[w:Suzuki Cultus#Second generation (1988)|Suzuki Forsa II/Chevrolet Swift]]<br />[[w:General Motors T platform (1973)|Chevrolet San Remo]]<br />Aymesa Gacela<br />Aymesa Condor<br />[[w:Bedford HA#The BTV|Aymesa Andino]]<br />Aymesa Amigo |- |3 (since 1993)<br />A (before 1993)||Azambuja||[[w:Azambuja|Azambuja]]||[[w:Portugal|Portugal]]||[[w:Opel Combo#Kadett Combo (Combo A; 1986)|Opel Kadett Combo A/Bedford & Vauxhall Astravan & Astramax]]<br />[[w:Opel Combo#Combo B (1993-2001)|Opel/Vauxhall/Holden Combo]] B<br />[[w:Opel Combo#Combo C (2001-2012)|Opel/Vauxhall/Holden Combo]] C||1963||2006||Past models:<br />[[w:Opel Corsa#Corsa Van|Opel Corsavan]]<br /> [[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Bedford HA#The BTV|Amigo]]<br />[[w:Bedford CF|Bedford CF]]<br />[[w:Bedford TJ|Bedford TJ]]<br />[[w:Bedford TK|Bedford TK]]<br />Various Opel, Vauxhall, & Bedford models. |- |B <br />(1953-1964 [[w:Chevrolet|Chevrolet]]<br />and 1964 [[w:Pontiac (automobile)|Pontiac]]<br /> and 1965-2005)<br /><br />14 (1935-1952 [[w:Chevrolet|Chevrolet]]) <br /><br /> 7 (1964 [[w:Buick|Buick]])||[[w:Baltimore Assembly|Baltimore Assembly]]||[[w:Baltimore|Baltimore]], [[w:Maryland|Maryland]]||United States||[[w:Chevrolet Astro|Chevrolet Astro]] (1985-2005)<br />[[w:Chevrolet Astro|GMC Safari]] (1985-2005) ||1935||2005||Located at 2122 Broening Highway. Production began in March 1935 (March 11 for trucks and March 26 for cars). Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Baltimore Assembly began making Pontiac and Buick passenger cars for 1964. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Baltimore Assembly joined the GM Assembly Division in 1968. During WWII, the Chevrolet side of the plant operated as a military parts depot where parts were received, processed, and packaged for shipment around the world. It also built 2,650 [[w:GMC CCKW 2½-ton 6×6 truck|GMC CCKW 6x6 trucks]]. The Fisher Body side of the plant became part of GM's Eastern Aircraft Division and assembled the rear fuselage, tail assembly, & all control surfaces for Grumman carrier-based aircraft. Car production ended on March 31, 1984. Converted to a Truck and Bus Group assembly plant for 1985. Production restarted in August 1984. Closed on May 13, 2005. Baltimore Assembly produced over 12 million vehicles. Demolished. Now the Chesapeake Commerce Center and an Amazon distribution center.<br /> Past models:<br /> [[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br />[[w:Buick Gran Sport|Buick GS]] (1965-1968),<br /> [[w:Buick Skylark|Buick Skylark]] (1964-68),<br /> [[w:Buick Special|Buick Special]] (1964-67), [[w:Chevrolet 150|Chevrolet 150]] (1953-57), [[w:Chevrolet 210|Chevrolet 210]] (1953-57), [[w:Chevrolet AK Series|Chevrolet AK Series]], [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1963), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1963), [[w:Chevrolet C/K|Chevrolet C/K]] (1960-1980), [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1964-1977), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet El Camino|Chevrolet El Camino]] (1959-1960, 1964-1977), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1963), [[w:Chevrolet Malibu#Fourth generation (1978)|Chevrolet Malibu]] (1978-1983), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1970-1984), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Chevrolet Suburban|Chevrolet Suburban]] (1957, 1962, 1964-1966), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:Chevrolet C/K (second generation)|GMC C/K (Action Line)]] (1967-1972), [[w:Chevrolet C/K (third generation)|GMC C/K (Rounded Line)]] (1973-1980), [[w:GMC Sprint|GMC Sprint]] (1971-1977), [[w:Pontiac Bonneville#Seventh generation (1982–1986)|Pontiac Bonneville]] (1983-1984), [[w:Pontiac Grand Prix#Fifth generation (1978–1987)|Pontiac Grand Prix]] (1983-1984), [[w:Pontiac GTO|Pontiac GTO]] (1964-1970), [[w:Pontiac LeMans|Pontiac LeMans]] (1964-1970, 1978-1981), [[w:Pontiac Tempest|Pontiac Tempest]] (1964-1970) |- |&nbsp;||[[w:Baltimore Transmission|Baltimore Transmission]]||[[w:White Marsh, Maryland|White Marsh]], [[w:Maryland|Maryland]]||United States||Allison 1000 Series transmissions: [[w:Chevrolet Silverado|Silverado HD]], [[w:GMC Sierra|Sierra HD]]<br />Hybrid 2-mode transmissions ([[w:Global Hybrid Cooperation|2ML70]]): [[w:Chevrolet Tahoe#Third generation (2007)|Chevrolet Tahoe Hybrid]], [[w:Chevrolet Tahoe#Third generation (2007)|GMC Yukon Hybrid]], [[w:Cadillac Escalade#Hybrid|Cadillac Escalade Hybrid]], [[w:Chevrolet Silverado#Second-generation Silverado / third-generation Sierra (GMT900; 2007)|Chevrolet Silverado Hybrid]], [[w:Chevrolet Silverado#Second-generation Silverado / third-generation Sierra (GMT900; 2007)|GMC Sierra Hybrid]]<br />Electric motor (MME) & final-drive unit (1ET35) for [[w:Chevrolet Spark#Spark EV|Chevy Spark EV]]<br />Torque converters for 6-speed rwd automatic transmissions||2000||2019||Located at 10301 Philadelphia Road. Originally part of Allison Transmission. Became a GM Powertrain facility in 2004. Name changed to Baltimore Operations in 2012 with the addition of the Electric Motor Plant built next to the existing Transmission Plant. Closed in 2019.<ref>{{Cite web|url=https://gmauthority.com/blog/2019/04/gm-baltimore-employees-irate-over-plant-closure/|title = GM Baltimore Employees Irate over Plant Closure|author=Anthony Alaniz|publisher=GMAuthority.com|date = 19 April 2019}}</ref> Now called White Marsh Interchange Park, a complex of 9 new one-story buildings of office and warehouse space that replaces the previous GM plant which has been demolished. |- |T||[[w:Bedford Dunstable plant|Bedford Dunstable plant]]||[[w:Dunstable|Dunstable]], [[w:Bedfordshire|Bedfordshire]], [[w:England|England]]||[[w:United Kingdom|United Kingdom]]||[[w:Bedford Vehicles|Bedford trucks and buses]] including:<br> [[w:Bedford S type|Bedford S series]]<br />[[w:Bedford TA|Bedford TA/TD]]<br />[[w:Bedford TJ|Bedford TJ]]<br />[[w:Bedford TK|Bedford TK/KM]]<br />[[w:Bedford TL|Bedford TL]]<br />[[w:Bedford TM|Bedford TM]]<br />[[w:Bedford SB|Bedford SB]]<br />[[w:Bedford VAL|Bedford VAL]]<br />[[w:Bedford VAM|Bedford VAM]]<br />[[w:Bedford VAS|Bedford VAS]]<br />[[w:Bedford Y series|Bedford Y series]]<br />Bedford gas & diesel engines||1942 (for wartime production)<br><br> 1955 (for civilian production)||1987||Was located on Boscombe Road. Bedford truck and bus production was moved to Dunstable from Luton in 1955. GM sold the Bedford heavy truck business to AWD Trucks in 1987. AWD Trucks went bankrupt in 1992. Parts of the site were demolished in 1993. More was demolished in 1997. The remainder was demolished in 2005. The [[w:Commer|Commer]] plant was located across Boscombe Road in Dunstable from the 1960's. |- |&nbsp;||Bombay||[[w:Bombay|Bombay]], [[w:Maharashtra|Maharashtra]]||[[w:India|India]]||[[w:Chevrolet|Chevrolet]] cars, trucks, & buses||1928||1954||The first automobile assembly plant in India. The original GM India Ltd. was closed in 1954. |- |12 (Buffalo Assembly from 1928)||[[w:Buffalo Assembly|Buffalo Assembly]]/<br />Buffalo Gear & Axle||[[w:Buffalo, New York|Buffalo, New York]]||United States||[[w:Chevrolet Superior|Chevrolet Superior]]<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Suburban|Chevrolet Suburban]]<br /> Axles, drivetrain components||1923||1994||Located at 1001 E. Delavan Ave. Built cars until World War II & was then converted to make axles. Operation was renamed Saginaw Gear and Axle in 1984. Sold to [[w:American Axle|American Axle]] in 1994. All operations ended in 2007 & the factory closed. Called the Historic American Axle Building. Purchased by Viridi in 2018. |- |H (1965-1999)<br /><br /> 1 (1938-1964 [[w:Buick|Buick]])||[[w:Buick City|Buick City]]||[[w:Flint, Michigan|Flint, Michigan]]||United States||[[w:Buick LeSabre|Buick LeSabre]] (1959-1999)<br />[[w:Buick Park Avenue|Buick Park Avenue]] (1994-1996)<br />[[w:Oldsmobile 88|Oldsmobile 88]] (1987, 1989-1995)<br />[[w:Pontiac Bonneville#Ninth generation (1992–1999)|Pontiac Bonneville]] (1996-1999)||1904||1999||This was Buick's home plant. It predated the founding of GM in 1908. This is the part of the Buick factory complex south of Leith St. stretching south to E. Hamilton Ave. The complete complex, including both North and South portions totals 412,947 acres. The original factory was at one time the largest in the world and was completely vertically integrated, making nearly every component within the complex. During WWII, Buick built [[w:M18 Hellcat|M18 Hellcat]] tanks & [[w:M39 armored utility vehicle|M39 armored utility vehicles]] here. The plant was converted to build unibody, fwd cars for 1986 instead of the previous body-on-frame, rwd cars. The modernized plant was renamed Buick City. The factory closed in June 1999. Last car built was a 1999 Buick LeSabre. Demolished by 2002. The site of Buick's administration building, 902 E. Hamilton Ave., is now a seating plant owned by Lear Corp., which opened in 2018. It supplies seats to GM's nearby Flint Truck Assembly Plant as well as GM's Fort Wayne Assembly Plant in Indiana. A large piece of the property is now being redeveloped as Flint Commerce Center.<br> Past models: [[w:Buick Centurion|Buick Centurion]] (1971–1973),<br> [[w:Buick Century|Buick Century]] (1936-42, 1954-1958, 1973-1981), [[w:Buick Electra|Buick Electra]] (1959-1984), [[w:Buick Estate|Buick Estate]] (1940-64, 1970-76), [[w:Buick GS|Buick GS]] (1965-1972), [[w:Buick Invicta|Buick Invicta]] (1959-1963), [[w:Buick Limited|Buick Limited]] (1936-42, 1958), [[w:Buick Regal|Buick Regal]] (1973-1985), [[w:Buick Riviera|Buick Riviera]] (1963-1978), [[w:Buick Roadmaster|Buick Roadmaster]] (1936-58), [[w:Buick Skylark#1953–1954|Buick Skylark]] (1953-1954), [[w:Buick Skylark|Buick Skylark]] (1961-72), [[w:Buick Special|Buick Special]] (1936-58, 1961-69), [[w:Buick Sport Wagon|Buick Sport Wagon]] (1964-1971), [[w:Buick Super|Buick Super]] (1940-1958), [[w:Buick Wildcat|Buick Wildcat]] (1963-1970) [[w:Marquette (automobile)#Buick brand|Marquette]] (1930), [[w:Chevrolet Caprice#Third generation (1977–1990)|Chevrolet Caprice]] (1984-1985), [[w:Chevrolet Impala#Sixth generation (1977–1985)|Chevrolet Impala]] (1984-1985),<br> [[w:Oldsmobile Cutlass Supreme#Fourth generation (1978–1988)|Oldsmobile Cutlass Supreme]] (1985). |- |&nbsp;||Cadillac Stamping||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Stamped body parts for Cadillac||1956||1987||Located at 9501 Conner St. Originally built by Clayton & Lambert Manufacturing Company for their Knodell Division. Sold to Hudson Motor Car Company in 1925. Made bodies for Hudson. Bought by GM in 1956. Demolished in 2021. Site used by [[w:Lear Corp.|Lear Corp.]] to make seats to supply GM's Factory Zero plant. |- |&nbsp;||[[w:Cartercar|Cartercar]]||[[w:Pontiac, Michigan|Pontiac]], [[w:Michigan|Michigan]]||United States||Cartercar automobiles||1909||1915||Located on Franklin Rd. where Franklin turns into Linfere St. which then intersects with Brush St. This factory previously belonged to Pontiac Spring & Wagon Works. Cartercar moved into this factory in 1908. Cartercar was purchased by GM on October 26, 1909. Cartercar was known for its [[w:Friction drive|friction drive transmission]]. GM closed Cartercar in 1915. There was then talk that GM would build a 6-cylinder Oakland model at this factory but it doesn't seem to have ever happened. GM sold the factory to Olympian Motors Company in 1917, which built Olympian cars there from 1917-1919. In 1920, the factory was sold to Friend Motors Corporation. Initially, Friend Motors Corporation continued production of Olympian cars and then switched to production of new Friend cars in 1921 but production ended with less than 50 cars built and Friend Motors went out of business. In 1922, Friend Motors owner Otis Friend filed for bankruptcy and factory ownership was transferred to Gotham National Bank in a foreclosure sale. The next occupant of the plant was the Wolverine Manufacturing Company which built furniture. Later, it was used as an agricultural supply warehouse. Most of the complex is gone but one building remains at 20 Franklin Rd. It was last occupied by House of Bedrooms, a furniture store. One side of the building still says "The Wolverine" at the top. The other side that faces Brush St. still says "Pontiac Spring & Wagon Works" right under what were the highest row of windows. |- |&nbsp;||Chevrolet Gear & Axle||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Axles, gears, other components||1919||1994||Located at 1840 Holbrook Ave. Absorbed the former Northway engine plant on Holbrook Ave. in 1926 when Northway was liquidated by GM. Straddles the border of [[w:Detroit|Detroit]] and [[w:Hamtramck, Michigan|Hamtramck, Michigan]]. Sold to [[w:American Axle|American Axle]] & Manufacturing Inc. in 1994. Closed in 2012, demolished in 2013. |- |&nbsp;||Fisher Body - Chicago Metal Fabrication||[[w:Willow Springs, Illinois|Willow Springs, Illinois]]||United States||Stampings (such as floorpans) for GM vehicles||1953||1989||Located at 79th Street and Willow Springs Road. Buick produced J65-B-3 jet engines here for the [[w:Republic F-84F Thunderstreak|Republic F-84F Thunderstreak]]/RF84-F Thunderflash for use in the Korean War. Plant was associated with Buick-Oldsmobile-Cadillac Group but made body parts for all 5 of GM's passenger car divisions. Sold to [[w:United Parcel Service|UPS]]. |- |&nbsp;||[[w:General Motors de Chile|General Motors de Chile]]||[[w:Arica|Arica]]||[[w:Chile|Chile]]||[[w:Isuzu Faster#Second generation (1980–1988)|Chevrolet LUV]]<br />[[w:Isuzu Faster#Third generation (TF; 1988–2002)|Chevrolet LUV (TF)]]<br />[[w:Isuzu Faster#South America 2|Chevrolet Grand LUV (TF)]]<br />[[w:Isuzu D-Max#First generation (RA, RC; 2002)|Chevrolet D-Max]]||1968<br>1974||1971<br>2008||Originally belonged to Alberto Avayú y Cía. S.A.I.C. (part of Empresas Indumotora) which built vehicles under license for GM beginning in 1960. Avayú built the [[w:Chevrolet Chevy II / Nova|Chevrolet Chevy II / Nova]], [[w:Chevrolet C/K (first generation)|Chevrolet C-1434]], [[w:Opel Rekord|Opel Rekord]], [[w:Opel Rekord|Opel Furgón (van)]]. GM bought the plant in 1968. Built [[w:Chevrolet Chevy II / Nova|Chevrolet Chevy II / Nova]] & [[w:Chevrolet C/K (second generation)|Chevrolet C10]]. GM left Chile at the end of 1971 but returned in 1974. Past models: [[w:Chevrolet C/K (third generation)|Chevrolet C-10 and C-30]], [[w:Chevrolet C/K|Chevrolet C/K]] medium duty truck, [[w:Chevrolet Chevette#Latin America|Brazilian Chevrolet Chevette]], and Japanese [[w:Isuzu Aska#South America (Chile, Ecuador)|Chevrolet Aska]] |- |&nbsp;||Fisher Body - Cleveland Division||[[w:Cleveland|Cleveland]], [[w:Ohio|Ohio]]||United States||Bodies for GM vehicles||1921||1983||Located at Coit Road and E. 140th Street. Founded as Fisher Body Ohio Co. GM bought 60% of Fisher Body in 1919 and the remaining 40% in 1926. Began by building bodies for Chandler, Cleveland (a subsidiary of Chandler), Chrysler, and the Oakland & Chevrolet divisions of GM. After 1926, it only made bodies for GM. In 1936, the plant switched from making whole bodies to doing metal trim and fabrication due to a decrease in demand for cars due to the Depression. Production of auto bodies resumed after World War II. Built bodies for low-volume models like the 55-57 Chevy Nomad and convertible models. In the 1970's, it built large stamping dies and upholstery & trim sets. Closed in August 1983 as a metal fabrication plant. |- |&nbsp;||[[w:Cleveland Diesel Engine Division|Cleveland Diesel Engine Division]]||[[w:Cleveland|Cleveland]], [[w:Ohio|Ohio]]||United States||Heavy-duty diesel engines for locomotives, marine use (ships and submarines), and stationary use||1930||1962||Founded by Alexander Winton, company began operation in Nov. 1912 as the Winton Gas Engine & Mfg. Co. at 2116 W. 106th St. Renamed the Winton Engine Works in 1916 and later as the Winton Engine Company. GM bought Winton Engine Co. on June 20, 1930 and renamed it Winton Engine Corp. on June 30, 1930. In 1938, it was renamed Cleveland Diesel Engine Division. In January 1941, locomotive engine development and production was transferred to GM's Electro-Motive Division. Marine and stationary diesel engines were still handled by Cleveland Diesel Engine Division. In the 1950s, Cleveland Diesel Engine expanded with the acquisition of plants at 2160 W. 106th St. and 8200 Clinton Rd. The advent of nuclear-powered submarines in the 1950's reduced the US Navy's need for the large diesel engines produced by Cleveland Diesel and in 1962, GM closed down the division and transferred any remaining engine production to Electro-Motive Division's La Grange plant in McCook, Illinois. |- |&nbsp;||[[w:GM Colmotores|GM Colmotores]]||[[w:Bogotá|Bogotá]]||[[w:Colombia|Colombia]]||Products from [[w:GM do Brasil|GM do Brasil]]: [[w:Chevrolet Onix#First generation (2013)|Chevrolet Joy]] <br />Products from [[w:Isuzu|Isuzu]]: [[w:Isuzu Forward|Chevrolet F-Series Bus]], [[w:Isuzu Forward|Chevrolet F-Series truck]], [[w:Isuzu Elf|Chevrolet N-Series Bus]], [[w:Isuzu Elf|Chevrolet N-Series truck]], Chevrolet LV-series Bus ||1979||2024||Founded in 1956 as Colmotores, production began in 1962 with the [[w:Austin Motor Company|Austin]] brand, then switched to the [[w:Dodge|Dodge]] brand in 1965 when Chrysler took a 60% stake in what was now Colmotores-Chrysler. GM took over Colmotores in 1979 (Chrysler was dropped from the company name at this point). Chevrolet truck production began in 1980. Chevrolet car production began in 1982. Colmotores became GM Colmotores in 1991. Closed in April 2024.<ref>{{Cite web|url=https://gmauthority.com/blog/2024/04/gm-shutting-down-manufacturing-operations-in-colombia-and-ecuador/|title = GM Shutting Down Manufacturing Operations In Colombia And Ecuador|author=Deivis Centeno|publisher=GMAuthority.com|date = April 29, 2024}}</ref><ref>{{Cite web|url=https://www.americaeconomia.com/en/business-industries/general-motors-announces-end-car-manufacturing-operations-colombia-and-ecuador/|title = General Motors announces the end of car manufacturing operations in Colombia and Ecuador|publisher=AmericaEconomia.com|date = April 26, 2024}}</ref> Past products from [[w:Chevrolet|Chevrolet]]: [[w:Chevrolet C/K#Third generation (1973–1991)|Chevrolet C-10]], [[w:Chevrolet C/K#Third generation (1973–1991)|Chevrolet C-30]], [[w:Chevrolet Celebrity|Chevrolet Celebrity]], [[w:Chevrolet Cruze#First generation (J300; 2008)|Chevrolet Cruze]], [[w:Chevrolet Kodiak|Chevrolet Kodiak]], [[w:GMC Brigadier|Chevrolet Brigadier/Super Brigadier]]<br />Past products from [[w:GM do Brasil|GM do Brasil]]: [[w:Chevrolet Chevette#Latin America|Chevrolet Chevette]], [[w:Chevrolet Cobalt#Second generation (2011)|Chevrolet Cobalt]], [[w:Opel Ascona#Chevrolet Monza|Chevrolet Monza]]<br />Past products from [[w:Isuzu|Isuzu]]: [[w:Isuzu Faster|Chevrolet LUV]], [[w:Isuzu Trooper#First generation (1981–1991)|Chevrolet Trooper]]<br />Past products from [[w:Suzuki|Suzuki]]: [[w:Suzuki Cultus#First generation (1983)|Chevrolet Sprint]] (note: this is the same name as the one that was sold in the U.S. and Canada in the 80's), [[w:Suzuki Cultus#Second generation (1988)|Chevrolet Swift]], [[w:Suzuki Alto#Fifth generation (1998)|Chevrolet Alto]], [[w:Suzuki Cultus Crescent|Chevrolet Esteem]], [[w:Suzuki Jimny#Third generation (1998)|Chevrolet Jimny]], [[w:Suzuki Jimny#Second generation (1981)|Chevrolet Samurai]], [[w:Suzuki Solio#Predecessor: Wagon R-Wide (MA61S/MB61S; 1997)|Chevrolet Wagon R+]]<br />Past products from [[w:Opel|Opel]]: [[w:Opel Corsa|Chevrolet Corsa]]<br />Past products from [[w:GM Korea|Daewoo/GM Korea]]: [[w:Daewoo Matiz#Second generation (M200, M250; 2005)|Chevrolet Spark]], [[w:Daewoo Matiz#Third generation (M300; 2009)|Chevrolet Spark GT]], [[w:Daewoo Lacetti|Chevrolet Optra]], [[w:Daewoo Kalos|Chevrolet Aveo]]<br />Products from [[w:SAIC-GM|SAIC-GM]]: [[w:Chevrolet Sail#Second generation (2010)|Chevrolet Sail]] |- |&nbsp;||Constantine Transmission||[[w:Constantine, Michigan|Constantine, Michigan]]||United States||Automatic Transmissions||Between 1977 and 1980||Between 1987 and 1994|| Part of GM St. Joseph County Operations & GM Hydramatic Division. |- |&nbsp;||Danville Foundry||[[w:Danville, Illinois|Danville, Illinois]]||United States||[[w:Casting|Iron castings]]||1943||1995|| Was part of GM's Central Foundry Division. Leased by [[w:Defense Plant Corporation|Defense Plant Corporation]] to pour castings for military equipment during [[w:World War II|World War II]]. Also supplied castings to Ford, Chrysler, and AMC. |- |&nbsp;||Delco Chassis||[[w:Livonia, Michigan|Livonia, Michigan]]||United States||Bumpers||1953||1998||Site bought by GM in 1953. Located at 12950 and 13000 Eckles Road. Buildings demolished in 2001. Redeveloped into multi-tenant commercial use. One of the tenants is Amazon. |- |&nbsp;||[[Delco Moraine NDH]] Dayton North (NDH=New Departure Hyatt)||[[w:Dayton, Ohio|Dayton, Ohio]] (Needmore Rd.)||United States||Master Cylinders/Brake Pads/Brake Calipers/ABS Assemblies||1965||1999||Located at 3100 Needmore Road. Spun off with [[w:Delphi Automotive|Delphi]] in 1999. Closed by Delphi in 2008. Demolished. |- |&nbsp;||[[Delco Moraine NDH]] Dayton South (NDH=New Departure Hyatt)||[[w:Dayton, Ohio|Dayton, Ohio]] (Wisconsin Blvd.)||United States||Engine Bearings/Master Cylinders/Brake Pads/Brake Calipers/ABS Assemblies||1936||1999||Located at 1420 Wisconsin Boulevard. Delphi Chassis Systems. Spun off with [[w:Delphi Automotive|Delphi]] in 1999. Demolished in 2003. |- |&nbsp;||[[Delco Moraine NDH]] (NDH=New Departure Hyatt)||[[w:Sandusky, Ohio|Sandusky, Ohio]]||United States||Wheel Bearings & Wheel Bearing Assemblies||1946||1999||Located at 2509 Hayes Ave. Transferred to Delphi in 1995 which was then spun off in 1999, later sold to Hephaestus Holdings Inc. (HHI, Inc.), through its subsidiary Kyklos Bearing International (KBI) in 2008. HHI's parent, KPS Capital Partners, sold HHI to American Securities LLC in 2012. American Securities combined HHI with Metaldyne, which it also acquired in 2012, to form Metaldyne Performance Group (MPG) in 2014. Metaldyne closed the plant in 2017 when it exited the wheel bearing business. |- |&nbsp;||[[Delco Products]]||[[w:Kettering, Ohio|Kettering, Ohio]]||United States||Shock Absorbers, Struts, Impact Absorbers, Electric Motors, Windshield Wiper Assemblies||1957||1999||Located at 2555 Woodman Dr. (Administrative offices were at 2000 Forrer Blvd.) Spun off with Delphi Automotive Systems in 1999. A large portion of the site has been used by [[w:Tenneco|Tenneco Inc.]] since 2008. |- |&nbsp;||[[Delco Products Overseas Corp.]]||[[w:Dunstable|Dunstable]], [[w:Bedfordshire|Bedfordshire]], [[w:England|England]]||[[w:United Kingdom|United Kingdom]]||Windshield wiper motors, Wiper/washer units, Heater blower motors, Cooling fan motors, Ignition coils, Distributors, etc.||1934|| ?||Located on High Street North. In 1923, AC Sphinx Sparking Plug Co., Ltd. was created by a 50/50 merger of the British branch of AC Spark Plug Co. and the Sphinx Manufacturing Co., a British spark plug manufacturer based in Birmingham. When AC Spark Plug founder Albert Champion died in 1927, AC Sphinx became wholly owned by AC Spark Plug Co. of Flint, MI. GM was already the major shareholder in AC Spark Plug and took it over completely in 1933, including AC Sphinx in the UK. AC Sphinx Sparking Plug Co., Ltd. moved to Dunstable from their original site in Birmingham beginning in 1934. The transfer to Dunstable was completed in 1936 and the Birmingham plant was relinquished. Dunstable made spark plugs as well as many other automotive components. In 1946, GM Ltd. acquired AC Sphinx as well as Delco-Remy and Hyatt Ltd. from parent GM in the US. In 1947, AC Sphinx was renamed AC-Sphinx Plug Co., a division of GM Ltd. In 1952, AC-Sphinx Plug Co. was renamed AC-Delco division of GM Ltd. When the Southampton plant was added in 1952, production of automotive filters (air filters, fuel filters) was moved there from Dunstable. When the Kirkby plant was added in 1958, production of fuel pumps, thermostats, and instruments was moved there from Dunstable. In 1979, Dunstable became aligned with Delco Products in the US. In 1982, GM Ltd. was dissolved and Dunstable became Delco Products Overseas Corp., part of GM Overseas Corp. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Anaheim, California|Anaheim, California]]||United States||Batteries||1954||1999||Known as Plant 13. Located at 1201 N. Magnolia St. Supplied batteries to GM's California assembly plants like Fremont, Southgate and Van Nuys and to the West Coast aftermarket. Spun off with Delphi Automotive Systems in 1999. Closed by Delphi in 2005. Demolished. Is now Northgate Gonzalez Market. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Anderson, Indiana|Anderson, Indiana]]||United States||Starters, Generators, HEI Ignition, DIS Ignition, Switches, Magnets||1906||1994/1999|| The Heavy Duty Systems unit and a portion of the Automotive Systems unit (passenger car cranking motors) were spun off as [[w:Remy International|Delco Remy International]] in 1994, which was renamed [[w:Remy International|Remy International]] in 2004. Delco Remy International closed all manufacturing in Anderson in 2003. These parts of Delco Remy (the parts not spun off into Remy International) - Ignition (Plant 20) and Generator (Plant 11) products along with the Engineering Center (Plant 18) and Tooling (Plant 16) - merged with AC Rochester in 1994 to form AC Delco Systems. AC Delco Systems became part of GM's Delphi Automotive Systems subsidiary in 1995. Spun off with Delphi Automotive Systems in 1999. Delphi has since closed all 4 facilities in Anderson. Plant 11 closed in 2005 & was demolished in 2006. Plant 16 (2316 Jefferson St.) was sold in 2011 ERTL Enterprises & is now used by multiple businesses. Plant 18 (2900 South Scatterfield Road) closed in 2003 & was turned over to the city Of Anderson in 2006. Plant 20 (2812 E 38th St.) closed in 2007 & is now a distribution center for Sutong Tire Resources, a Chinese tire importer. Plant 45, at 6435 South Scatterfield Road, was the Magnequench plant that produced rare earth neodymium magnets. That business is now owned by NEO Material Technologies of Toronto, Ontario, Canada but the plant itself is now owned by Home Design Products, which makes plastic chairs and other products. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Bloomfield, New Jersey|Bloomfield, New Jersey]]||United States||Batteries||1936||1945||Located on 55 La France Ave. During WWII, became part of GM's Eastern Aircraft Division from 1942 making wiring harnesses, hydraulic tubing and assemblies, and ammunition boxes for the Avenger bombers & Wildcat fighters made by Eastern Aircraft. After WWII, it was replaced by the New Brunswick Battery Plant as it wasn't considered economically practical to convert back to battery production. Bloomfield produced 8 million batteries for Delco Remy. In 1950, the plant was sold to General Plastics for doing fluoropolymer coating. General Plastics and the building still exist today. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Fitzgerald, Georgia|Fitzgerald, Georgia]]||United States||Batteries||1973||1999||Known as Plant 22. Located at 342 Perry House Road. Supplied batteries to GM's Georgia assembly plants like Lakewood and Doraville and to the regional aftermarket. Spun off with Delphi Automotive Systems in 1999. Delphi sold its battery business to Johnson Controls in in July 2005 but the Fitzgerald plant continued supplying batteries to Johnson Controls through 2007. Closed by Delphi in 2007. Demolished. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Meridian, Mississippi|Meridian, Mississippi]]||United States||Starting motors, permanent magnet gear reduction cranking motors, powdered metal forge||1976||1994||Plant was originally built for National Homes Corp. Known as Plant 25. Spun off with [[w:Remy International|Delco Remy International]] in 1994. Closed by Delco Remy International in 1998. Production consolidated in Anderson, Indiana. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]/<br>[[w:Sheridan (automobile)|Sheridan]]||[[w:Muncie, Indiana|Muncie, Indiana]]||United States||Sheridan automobiles <br>Batteries||1919<br>1928||1921<br>1978||Located on West Willard Street. Originally built in 1908 by [[w:Inter-State Automobile Company|Inter-State Automobile Company]] which went bankrupt in 1913 and was renamed Inter-State Motor Company, resuming production in 1914. Built tractors for the military in WWI but did not resume civilian production in 1918 and the factory was idled. GM owned the plant from 1919-1921 to build the [[w:Sheridan (automobile)|Sheridan]] brand. Sold to [[w:Durant Motors|Durant Motors]] in 1921. Bought by Delco Remy division of GM in 1928. Known as Plant 9. Replaced by more modern Plant 26 in 1978. Plant 9 was demolished in 1978-79. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Muncie, Indiana|Muncie, Indiana]]||United States||Batteries||1977||1994|| Located at 4500 S. Delaware Dr. Known as Plant 26. Replaced Plant 9 in 1978. Plant 26 closed and was demolished in 1998. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:New Brunswick, New Jersey|New Brunswick, New Jersey]]||United States||Batteries||1946||1999||Known as Plant 12. Located at 167 Jersey Ave. Replaced the pre-war Bloomfield plant. Supplied batteries to GM's East Coast assembly plants like Tarrytown, Wilmington, and Baltimore and to the East Coast aftermarket. Started making Freedom batteries in 1973 for Chevy Vega. Spun off with Delphi Automotive Systems in 1999. Delphi sold to Johnson Controls in August 2006. Closed by Johnson Controls in 2007. Partly demolished in 2014 (the south half of the building along with the guard shack in front of the plant). The remaining facility at the north end of the property is now the Cal-Chlor Corp. East Packaging and Distribution Facility. The former south end of the plant is now used for storage by Cal-Chlor. |- |&nbsp;||[[w:Delco Remy|Delco Remy]]||[[w:Olathe, Kansas|Olathe, Kansas]]||United States||Batteries||1956||1999||Known as Plant 14. Located at 400 W. Dennis Ave. Supplied batteries to GM's Midwest assembly plants like Fairfax, Oklahoma City and Wentzville. Olathe was the first plant to produce the maintenance-free battery in 1970-1971 employing what was described as wire wound grid technology. The product was sold exclusively to JC Penny. Spun off with Delphi Automotive Systems in 1999. Last product produced was a heavy duty battery for Caterpillar. Closed by Delphi in 2005. Demolished. Site being redeveloped as Olathe Commerce Park. Some of the site is now a Jett Trucking terminal. |- |9 (1979-1988)<br /><br /> Q&nbsp;(1971-1978)||[[w:Detroit Assembly|Detroit Assembly]] (Cadillac Clark Street plant)||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||[[w:Cadillac|Cadillac]]s including <br> [[w:Cadillac Series 62|Cadillac Series 62]] (1940-1942, 1946-1964),<br> [[w:Cadillac Calais|Cadillac Calais]] (1965-1976), <br> [[w:Cadillac DeVille|Cadillac DeVille]] (1949-1984),<br> [[w:Cadillac Sixty Special|Cadillac Sixty Special]] (1938-1942, 1946-1976),<br> [[w:Cadillac Fleetwood Brougham|Cadillac Fleetwood Brougham]] (1977-1986),<br> [[w:Cadillac Brougham|Cadillac Brougham]] (1987-1988),<br> [[w:Cadillac Eldorado|Cadillac Eldorado]] (1953-1978),<br> [[w:Cadillac Eldorado#1957–1958 Eldorado Brougham|Cadillac Eldorado Brougham (Series 70)]] (1957-1958),<br> [[w:Cadillac Eldorado#1959–60 Eldorado Brougham|Cadillac Eldorado Brougham (Series 6900)]] (1959-1960) (chassis & final finishing),<br> [[w:Cadillac Seville#First generation (1976–1979)|Cadillac Seville]] (1976-1979), <br />[[w:LaSalle (automobile)|LaSalle]] (1934-1940)<br />[[w:Chevrolet Caprice#Third generation (1977–1990)|Chevrolet Caprice]] (1986-1987)<br />[[w:Oldsmobile Custom Cruiser#Second generation (1977–1990)|Oldsmobile Custom Cruiser]] (1985-1987)<br />[[w:Oldsmobile 88#Eighth generation (1977–1985)|Oldsmobile Delta 88]] (1984-1985) <br />Cadillac engines (V8, V12, V16) <br /> LaSalle straight-8 (1934-1936) (based on Oldsmobile straight-8 but assembled by Cadillac from Oldsmobile supplied components)||1921||1987||Located at 2860 Clark St. This was Cadillac's home plant and built all Cadillacs until 1971. During WWII, it built M5 & M5A1 Stuart tanks and M24 Chaffee tanks. Cadillac also built the V8 engines that powered these tanks & it also supplied engines to power these tank models made by other GM divisions and other companies as well as to power other types of armored vehicles. Cadillac also made components for aircraft engines made by GM's Allison Division. Cadillac also made M8 75mm howitzer motor carriages & M19 Twin 40mm anti-aircraft carriages. Factory closed December 1987. Chrome plating operation closed in March 1993. Engineering building (including tool room) closed in March 1994. Demolished entirely. Redeveloped into Clark Street Technology Park in 1997. |- |&nbsp;||[[w:Fleetwood Metal Body#Purchase by Fisher|Fleetwood - Detroit Body Assembly]] (Fisher Body No. 18)||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Bodies for [[w:Cadillac|Cadillac]] & [[w:LaSalle (automobile)|LaSalle]]||1917||1987||Originally built to build aircraft for World War I. Taken over by Fisher Body in 1919 & given to Fleetwood Metal Body after Fisher Body took over Fleetwood in 1925. Fleetwood Metal Body plant. Also known as Fisher Body Plant #18. Supplied bodies to Cadillac's Clark St. plant in Detroit. Located at 261 West End Ave in the [[w:Delray, Detroit|Delray]] neighborhood of Detroit. Redeveloped into Container Port Group's Detroit facility. |- |&nbsp;||[[w:Detroit Diesel|Detroit Diesel]]||[[w:Redford, Michigan|Redford, Michigan]]||United States||Diesel engines for commercial vehicles||1938||1994||Located at 13400 W. Outer Drive. Was the Detroit Diesel-Allison Division from 1970 through 1987 when it again became the the Detroit Diesel Division. Spun off in 1988 as the Detroit Diesel Corp., a joint venture with Penske Corp., which had a majority stake of 60%. Penske increased its stake to 80% later in 1988 and then to 100% in 1994. Penske sold Detroit Diesel to DaimlerChrysler in 2000. DaimlerChrysler became Daimler AG in 2007. In 2019, Daimler AG spun off its truck and bus operations including Detroit Diesel into a separate company called Daimler Truck Holding AG. |- |&nbsp;||Detroit Forge||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Forged metal components||c.1919||1994||Located at 8435 St Aubin St. Straddles the border of [[w:Detroit|Detroit]] and [[w:Hamtramck|Hamtramck]]. Sold to [[w:American Axle|American Axle]] & Manufacturing Inc. in 1994. Closed in 2008, subsequently demolished around 2014. |- |3||Chevrolet-Detroit Truck & Bus Plant||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||[[w:Chevrolet Step-Van|Chevrolet Step-Van]]<br />[[w:Chevrolet Step-Van|GMC Value-Van]]<br />Chevrolet & GMC P-Series motorhome & commercial chassis<br />[[w:Chevrolet van#1992–1996|Chevrolet Van G30 HD/ GMC Vandura G3500 HD cutaway]] (Based on P-series P30 chassis with extended front end & forward-tilting hood) 1993-1996||1974||1999||Located at 601 Piquette Ave. in Detroit (Formerly Fisher Body No. 23). P-Series motorhome & stepvan chassis business (Commercial and Motorhome Chassis Division) was sold to investors (not including the Detroit plant) and became Workhorse Custom Chassis in 1999. Workhorse was later acquired by Navistar International in 2005, which later closed the Workhorse business in 2012 and sold the assets to AMP Electric Vehicles in 2013. |- |&nbsp;||Detroit Transmission Division - Detroit||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||[[w:Hydramatic|Hydramatic]] automatic transmissions||1939||1949||Was located at 5140 Riopelle St. (between Farnsworth St. & Theodore St.) in what had been Fisher Body Plant #10. Original assembly site for the world's first production, fully automatic transmission and the headquarters of the new GM division created to produce it - the Detroit Transmission Division. First production Hydramatic shipped to Oldsmobile in October 1939. Debuted on the 1940 Oldsmobile. A heavier-duty version then launched on the 1941 Cadillac. Hydramatics continued to be produced during World War II for use in M5/M5A1 Stuart and M24 Chafee tanks (mated to Cadillac V8s), T17E1 Staghound and T18E2 Boarhound armored cars (mated to GMC inline-6's), M8 75mm howitzer motor carriages (mated to Cadillac V8s), LVT-3 Bushmaster amphibious landing vehicles (mated to Cadillac V8s), & Mark 1 Armored Snowmobiles made by Bombardier of Canada (mated to a Cadillac V8). Hydramatic became optional on Pontiacs in 1948. Hydramatic also became optional on Lincolns in 1949. The 1 millionth Hydramatic was built in January 1949. Needing more production capacity than the original factory in Detroit could handle, the Detroit Transmission Division relocated to a newer and much bigger plant in Livonia, Michigan in September 1949. Was later used by Cadillac as a parts warehouse supplying its Clark St. plant in Detroit. Closed by GM in the early 1980's and sold. Was subsequently used by Total Foods. Last occupied by Palmer Promotional Products. Heavily damaged by a fire in February 2014. The remains of the building were then demolished by summer 2014. |- |&nbsp;||Detroit Transmission Division - Livonia||[[w:Livonia, Michigan|Livonia]], [[w:Michigan|Michigan]]||United States||[[w:Hydramatic|Hydramatic]] automatic transmissions||1949||1953||The Detroit Transmission Division moved from Detroit to a newer and larger factory in Livonia in 1949. In addition to Pontiac, Oldsmobile, & Cadillac, Livonia also supplied Hydramatics to Lincoln, Nash, Hudson, Kaiser, and Fraser. However, the factory burned down in August 1953 causing 6 deaths and more than $80 million in damage. GM quickly arranged to lease Kaiser’s Willow Run factory to replace the destroyed Livonia plant and GM then bought the plant outright in November 1953 for $26 million. Salvaged equipment from Livonia was taken to [[w:Willow Run#General Motors operations|Willow Run]]; see [[w:Willow Run Transmission|Willow Run Transmission]]. |- |5<br /><br />C (1962-1978)||[[w:General Motors Diesel|General Motors Diesel]]||[[w:London, Ontario|London, Ontario]]||[[w:Canada|Canada]]||[[w:List of GM-EMD locomotives|EMD Locomotives]]<br />[[w:GM New Look (Fishbowl) Bus|GM New Look bus]] (1961-1978)<br />Terex earthmovers (1965-1980)<br />Military vehicles including:<br />[[w:AVGP|Grizzly/Cougar/Husky LAV I]]<br />[[w:LAV II|LAV II (LAV-25/Bison/Coyote)]]<br />[[w:LAV III|LAV III]]<br />[[w:Stryker|Stryker]]||1950 (GM Electro-Motive Division)<br /><br />1961 (Transit bus)||1979 (Transit bus)<br /><br />2003 (GM Defense)<br /><br />2005 (GM Electro-Motive Division)||Transit bus production began in London, Ontario in late 1961. Transit bus production moved to Saint-Eustache factory in 1979. The part of the property making military vehicles (armored fighting vehicles like the [[w:Stryker|Stryker]]) as GM Defense was sold in 2003 to [[w:General Dynamics Land Systems|General Dynamics Land Systems]], becoming [[w:General Dynamics Land Systems#General Dynamics Land Systems Canada|General Dynamics Land Systems – Canada (GDLS-C)]]. Located at 1991 Oxford St E. Interestingly, General Dynamics Land Systems was originally formed in 1982 when General Dynamics bought Chrysler Defense, Chrysler's tank division in the US, which was then renamed General Dynamics Land Systems. The locomotive operations were sold in 2005 and renamed [[w:Electro-Motive Diesel|Electro-Motive Diesel]], Inc. Electro-Motive was then sold to [[w:Caterpillar Inc.|Caterpillar's]] [[w:Progress Rail|Progress Rail]] subsidiary in 2010. The London, ON plant was then shuttered in 2012 & operations moved to a new plant in Muncie, Indiana. This part of the plant is now used by HCL Logistics, which provides logistics services to next door General Dynamics Land Systems – Canada. Located at 2021 Oxford St. E. |- |3 (1981-1987)<br /><br />M (1979-1980)||[[w:General Motors Diesel|General Motors Diesel]] Saint-Eustache Bus Plant||[[w:Saint-Eustache, Quebec|Saint-Eustache, Quebec]]||[[w:Canada|Canada]]||[[w:GM New Look (Fishbowl) Bus|GM New Look bus]] (1979-1986)<br />[[w:Classic (transit bus)|GM Classic bus]] (1983-1987)||1979||1987||Located at 1000 Industriel Blvd. Manufactures [[w:transit bus|transit bus]]es. GM consolidated Canadian transit bus production here from the London, Ontario and St. Laurent, Quebec plants in 1979. New Look transit bus production ended in 1986. Sold to [[w:Motor Coach Industries|Motor Coach Industries]], along with the designs for the [[w:Classic (transit bus)|Classic]] bus models this factory still produced in 1987. Later sold to [[w:Nova Bus|Nova Bus]] in 1993. Production of the Classic model bus ended in 1997. Still owned by [[w:Nova Bus|Nova Bus]], which is owned by [[w:Volvo AB|Volvo AB]] through [[w:Prevost (bus manufacturer)|Prevost Car]]. Prevost bought 51% of Nova Bus in 1998 and bought the remaining 49% from Henlys Group in 2004. |- |M|| [[w:General Motors Diesel|General Motors Diesel]] Saint Laurent Bus Plant || [[w:Saint Laurent, Quebec|Saint Laurent, Quebec]] || Canada || [[w:GM New Look bus|GM New Look bus]] (1975-1979) || 1974 || 1979 || Bus operations moved to [[w:Saint-Eustache, Quebec|Saint-Eustache, Quebec]]. |- |D <br />(1960-1964 [[w:Pontiac (automobile)|Pontiac]] and 1965-2009)<br /><br /> C (1964 [[w:Chevrolet|Chevrolet]])<br /><br />A (Pre-1965 [[w:Oldsmobile|Oldsmobile]] and Pre-1960 [[w:Pontiac (automobile)|Pontiac]])<br /><br />6 (Pre-1964 [[w:Buick|Buick]])||[[w:Doraville Assembly|Doraville Assembly]]||[[w:Doraville, Georgia|Doraville, Georgia]]||United States||[[w:Chevrolet Uplander|Chevrolet Uplander]] (2005-2008 & '09 in Canada)<br />[[w:Pontiac Montana#Second generation (2005)|Pontiac Montana SV6]] (2005-2006 & '07-'09 in Canada)<br />[[w:Buick Terraza|Buick Terraza]] (2005-2007)<br />[[w:Saturn Relay|Saturn Relay]] (2005-2007)||1947||2008||Located at 3900 Motors Industrial Way. Was originally part of the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. First vehicle built in Nov. 1947 was an Oldsmobile. Some of the original property bought by GM for the Doraville plant in 1945 was deemed as excess and was sold off. One of the parts that was sold (82 acres) was sold to Chevrolet to build a parts warehouse. Doraville began making Chevrolet passenger cars for 1964. BOP Assembly Division became GM Assembly Division in 1965. Oldsmobile and Pontiac production ended in Dec. 1965, leaving just Chevrolet and Buick. Oldsmobile production resumed in Aug. 1967 for the 1968 model year. Oldsmobile production again ended in April 1970 followed by Buick production in July 1970. Pontiac production resumed in Aug. 1970 for the 1971 model year. B-body full-size Chevrolet and Pontiac production ended in Dec. 1973 and midsize A-body Chevrolet and Oldsmobile production began in Jan. 1974.[https://dekalbhistory.org/wp-content/uploads/2020/04/history-of-doraville-gm-plant.pdf] Doraville switched to building fwd A-body Oldsmobiles and Buicks for 1982. Doraville then switched to building W-body Oldsmobiles for 1988. Passenger car production ended in 1995 and the Cutlass Supreme coupe & sedan were moved to Fairfax II during 1995 while the convertible was discontinued. Doraville was converted to build minivans for 1997. Production ended in September 2008. Last vehicle built was a Chevy Uplander. Demolished in 2014-2015. Site is being redeveloped. Parts of the site are now occupied by Nalley Automotive Group (Infiniti dealership & a Collision Center), Mike Rezi Nissan (formerly Nalley Nissan), Assembly Studios Atlanta, Third Rail Studios at Assembly Atlanta, and Serta Simmons Bedding.<br />Past models: [[w:Chevrolet Venture|Chevrolet Venture]] (1997-2005), [[w:Oldsmobile Silhouette#Second generation (1997–2004)|Oldsmobile Silhouette]] (1997-2004), [[w:Pontiac Trans Sport#Second generation (1997-1999)|Pontiac Trans Sport]] (1997-1998), [[w:Pontiac Montana|Pontiac Montana]] (1999-2005), [[w:Pontiac Trans Sport#Second generation (Chevrolet)|Chevrolet Trans Sport]] (Europe: '97-'04), [[w:Buick Century#Second generation (1954–1958)|Buick Century]] (1954-1958), [[w:Buick Century#Fifth generation (1982–1996)|Buick Century]] (1982-1987), [[w:Buick Electra|Buick Electra]] (1959-1962), [[w:Buick Invicta|Buick Invicta]] (1959-1962), [[w:Buick LeSabre|Buick Lesabre]] (1959-1970), [[w:Buick Roadmaster|Buick Roadmaster]] (1951-1952, 1954-1958), [[w:Buick Special|Buick Special]] (1950-1958), [[w:Buick Super|Buick Super]] (1955, 1957-1958), [[w:Buick Wildcat|Buick Wildcat]] (1963, 1965-1970), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1964-1970), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1964-70), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-74), [[w:Chevrolet Chevelle#Third generation (1973–1977)|Chevrolet Chevelle]] (1974-77), [[w:Chevrolet Impala|Chevrolet Impala]] (1964-1974), [[w:Chevrolet Malibu#Fourth generation (1978)|Chevrolet Malibu]] (1978-1981), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1975-1980), [[w:Oldsmobile Cutlass#Fourth generation (intermediate) 1973–1977|Oldsmobile Cutlass]] (Gen 4) (1974-1977), [[w:Oldsmobile Cutlass#Fifth-generation (intermediate) 1978–1988|Oldsmobile Cutlass]] (Gen 5) (1978-1981), [[w:Oldsmobile Cutlass Ciera|Oldsmobile Cutlass Ciera]] (1982-1987), [[w:Oldsmobile Cutlass Supreme#Fifth generation (1988–1997)|Oldsmobile Cutlass Supreme]] (1988-1995), [[w:Oldsmobile 88|Oldsmobile 88]] (1949-1966, 1968-1970), [[w:Oldsmobile 98|Oldsmobile 98]] (1948-1963), [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1966), [[w:Pontiac 2+2|Pontiac 2+2]] (1964-1966), [[w:Pontiac Bonneville|Pontiac Bonneville]] (1958, 1960-1966), [[w:Pontiac Grand Prix#First generation (1962–1964)|Pontiac Grand Prix]] (1962-1964), [[w:Pontiac Catalina|Pontiac Catalina]] (1960-1966, 1971-1974), [[w:Pontiac Chieftain|Pontiac Chieftain]] (1951, 1953, 1955, 1958), [[w:Pontiac Grand Ville|Pontiac Grand Ville]] (1973-1974), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1955-1958, 1964), [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1961),<br> [[w:Chevrolet El Camino|Chevrolet El Camino]] (1974-1981), [[w:GMC Sprint |GMC Sprint]] (1974-77), [[w:GMC Caballero|GMC Caballero]] (1978-1981),<br> [[w:Opel Sintra|Opel Sintra]]/[[w:Vauxhall Sintra|Vauxhall Sintra]] (1997-1999). |- |&nbsp;||General Motors East Africa||[[w:Nairobi|Nairobi]]||[[w:Kenya|Kenya]]||[[w:Isuzu F-Series|Isuzu F-Series]]<br />[[w:Isuzu N-Series|Isuzu N-Series]]<br />Isuzu buses<br /><br />||1977||2017||Originally established in 1975 as GM Kenya, a joint venture with the Kenyan govt. Renamed GM East Africa in 2003. Other shareholders are Kenya’s Industrial and Commercial Development Corporation (ICDC): 20%, Centum Investment Co. Ltd.: 17.8%, & Itochu Corporation: 4.5%. Isuzu moved pickup production to South Africa in 2012 so it could focus on trucks & buses at the Nairobi plant. <br /> GM sold its 57.7% stake in the factory to Isuzu in 2017 and left the Kenyan market. Now known as Isuzu East Africa. <br /> Past models: [[w:Isuzu D-Max|Isuzu D-Max]], [[w:Bedford Vehicles|Bedford trucks]], [[w:Bedford HA#The BTV|BTV]] |- |&nbsp;||ELAZ-GM||[[w:Yelabuga|Yelabuga]], [[w:Tatarstan|Tatarstan]]||[[w:Russia|Russia]]||[[w:Chevrolet S-10 Blazer#Second generation (1995)|Chevrolet Blazer]]||1996||2001||GM owned about 25% & ELAZ owned the other 75%. Joint venture dissolved in 2001. |- |&nbsp;||[[w:Electro Motive Division|Electro Motive Division]] - [[w:Electro-Motive Diesel#EMD La Grange (McCook)|La Grange Operations]]||[[w:McCook, Illinois|McCook, Illinois]]||United States||[[w:List of GM-EMD locomotives|Locomotives]]<br />Engines<br />Components||1936|| ||Located at 9301 W. 55th St.<br /> Electro-Motive headquarters and R&D operations. Locomotive production ended in 1991 and was moved to London, ON, Canada. Sold in 2005, renamed [[w:Electro-Motive Diesel|Electro-Motive Diesel]], bought by Caterpillar's Progress Rail subsidiary in 2010. |- |&nbsp;||[[w:Elmore Manufacturing Company|Elmore]]||[[w:Clyde, Ohio|Clyde]], [[w:Ohio|Ohio]]||United States||Elmore automobiles||1909||1912|| Factory was located on Amanda St. Bought by GM in November 1909. Elmore was known for its two-stroke engines. GM closed it down in the fall of 1912. GM sold the factory to a truckmaker named Krebs Commercial Car Company in 1912. In 1917, Krebs Commercial Car Company merged with Clyde Cars Company and Lincoln Motor Truck Company to form what became Clydesdale Motor Truck Company in 1919. Clydesdale Motor Truck Company closed in 1939 and the factory was then used by Clyde Porcelain Steel Company until the factory burned down November 11, 1945. The factory would be rebuilt and used for making washing machines by various companies, most recently, Whirlpool Corp. |- |&nbsp;||Ewing||[[w:Geneva, Ohio|Geneva]], [[w:Ohio|Ohio]]||United States||Ewing automobiles||1909||1911||Bought by GM in October 1909. Made taxis. GM closed it down in 1911. |- |X (1965–1987)<br /><br />K (Pre-1965 [[w:Oldsmobile|Oldsmobile]] & [[w:Pontiac (automobile)|Pontiac]])<br /><br />4 (Pre-1965 [[w:Buick|Buick]])||[[w:Fairfax Assembly|Fairfax Assembly]] (Fairfax I)||[[w:Kansas City, Kansas|Kansas City, Kansas]]||United States||[[w:Buick Centurion|Buick Centurion]] (1971-1973), [[w:Buick Century#Second generation (1954–1958)|Buick Century]] (1954-1958), [[w:Buick Electra|Buick Electra]] (1959-1963, 1971-1974), [[w:Buick Estate|Buick Estate]] (1970-1979), [[w:Buick Estate#1977–1990|Buick Electra Estate]] (1980-1987), [[w:Buick Invicta|Buick Invicta]] (1959-1962), [[w:Buick LeSabre|Buick LeSabre]] (1959-1985), [[w:Buick Estate#1977–1990|Buick LeSabre Estate]] (1980-1987), [[w:Buick Limited|Buick Limited]] (1958), [[w:Buick Roadmaster|Buick Roadmaster]] (1948-1949, 1951, 1953, 1956-1958), [[w:Buick Skylark#First generation (1961–1963)|Buick Skylark]] (1962-1963), [[w:Buick Special|Buick Special (B-body)]] (1947-1950, 1952-1958), [[w:Buick Special#1961–1963|Buick Special (Y-body)]] (1962-1963), [[w:Buick Super|Buick Super]] (1954-1958), [[w:Buick Wildcat|Buick Wildcat]] (1963-1970), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1982-1987), [[w:Chevrolet Impala|Chevrolet Impala]] (1982-1985), [[w:Oldsmobile 88|Oldsmobile 88]] (1949-1984), [[w:Oldsmobile 98|Oldsmobile 98]] (1948-1963), [[w:Oldsmobile F-85|Oldsmobile F-85/<br>Cutlass]] (1962-1963), [[w:Oldsmobile Custom Cruiser|Oldsmobile Custom Cruiser]] (1974-1984), [[w:Oldsmobile Jetstar I|Oldsmobile Jetstar I]] (1964-1965), [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1966), [[w:Pontiac 2+2|Pontiac 2+2]] (1964-1967), [[w:Pontiac Bonneville#Sixth generation (1977–1981)|Pontiac Bonneville]] (1958-70, 1975-1981), [[w:Pontiac Catalina|Pontiac Catalina]] (1959-1981), [[w:Pontiac Chieftain|Pontiac Chieftain]] (1950-1958), [[w:Pontiac Executive|Pontiac Executive]] (1967-1968), [[w:Pontiac Grand Prix|Pontiac Grand Prix]] (1962-1968), [[w:Pontiac Grand Ville|Pontiac Grand Ville]] (1971-1975), [[w:Pontiac LeMans#First generation (1961–1963)|Pontiac LeMans]] (1962-1963), [[w:Pontiac Parisienne#Fifth generation: 1977–1986|Pontiac Parisienne]] (1984-1986), [[w:Pontiac Safari|Pontiac Safari]] (1987), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1954-1959, 1964, 1966), [[w:Pontiac Tempest#First generation (1961–1963)|Pontiac Tempest]] (1962-1963), [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1960-1961) ||1946||1987||Located at 100 Kindelberger Road. Originally, the location of the [[w:North American Aviation|North American Aviation]] Bomber Production Plant (built in 1940) where the [[w:B-25 Mitchell|B-25 Mitchell]] was manufactured during World War II. After the war, GM leased it in 1945 and converted the plant to auto production. Automotive production began in June 1946. GM later bought the plant in 1960. Was originally part of the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. BOP Assembly Division became GM Assembly Division in 1965. Fairfax mostly focused on full-size cars ([[w:General Motors A platform (RWD)#1926-1959|A-]], B-, & C-body) but it also built B-O-P Y-body compact cars for 1962-1963. Fairfax only began making Chevrolet passenger cars for 1982. Also built [[w:F-84F Thunderstreak|F-84F Thunderstreak]] fighter jets alongside cars beginning in 1952 and ending in May 1955 when the contract ended. Plant closed May 1987. Production moved to new building on adjacent site (Fairfax II) for 1988 model year production. |- |&nbsp;||[[w:History of General Motors#Corporate restructuring and operating losses|Fiat-GM Powertrain Polska]]||[[w:Bielsko-Biala|Bielsko-Biala]]||[[w:Poland|Poland]]||[[w:Fiat JTD engine#1.3 JTDm/Multijet/CDTI/D/DDiS/HDi|GM Small Diesel Engine]] ||2003||2010|| Engine began production here in 2003 as part of Fiat-GM Powertrain, a 50/50 joint venture between GM & Fiat involving joint development and production of engines and transmissions. The joint venture was disbanded in 2005. As part of the dissolution, GM took a 50% stake in the Bielsko-Biala engine plant and the intellectual property of the 1.3 liter diesel engine produced there. In 2010, GM sold its half of the Bielsko-Biala engine plant back to Fiat. However, GM kept its half of the intellectual property of the 1.3 liter diesel engine produced there and continued to source the 1.3 liter diesel engine from the Bielsko-Biala engine plant. Chevrolet stopped using this engine around 2015. Opel was still using this engine when it was sold by GM to PSA in 2017. Opel last used this engine in 2019. This plant became part of [[w:Fiat Chrysler Automobiles|FCA]] in 2014 when Fiat and Chrysler Group merged. This plant became part of [[w:Stellantis|Stellantis]] in 2021 when FCA merged with PSA Group. Stellantis has announced that the Bielsko-Biala engine plant will close by the end of 2024. |- |&nbsp;||Fisher Body No. 10||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Auto bodies ||1917-<br />1919||1939||Was located at 5140 Riopelle St. (between Farnsworth St. & Theodore St.).GM bought 60% of Fisher Body in 1919 and bought the remainder in 1926. From 1926, Fisher Body only supplied bodies to GM brands. In 1939, became headquarters and manufacturing site of GM's new Detroit Transmission Division, which manufactured Hydramatic fully automatic transmissions that first appeared on the 1940 Oldsmobile. |- |&nbsp;||[[w:Fisher Body#Fisher Body Corporation and General Motors|Fisher Body No. 12]]||[[w:Detroit|Detroit]], Michigan||United States|| ||1916||1942||Located at 1961 E. Milwaukee Ave. Previously used by Metzger Motor Car Company from 1910-1913 and [[w:Maxwell Motor Company|Maxwell Motor Company]] from 1913-1916. Owned by Fisher from 1916-1942 then sold to J. Lee Hackett Co. which owned it until 1973. Used for warehousing from 1973-1981 and then demolished. |- |&nbsp;||[[w:Fisher Body#Fisher Body Corporation and General Motors|Fisher Body No. 21]]||[[w:Detroit|Detroit]], Michigan||United States||Bodies for Buick & Cadillac<br />Engineering and Tool & Die operations<br />Bodies for Cadillac limousines<br />Pre-production Pilot bodies||1919||1984||Located at 700 Piquette Ave. In 1999, was re-addressed as 6051 Hastings Street. Made bodies for Buick through 1926 when Buick body production moved to Fisher Body Plant No. 1 - Flint on S. Saginaw St. Made bodies for Cadillac through 1929 when Cadillac body production moved to the Fisher Body Plant No. 18/Fleetwood Body plant. Became an engineering facility from 1930-1955. Produced parts for B-25 & B-29 bombers in World War II (Aircraft Unit). Also did product development and engineering during World War II (Central Development and Experimental Unit). In 1955, GM transferred production of Cadillac limousine bodies from the Fleetwood plant in Detroit to Fisher #21 plant due to it being a low-volume operation. Closed April 1984. Sold to Cameo Color Coat in 1985 which transferred it to Carter Color Coat in 1990. Carter Color Coat then went bankrupt and the property was abandoned in 1993. GM removed some paints and other hazardous materials in the early 1990s. It's been owned by the city of Detroit since 2000. Now being converted into Fisher 21 Lofts, a mixed residential and commercial development scheduled to open in 2027. |- |&nbsp;||[[w:Fisher Body#Fisher Body Corporation and General Motors|Fisher Body No. 23/23B]]||[[w:Detroit|Detroit]], Michigan||United States||Tool & Die plant through 1972.||1921||1972||Located at 601 Piquette Ave. #23 was the six story portion while #23B was the one story portion. Known as the Detroit Die and Machine Plant. In WWII, made B-25, B-29, P-80 aircraft tools and fixtures; M4, M10, M36, M26, M18 tank parts; 3-inch and 5-inch Naval Gun Breech Housings, 155mm and 8-in. gun parts, Diesel Engine parts and Torqmatic Transmission parts. Became Chevrolet's Detroit Truck & Bus plant in 1974. |- |&nbsp;||[[w:Fisher Body#Fisher Body Corporation and General Motors|Fisher Body No. 37]]||[[w:Detroit|Detroit]], Michigan||United States||Large bodyside stampings||1919||1985||Located at 950 E Milwaukee Ave. Produced aircraft and tank assemblies, 90 mm AA guns, 5” naval gun housings and Lockheed missile parts during World War II. In 1989, bought by Lakeside Stamping which was renamed New Center Stamping in 1994. In 2019, New Center Stamping Inc. was taken over by Soave Enterprises and still stamps parts for automakers including GM, Ford, and Stellantis. |- |&nbsp;||Fisher Body No. 40||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Tooling ||1928||1983-1984||Was located at 1500 E. Ferry St. Plant 41 was next door and was used for storage. |- |&nbsp;||Fisher Body Overseas Corp. - Dundonald plant||[[w:Dundonald, County Down|Dundonald]], [[w:Northern Ireland|Northern Ireland]]||[[w:United Kingdom|United Kingdom]] ||Seat Belts, window regulators, door locks, door switches, & other automotive hardware||1980||1988||Located at 770 Upper Newtownards Road at the corner of Carrowreagh Road. Dundonald is an eastern suburb of Belfast. From 1966-1977, was a Rolls-Royce plant making aircraft engine parts. GM's Fisher Body division bought the plant in 1978 and reopened it in 1979. Production began in 1980. In 1982, the Dundonald plant became part of Fisher Body Overseas Corp., part of GM Overseas Corp. Sold to Takata Corp. in 1988. Operated as European Components Corp. (ECC) and later as TK-ECC, still making seat belts, until it was closed in 2004. Plant was later demolished. |- |&nbsp;||Fisher Body Overseas Corp. - Kennedy Way plant||[[w:Belfast|Belfast]], [[w:Northern Ireland|Northern Ireland]]||[[w:United Kingdom|United Kingdom]] ||Seat Belt Buckles, Door switches, & other automotive hardware||1982||?||Located in Kennedy Way Industrial Estate on Blackstaff Road in western Belfast. The Kennedy Way plant was part of Fisher Body Overseas Corp., part of GM Overseas Corp. |- |&nbsp;||[[w:Flint, Michigan auto industry#Flint Plant #1|Flint Body Assembly]] (Fisher Body Flint Plant #1)||[[w:Flint, Michigan|Flint]], Michigan||United States||Bodies for Buick and later also Chevrolet & Oldsmobile<br />||1923||1987||Located at 4000-4500 S. Saginaw St. Originally a [[w:Durant Motors|Durant Motors]] plant. Bought by GM in 1926. Became Fisher Body Plant No. 1 - Flint. Supplied bodies to the Buick plant in Flint (later known as Buick City). After Buick City switched to unibody, fwd cars for 1986, Flint Body began supplying bodies for G-cars built at the Pontiac Assembly plant in Pontiac, MI. Closed in Dec. 1987 when G-body production at Pontiac Assembly ended. Last body built was a Buick Regal Grand National to be completed at Pontiac Assembly. Most of the site was demolished and the remainder was converted into the Great Lakes Technology Center. GM leased space there for R&D and offices (including AC Rochester world headquarters) until 2009. Various medical-related companies now occupy much of the property. The original administration building at 4300 S. Saginaw St. still stands as of 2022 and still has a Fisher Body logo at the top of the front of the building in the center. |- |&nbsp;||[[w:Flint, Michigan auto industry#Flint V8 Engine Plant/Flint Engine South|Chevrolet-Flint (V8) Engine Plant]] (Van Slyke Road)||[[w:Flint, Michigan|Flint, Michigan]]||United States||[[w:Chevrolet small-block engine (first and second generation)|Chevrolet small-block V8]]<br />[[w:Chevrolet Turbo-Thrift engine|Chevrolet Turbo-Thrift I6]]<br />[[w:Chevrolet 153 4-cylinder engine|Chevrolet 153 4-cylinder engine]]<br />[[w:List of Isuzu engines#Isuzu G engine|Isuzu G140 & G161Z SOHC gas<br> 4-cylinder engine for Chevy Chevette & Pontiac 1000/Acadian]]<ref>{{cite news| title = 1975, Chevrolet Turns to Opel for the New Fuel-Saving Chevette| url = https://web.archive.org/web/20180116081057/https://history.gmheritagecenter.com/wiki/index.php/1975%2C_Chevrolet_Turns_to_Opel_for_the_New_Fuel-Saving_Chevette| archive-date = 2018-01-16| publisher = General Motors| access-date = 2014-06-05| url-status = dead}}</ref>||1954||1999||Located at 3848 Van Slyke Road, down the block from the Flint Truck Assembly Plant. Only V8 engines were made until 1961, when 4 & 6 cylinder engines began to be made for the 1962 Chevy II. Around 45 million Chevy small-block V8 engines were built at this plant. Plant closed in 1999 and was demolished. Land is now used by a new paint shop for the [[w:Flint Truck Assembly|Flint Truck Assembly Plant]]. The new paint shop (Flint Assembly Paint Operations) was announced in December 2013 and opened in 2016, replacing the previous paint shop inside the assembly plant. |- |1 (1928-1947)||[[w:Flint, Michigan auto industry#Flint Manufacturing Div./Delphi Flint West/Flint Tool and Die|Chevrolet-Flint Manufacturing Complex]] ("Chevy in the Hole") /<br /> Flint West||[[w:Flint, Michigan|Flint, Michigan]]||United States||[[w:Chevrolet|Chevrolet]] vehicles including [[w:Chevrolet Series 490|Chevrolet Series 490]]<br />[[w:Chevrolet Superior|Chevrolet Superior]]<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Stylemaster|Chevrolet Stylemaster]]<br />[[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br />[[w:Chevrolet AK Series|Chevrolet AK Series]]<br />[[w:Chevrolet Suburban|Chevrolet Suburban]] (Gen 1 & 2)<br /><br />[[w:Chevrolet|Chevrolet]] engines including [[w:Chevrolet Inline-4 engine#171|Chevrolet Inline-4 engine]]<br />[[w:Chevrolet Stovebolt engine|Chevrolet Stovebolt / Blue Flame I6]]<br />||1913||2004||Located at 300 N. Chevrolet Ave. (formerly known as Wilcox Street). This was Chevrolet's home plant. It predated Chevrolet becoming part of GM in 1918. The complex originally included metal stamping, body assembly, vehicle assembly, engine assembly, and various component manufacturing plants. On January 11, 1940, the 25 millionth GM vehicle built in the US, a 1940 Chevrolet Special Deluxe Sedan, was built here. Plant 2 (vehicle assembly) & 2A (Fisher Body) were replaced by new plants on Van Slyke Road elsewhere in Flint in 1947 (now the [[w:Flint Truck Assembly|Flint Truck Assembly Plant]]). Plant 4 was the engine plant. It closed in 1984 but was ultimately reopened later. In 1987, the complex was taken over by the AC Spark Plug division and became AC Spark Plug Flint West. In 1988, it became AC Rochester Flint West, and in 1994 AC Delco Systems Flint West following further consolidations. In early 1995, it was renamed Delphi Flint West. Around this time, plants in the complex began to be demolished until Plant 4 closed in 2004 and was subsequently demolished. Plant 4 last made generators and fuel filters. Building 35 still exists as part of [[w:Kettering University|Kettering University]]. It is now the C.S. Mott Science and Engineering Building after the addition of another floor and a new façade. Plant 38 still exists as GM's Flint Tool & Die plant. All the other buildings are gone. Much of the property is being redeveloped into a park called [[w:Chevy Commons|Chevy Commons]]. |- |&nbsp;||[[w:Flint North|Flint North]] Powertrain||[[w:Flint, Michigan|Flint, Michigan]]||United States||[[w:Buick V8 engine|Buick V8 engine]]<br />[[w:Buick V6 engine|Buick V6 engine]]<br />Engine Components<br />[[w:Dynaflow|Dynaflow]] transmissions<br />transmission components<br /> torque converters<br />coil springs||1905||2010||Complex was made up of several factories. Flint North is the part of the Buick City factory complex north of Leith St. stretching north to E. Pierson Rd. [[w:Liberty L-12|Liberty aircraft engines]] were made here during WWI. Factory 36 was the engine plant. Factory 36 opened in 1952 and closed in 2008. The remainder of the complex closed by December 2010. Demolished by 2012. Part of the site (1225 E. Marengo Ave.) is now occupied by American SpiralWeld Pipe Co. |- ||7||[[w:Arlington Assembly#History|Fort Worth Assembly]]||[[w:Fort Worth, TX|Fort Worth, Texas]]||United States||[[w:Chevrolet Series 490|Chevrolet Series 490]]||1917||1924 |Built by Chevrolet before it became part of GM. Located at 2601 W. 7th St. (then known as Arlington Heights Blvd.). Is across the street from what is now Montgomery Plaza. A 3rd story was added to the building in 1920. Closed due to flood damage from the April 1922 flooding of the Trinity River and the subsequent imposition of flood-control taxes.<ref>https://books.google.com/books?id=mTvuAwAAQBAJ&dq=1920+fort+worth+chevrolet+factory&pg=PA52 Lost Fort Worth, page 52</ref> Montgomery Ward leased the empty Chevy plant between 1924 and 1928 to house a temporary store while its main Fort Worth facility was built across what is now West Seventh Street. That building is now Montgomery Plaza. The Chevy plant was later used by various different companies including GM's Frigidaire division as a sales and warehouse facility and later by Tandy Corp., first for its Radio Shack division and later for its corporate HQ. Demolished in 1986. Site is now Olympus 7th Street Station, a luxury apartment building. |- |G <br />(1960-1964 [[w:Chevrolet|Chevrolet]] and 1965-1989)<br /><br /> B (Pre-1960 [[w:Oldsmobile|Oldsmobile]])<br /><br /> F (Pre-1960 [[w:Pontiac (automobile)|Pontiac)]]<br /><br /> 7 (Pre-1960 [[w:Buick|Buick]])||[[w:Framingham Assembly|Framingham Assembly]]||[[w:Framingham, Massachusetts|Framingham, Massachusetts]]||United States||[[w:General Motors A platform (1925)#1964|GM rwd A-bodies]]: [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1965-1969), [[w:Pontiac Tempest|Pontiac Tempest]] (1967-1970), [[w:Pontiac LeMans|Pontiac LeMans]] (1967-1972, 1974-1976), [[w:Pontiac GTO|Pontiac GTO]] (1966-1969, 1971-1972), [[w:Oldsmobile Cutlass|Oldsmobile Cutlass]] (1967-1981), [[w:Oldsmobile Cutlass Supreme|Oldsmobile Cutlass Supreme]] (1967-1981), [[w:Oldsmobile 442|Oldsmobile 442]] (1967-1977), [[w:Oldsmobile Vista Cruiser|Oldsmobile Vista Cruiser]] (1968-1977), [[w:Buick Skylark#Third generation (1968–1972)|Buick Skylark]] (1970-1972), [[w:Buick GS|Buick GS]] (1970-1972), [[w:Buick Century|Buick Century]] (1973-1981), [[w:Buick Regal|Buick Regal]] (1973-1981) [[w:General Motors A platform (1982)|GM fwd A-bodies]]: [[w:Chevrolet Celebrity|Chevrolet Celebrity]] (1982-1988), [[w:Pontiac 6000|Pontiac 6000]] (1982), [[w:Oldsmobile Cutlass Ciera|Oldsmobile Cutlass Ciera]] (1983-1989), [[w:Buick Century#Fifth generation (1982–1996)|Buick Century]] (1989) ||1948||1989|| Located at 63 Western Ave. First vehicle produced was a 1948 Buick on February 26, 1948. Was originally part of the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. Framingham is the only BOP Assembly Division plant to switch to the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Framingham switched to Chevrolet Assembly Division in August 1959 [https://www.worthpoint.com/worthopedia/gm-framingham-ma-canada-pontiac-buick-olds-plant]. Framingham began making Chevrolet passenger cars for 1960. BOP Assembly Division became GM Assembly Division in 1965. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were then gradually transferred to the GM Assembly Division. Framingham Assembly joined the GM Assembly Division in 1968. Idled October 1, 1982 but reopened March 14, 1983. Closed August 1, 1989. Sold to ADESA to use as a vehicle auction site. <br/>Past models: <br/> [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1960-1966), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1960-1966), [[w:Chevrolet Impala|Chevrolet Impala]] (1960-1966), [[w:Chevrolet Chevy II / Nova#First generation (1962–1965)|Chevrolet Chevy II/Nova]] (1962-1963), [[w:Buick Century#Second generation (1954–1958)|Buick Century]] (B-body), [[w:Buick Roadmaster|Buick Roadmaster]] (1949-1950, 1955, 1958), [[w:Buick Special#1949–1958|Buick Special]] (1952-1953, 1955-1958), [[w:Buick Super|Buick Super]] (1954), [[w:Oldsmobile 88|Oldsmobile 88]], [[w:Oldsmobile 98|Oldsmobile 98]], [[w:Pontiac Bonneville|Pontiac Bonneville]] (1958), [[w:Pontiac Chieftain|Pontiac Chieftain]] (1951, 1954, 1956), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1955, 1957, 1959) |- |&nbsp;||General Motors France S.A.||[[w:Gennevilliers|Gennevilliers]]||[[w:France|France]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Buick|Buick]]||1939||1940||Operations interrupted by German invasion of France and seizure of the plant in 1940 during WWII. |- |Z (1965-1982)<br /><br />H (1963-1964 [[w:Chevrolet|Chevrolet]] and [[w:GMC (automobile)|GMC]])<br /><br />F (1964 [[w:Pontiac (automobile)|Pontiac]] and [[w:Oldsmobile|Oldsmobile]])<br /><br />3 (1964 [[w:Buick|Buick]])||[[w:Fremont Assembly|Fremont Assembly]]||[[w:Fremont, California|Fremont, California]]||United States||[[w:Buick Century|Buick Century]] (1973-1981)<br />[[w:Buick GS|Buick GS]] (1965-1972)<br />[[w:Buick Regal|Buick Regal]] (1973-1981)<br />[[w:Buick Skylark|Buick Skylark]] (1964-1972)<br />[[w:Buick Special|Buick Special]] (1964-1969)<br />[[w:Buick Sport Wagon|Buick Sport Wagon]] (1965)<br />[[w:Chevrolet K5 Blazer#1973–1991|Chevrolet K5 Blazer]] (1977-1979)<br />[[w:Chevrolet C/K|Chevrolet C/K]] (1963-1982)<br />[[w:Chevrolet Celebrity|Chevrolet Celebrity]] (1982)<br />[[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1964-1969, 1973-1977)<br />[[w:Chevrolet El Camino|Chevrolet El Camino]] (1964-1969, 1973-1981)<br />[[w:Chevrolet Malibu|Chevrolet Malibu]] (1978-1981)<br />[[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1973-1981)<br />[[w:Chevrolet Suburban|Chevrolet Suburban]] (1964-1971)<br />[[w:GMC C/K|GMC C/K]] (1963-1982)<br />[[w:GMC Caballero|GMC Caballero]] (1978-1981)<br />[[w:Chevrolet K5 Blazer#1973–1991|GMC Jimmy]] (1977-1979)<br />[[w:GMC Sprint|GMC Sprint]] (1973-1977)<br />[[w:GMC Suburban|GMC Suburban]] (1964-1971)<br />[[w:Oldsmobile Cutlass|Oldsmobile Cutlass]] (1964-1972)<br />[[w:Oldsmobile Cutlass Ciera|Oldsmobile Cutlass Ciera]] (1982)<br />[[w:Oldsmobile Cutlass Supreme|Oldsmobile Cutlass Supreme]] (1966-1972)<br />[[w:Oldsmobile 442|Oldsmobile 442]] (1964-1972)<br />[[w:Oldsmobile Vista Cruiser|Oldsmobile Vista Cruiser]] (1965-1966)<br />[[w:Pontiac Grand Prix#Third generation (1969–1972)|Pontiac Grand Prix]] (1970)<br />[[w:Pontiac LeMans|Pontiac LeMans]] (1964-1974)<br />[[w:Pontiac GTO|Pontiac GTO]] (1964-1973)<br />[[w:Pontiac Tempest|Pontiac Tempest]] (1964-1969)||1963||1982||Located at 45500 Fremont Blvd.<br /> Operated from 1963-1982 as a GM factory. Was originally part of the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]] though it also built Chevrolet passenger cars from the beginning. Fremont built GM's midsize A-bodies. Was the first BOP Assembly Division plant to also build Chevrolet and GMC trucks. Regular truck production began June 10, 1963. First production car built September 3, 1963. BOP Assembly Division became GM Assembly Division in 1965. Plant was idled March 1982.<br /> From 1984-2010, operated as [[w:NUMMI|New United Motor Manufacturing Inc. (NUMMI)]], which was a 50/50 joint venture between GM and [[w:Toyota|Toyota]] and assembled both GM and Toyota vehicles.<br /> Sold to [[w:Tesla Motors|Tesla, Inc.]] in May 2010.<ref>{{cite news|author=Sam Abuelsamid|title=Tesla to buy old resources from GM, Toyota for NUMMI plant|url=http://www.autoblog.com/2010/08/22/tesla-to-buy-old-resources-from-gm-toyota/|access-date=20 August 2015|publisher=Autoblog.com|date=August 22, 2010}}</ref> Tesla began production at Fremont in 2012. |- |P||[[w:Fabryka Samochodów Osobowych|FSO]]||[[w:Warsaw|Warsaw]]||[[w:Poland|Poland]]||[[w:Opel Astra#F|Opel Astra]]<br />[[w:Opel Vectra#Vectra B (1995–2002)|Opel Vectra]]||1994||2000||Built by an [[w:Fabryka Samochodów Osobowych|FSO]] - GM joint venture operating out of a converted old FSO warehouse. |- |W||[[w:Fabryka Samochodów Osobowych|FSO]]||[[w:Warsaw|Warsaw]]||[[w:Poland|Poland]]||[[w:Chevrolet Aveo (T200)|Chevrolet Aveo]]||2007||2011||Built by [[w:Fabryka Samochodów Osobowych|FSO]] for GM as part of a joint venture between [[w:Ukrainian Automobile Corporation|UkrAvto]] (parent of FSO) & GM. [[w:Ukrainian Automobile Corporation|Ukravto]] owned 60% & [[w:GM Daewoo|GM Daewoo]] owned 40%. The production license ended in 2011 & was not renewed. |- |&nbsp;||[[General Motors Gmbh]]||[[w:Berlin|Berlin]]||Germany||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]||1927||1932||Replaced Hamburg plant. Located in Borsigwalde area of Berlin. Also predates the acquisition of [[w:Opel|Opel]] by GM. |- |&nbsp;||[[General Motors Gmbh]]||[[w:Hamburg|Hamburg]]||Germany||[[w:Chevrolet|Chevrolet]] trucks||1926||1927||GM's first German plant predating the acquisition of [[w:Opel|Opel]]. Located in a leased warehouse. |- |&nbsp;||[[General Motors Ltd.]]||[[w:Hendon|Hendon]], [[w:England|England]]||United Kingdom||[[w:Chevrolet|Chevrolet]] <br /> [[w:GMC (automobile)|GMC]] ||1924||1930||GM's first British plant predating the acquisition of [[w:Vauxhall Motors|Vauxhall]]. Operated out of a leased plant. When Chevrolet production was moved to Luton in 1930, Hendon was used for parts distribution. Later, Frigidaire made appliances at Hendon. In 1970, Hendon began producing steering columns. In 1971, more automotive components began to be produced in place of Frigidaire appliances. In 1980, GM sold the Hendon site for redevelopment but leased back an area for construction of a new plant for Saginaw Steering Gear. The new plant opened in 1981. See listing for "Saginaw Steering Gear Overseas Corp. - Southampton plant" for more details. |- |&nbsp;||[[General Motors Ltd.]]||[[w:Southampton|Southampton]], [[w:Hampshire|Hampshire]], [[w:England|England]]||United Kingdom||[[w:Chevrolet|Chevrolet]]||1938||1946||Located on West Bay Road in the New Dock area of Southampton. Operations interrupted by German bombing of the UK during WWII. Plant was bombed in 1940 & 1941. Plant was reoccupied in 1946. Plant acquired by GM Ltd. in 1951 and converted to produce automotive components in 1952. See listing for "AC Spark Plug Overseas Corp. - Southampton plant" for more details. |- |&nbsp;||[[w:Ghandhara Industries|Ghandhara Industries]]||[[w:Karachi|Karachi]], [[w:Sindh|Sindh]]||[[w:Pakistan|Pakistan]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford trucks and buses]] including [[w:Bedford TJ|Bedford TJ]]<br />[[w:Holden|Holden]]||1953||1970's||Originally a GM owned plant (General Motors Overseas Distribution Corporation). Sold to [[w:Ghandhara Industries|Ghandhara Industries]] Ltd. in 1963. Nationalized in 1972, it then became National Motors Ltd. Privatized to the [[w:Bibojee Group|Bibojee Group]] in 1992 who reverted back to the previous name, Ghandhara Industries. Ghandara Industries assembles Isuzu vehicles today. |- |&nbsp;||[[GM-Auto]]||[[w:Saint-Petersburg|Saint-Petersburg]]||[[w:Russia|Russia]]||[[w:Chevrolet Cruze|Chevrolet Cruze]]<br />[[w:Opel Astra|Opel Astra]] [[w:Chevrolet Trailblazer (SUV)#Second generation (RG; 2011)|Chevrolet Trailblazer]] [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]]<br />[[w:Opel Antara|Opel Antara]] ||2007||2015||Includes operations at the temporary "Arsenal plant" & the permanent plant in [[w:Shushary, Saint Petersburg|Shushary]]. GM ceased most operations in Russia back in 2015 and the GM-Auto plant closed. Sold to Hyundai Motor in 2020. |- |&nbsp;||[[w:GM-AvtoVAZ|GM-AvtoVAZ]]||[[w:Tolyatti|Togliatti]]||[[w:Russia|Russia]]||[[w:Chevrolet Niva|Chevrolet Niva]]<br />[[w:Chevrolet Viva|Chevrolet Viva]]||2002||2019||Was originally owned 41.5% by GM, 41.5% by AvtoVAZ, & 17% by [[w:EBRD|EBRD]]. In 2012, [[w:EBRD|EBRD]] was bought out & GM-AvtoVAZ became 50/50 owned by GM & AvtoVAZ. The GM-AvtoVAZ joint venture was dissolved in 2019 when AvtoVAZ bought out GM. The Chevrolet Niva was renamed Lada Niva Travel during 2020. AvtoVAZ was a part of [[w:Renault Group|Renault Group]] from 2016 until 2022. |- |4||GM España S.A.||[[w:Figueruelas|Figueruelas]], [[w: Zaragoza (province)| Zaragoza (province)]]||[[w:Spain|Spain]]||[[w:Opel Corsa|Opel/Vauxhall Corsa]] A, B, C, D, E (5 door, van)<br />[[w:Opel Meriva|Opel/Vauxhall Meriva]] A, B<br />[[w:Opel Combo#Combo C (2001-2012)|Opel/Vauxhall/Holden Combo]] C<br />[[w:Opel Tigra#Tigra A (1994–2000)|Opel/Vauxhall Tigra A]]<br />[[w:Vauxhall Nova|Vauxhall Nova]]<br />[[w:Holden Barina#Third generation (SB; 1994–2000)|Holden Barina (SB)]]<br />[[w:Holden Barina#Fourth generation (XC; 2001–2005)|Holden Barina (XC)]]||1982||2017|| [[w:Adam Opel AG|Opel plant]]. Sold to [[w:PSA Group|PSA Group]] in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. |- |&nbsp;||GM Indonesia||Pondok Ungu, [[w:Bekasi|Bekasi]], [[w:West Java|West Java]]||[[w:Indonesia|Indonesia]]||After reopening:<br /> [[w:Chevrolet Spin|Chevrolet Spin]]<br /><br />Before temporary closure in 2005:<br /> [[w:Chevrolet S-10 Blazer#Second generation (1995)|Chevrolet Blazer]]<br />[[w:Opel Blazer|Opel Blazer]]<br />[[w:Opel Astra#F|Opel Optima]]<br />[[w:Opel Vectra#Vectra A (1988–1995)|Opel Vectra]]||1995||2015||PT Garmak Motor assembled models under license from GM beginning in 1976, before the establishment of their joint venture with GM in 1993. These license built models include: [[w:Bedford Vehicles|Bedford]] trucks, [[w:Bedford HA#The BTV|Morina]], [[w:Opel Rekord Series E|Opel Rekord E 3-d panel van]], [[w:Opel Kadett#Kadett D (1979–1984)|Opel Kadett D]], [[w:Isuzu Faster#First generation (1972–1980)|Chevrolet LUV (Mk 1)]], [[w:Isuzu Faster#Second generation (1980–1988)|Chevrolet LUV (Mk II)]], & [[w:Isuzu Trooper#First generation (1981–1991)|Chevrolet Trooper/Stallion]]. Originally established as PT General Motors Buana Indonesia, which was owned 60% by GM and 40% by PT Garmak Motor. GM bought out Garmak in 1997 taking 100% of the shares. The assembly plant was closed from 2005-2011 and reopened in 2012 to make the Chevy Spin. Closed again in June 2015. |- |&nbsp;||GM Java||[[w:Tanjung Priok|Tanjung Priok]], [[w:North Jakarta|North Jakarta]], [[w:Jakarta|Jakarta]]||[[w:Indonesia|Indonesia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Opel|Opel]] ([[w:Opel 1.2 Liter|1.2 Liter]])<br />[[w:Vauxhall Motors|Vauxhall]] ([[w:Vauxhall 10-4|10-4]])||1927||1953||First Car Factory in what is now Indonesia (at the time, it was the Dutch East Indies). GM pulled out of Indonesia in 1954 and liquidated the company by 1956. Sold to P.N. Gaja Motors, which assembled the Opel Rekord and Kadett in the 1960's. Eventually became part of Astra International and its joint ventures with Toyota/Daihatsu. |- |&nbsp;||GM Malaysia Sdn. Bhd.||[[w:Tampoi, Johor|Tampoi]], [[w:Johor|Johor]]||[[w:Malaysia|Malaysia]]||[[w:Opel Ascona|Opel Ascona]]<br />[[w:Opel Commodore|Opel Commodore]]<br />[[w:Opel Gemini|Opel Gemini]]<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Manta|Opel Manta]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Bedford HA#The BTV|Bedford Harimau]]<br />[[w:Holden|Holden]]||1968||1982||Originally Capital Motor Assembly Corp., which assembled Opel models under license from GM beginning in 1968. These license built models include: [[w:Opel Commodore|Opel Commodore]] A, [[w:Opel Kadett|Opel Kadett B]], [[w:Opel Rekord Series C|Opel Rekord C]], & components. Capital Motor also assembled cars for Honda and Datsun (Nissan). GM bought Capital Motor Assembly in 1971 and renamed it GM Malaysia. Malaysian government policies that said Malaysians had to own a majority of local auto assembly plants forced GM to sell GM Malaysia to Oriental Holdings in 1980 which then renamed the unit Oriental Assemblers. Assembly of GM vehicles ended in 1982. Oriental Assemblers continued making Honda cars at this plant until around 2004. |- |&nbsp;||GM Philippines, Inc.||[[w:Paco, Manila|Paco district]], [[w:Manila|Manila]]||[[w:Philippines|Philippines]]||[[w:Buick Electra|Buick Electra]]<br />[[w:Chevrolet Bel Air|Chevrolet Bel Air]]<br />[[w:Chevrolet Camaro (first generation)|Chevrolet Camaro]]<br />[[w:Chevrolet Impala|Chevrolet Impala]]<br />[[w:Chevrolet Malibu|Chevrolet Malibu]]<br />Chevrolet trucks<br />[[w:Holden EH|Holden EH]]<br />[[w:Holden HD|Holden HD]]<br />[[w:Holden HR|Holden HR]]<br />[[w:Holden HK|Holden HK]]<br />[[w:Holden HT|Holden HT]]<br />[[w:Holden HG|Holden HG]]<br />[[w:Holden HQ|Holden HQ]]<br />[[w:Holden Torana|Holden Torana]]<br />[[w:Isuzu Gemini|Isuzu Gemini]]<br />[[w:Opel Ascona|Opel Ascona]]<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Manta|Opel Manta]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Pontiac Parisienne#Philippines|Pontiac Parisienne]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Vauxhall VX4/90|Vauxhall VX4/90]]<br />[[w:Bedford HA#The BTV|GM Amigo/Tiger/Harabas]]<br />[[w:Bedford Vehicles|Bedford trucks]] ||1953||1985||Originally Yutivo Sons Hardware Co. Yutivo assembled various models under license from GM beginning in 1953. GM bought a 49% stake in Yutivo in 1972 and renamed it GM Philippines. Isuzu invested in the company in 1979 and it was renamed GM Pilipinas, Inc. Assembly of GM vehicles ended in 1985 and GM sold the plant to Isuzu in 1994. Isuzu closed this plant and company in 1995 and replaced it with a new plant in Biñan, Laguna owned by a new subsidiary (Isuzu Philippines Corporation). |- |G||[[w:GM Manufacturing Poland|GM Manufacturing Poland Sp. z o.o.]]||[[w:Gliwice|Gliwice]]||[[w:Poland|Poland]]||[[w:Opel Astra#Astra K (B16; 2015)|Opel Astra]] K (5-door)<br />[[w:Holden Astra#Seventh generation (BK, BL; 2016)|Holden Astra (BK)]] (5-door)<br />[[w:Opel Astra#Astra J (P10; 2009)|Opel/Vauxhall Astra J]] (3-door, 4-door sedan, 5-door)<br />[[w:Opel Astra#Astra H (A04; 2004)|Opel Astra Classic III]] sedan<br />[[w:Holden Astra#Sixth generation (PJ; 2015)|Holden Astra (PJ)]] (GTC, VXR)<br />[[w:Opel Astra#Astra H (A04; 2004)|Opel Astra H]] sedan<br />[[w:Opel Astra#Astra G (T98; 1998)|Opel Astra Classic II]]<br />[[w:Holden Astra#Fourth generation (TS; 1998)|Holden Astra Classic (TS)]]<br />[[w:Opel Astra#Astra F (T92; 1992)|Opel Astra Classic I]]<br />[[w:Opel Agila#First generation (H00; 2000)|Opel/Vauxhall Agila A]]<br />[[w:Suzuki Solio#First generation (MA63S/MA64S/MA32S; 1999)|Suzuki Wagon R+ (2005-2007)]]<br />[[w:Opel Cascada|Opel/Vauxhall Cascada]]<br />[[w:Buick Cascada|Buick Cascada]]<br />[[w:Holden Cascada|Holden Cascada (CJ)]]<br />[[w:Opel Zafira#Zafira B (2005)|Opel/Vauxhall Zafira B]]||1998||2019|| [[w:Adam Opel AG|Opel]] plant. Sold to [[w:PSA Group|PSA Group]] in 2017. Continued to supply the [[w:Buick Cascada|Buick Cascada]] to GM through 2019. Part of [[w:Stellantis|Stellantis]] since 2021. |- |&nbsp;||GM Powertrain Fredericksburg||[[w:Fredericksburg, Virginia|Fredericksburg, Virginia]]||United States||Torque converter clutches for automatic transmissions||1979||2010|| Located at 11032 Tidewater Trail. Originally part of Delco Moraine Division, which bought the plant in 1978 from American Poclain. Moved to GM Powertrain division in 1993. Sold to idX Corp. in 2017. |- |&nbsp;||[[w:GM Powertrain Poland|GM Powertrain Poland]]||[[w:Tychy|Tychy]]||[[w:Poland|Poland]]||Diesel engines including the Isuzu [[w:Circle L engine|Circle L engine]]||1999||2017|| [[w:Adam Opel AG|Opel]] plant. Originally founded as Isuzu Motors Polska (ISPOL) in 1996. GM bought 60% in 2002 & the remaining 40% in 2013. Sold to [[w:PSA Group|PSA Group]] along with Opel in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. |- |&nbsp;||[[w:Grand Blanc Metal Center|Grand Blanc Metal Center]]||[[w:Grand Blanc, Michigan|Grand Blanc, Michigan]]||United States||Metal stampings and metal fabrication of body components, Tooling jigs-and-fixtures||1942||2013||Located at 10800 S. Saginaw St. Originally built by the US govt. and opened in 1942 to build tanks. Also known as the Fisher Body Tank Plant as it was operated by GM's Fisher Body Div. Built [[w:M4 Sherman|M4 Sherman]] (M4A2, M4A3 & M4A3E2) and [[w:M26 Pershing|M26 Pershing]] (T26E3) tanks as well as M10 & M10A1 "Wolverine" Tank Destroyers during WWII and [[w:M48 Patton|M48 Patton]] (M48 and M48A1) tanks beginning in 1952 for the Korean War. Grand Blanc also made a 90mm main gun that Grand Blanc installed on the last 300 M10A1s built at Grand Blanc, thus converting them into the M36 "Jackson". The Grand Blanc-built 90mm main gun was also installed on other M10A1s by other companies and by Grand Blanc on the M4A3 Sherman tank to create the M36B1 & M36B2 tank destroyers. Grand Blanc also supplied 2,445 turrets and 1,511 hulls for the 2,507 M18 Hellcats built by the Buick Division. Production ended in 1945 as WWII wound down. Buick then leased Grand Blanc and used it as a warehouse from 1947 until Fisher Body bought it in 1951. The M48 Patton was built from 1952-1955. Converted in 1955 into an automotive body metal fabricating plant. Became part of GM's Metal Fabricating Division in 1994 and became Grand Blanc Weld Tool Center in 2002, making tooling for GM. Closed July 2013. Most of the work done at Grand Blanc was transferred to Parma, OH. Now called Grand Blanc Center, apparently used as a warehouse. |- |&nbsp;||Grand Rapids Metal Center||[[w:Wyoming, Michigan|Wyoming, Michigan]]||United States||&nbsp;||1936||2009||Located at 300 36th Street SW. Metal fabricating plant. Demolished. |- |&nbsp;||Guide Lamp Division||[[w:Anderson, Indiana|Anderson, Indiana]]||United States||Headlamp, Taillamp assemblies||1929||1998||GM bought Guide Motor Lamp Manufacturing Company in 1928, becoming part of the Delco Remy division initially before becoming the separate Guide Lamp Division in 1929. Guide Lamp Division was renamed Guide Division in 1975. Guide Division merged with Fisher Body in 1984 to create Fisher Guide. Fisher Guide then merged with the Inland Division in 1990 to form Inland Fisher Guide. In 1998, Guide operations were sold to [[w:Palladium Equity Partners|Palladium Equity Partners]] which turned the operation into Guide Corp. In 2007, Guide Corp. closed down. |- |H||[[w:General Motors India|Halol]]||[[w:Halol|Halol]], [[w:Gujarat|Gujarat]]||[[w:India|India]]||[[w:Chevrolet Sail#India|Chevrolet Sail U-VA]] (hatchback)<br />[[w:Chevrolet Sail#India|Chevrolet Sail]] (sedan)<br />[[w:Chevrolet Cruze|Chevrolet Cruze]]<br />[[w:Chevrolet Tavera|Chevrolet Tavera]]||1995||2017||Past models: [[w:Chevrolet Aveo (T200)|Chevrolet Aveo]], [[w:Chevrolet SRV|Chevrolet SRV]] (sports hatch), [[w:Chevrolet Optra|Chevrolet Optra]], [[w:Chevrolet Enjoy|Chevrolet Enjoy]], [[w:Opel Corsa|Opel Corsa]](sedan), [[w:Opel Corsa|Opel Corsa Sail]] (hatchback), [[w:Opel Corsa|Opel Corsa Swing]](station wagon), [[w:Opel Astra|Opel Astra]]. <br /> The new [[w:General Motors India|GM India]] began as a 50/50 joint venture with [[w:Hindustan Motors|Hindustan Motors]] in 1994.The Halol plant was bought from [[w:Hindustan Motors|Hindustan Motors]] in 1995. GM bought out [[w:Hindustan Motors|Hindustan Motors]] in 1999. Sold to SAIC to produce [[w:MG Motor India|MG Motor India]] vehicles in 2017. |- |&nbsp;||Fisher Body - Hamilton-Fairfield Stamping Plant||[[w:Hamilton, Ohio|Hamilton, Ohio]]||United States||Stampings & Bodies for GM vehicles||1947||1988||Located at 4400 Dixie Highway. Now the Fisher Industrial Park. |- |&nbsp;||Harrison Radiator Division - Moraine||[[w:Moraine|Moraine]], [[w:Ohio|Ohio]]||United States||Machining and assembly of automotive A/C compressors, valves, and accumulator dehydrators||1941||1999||Located at 3600 Dryden Road. Originally built for [[w:Frigidaire|Frigidaire]]. In 1975, automotive and appliance operations were split with the automotive operations becoming Delco Air Conditioning Division. [[w:Frigidaire|Frigidaire]] appliance division was sold in 1979. Delco Air Conditioning Division merged into Harrison Radiator Division in 1981. Spun off with [[w:Delphi Automotive Systems|Delphi Automotive Systems]] in 1999. Became Delphi Harrison Thermal Systems. Closed by Delphi in 2003. Demolished by 2005. |- |H1, H2,<br> H3, H4 [https://www.uniquecarsandparts.com.au/holden_identification]||Holden Acacia Ridge Plant||[[w:Acacia Ridge, Queensland|Acacia Ridge, Queensland]]||[[w:Australia|Australia]]||[[w:Holden|Holden]] models including:<br /> [[w:Holden HD|Holden HD]]<br />[[w:Holden HR|Holden HR]]<br />[[w:Holden HK|Holden HK]]<br />[[w:Holden HT|Holden HT]]<br />[[w:Holden HG|Holden HG]]<br />[[w:Holden Torana|Holden Torana]]<br />[[w:Holden HQ|Holden HQ]]<br />[[w:Holden HJ|Holden HJ]]<br />[[w:Holden HX|Holden HX]]<br />[[w:Holden HZ|Holden HZ]]<br />[[w:Holden Gemini#First generation|Holden Gemini TX, TC, TD, TE, TF, TG]]<br />[[w:Holden Commodore (VC)|Holden Commodore (VC)]]<br />[[w:Holden Camira|Holden Camira]]||1966||1984||[[w:Holden|Holden]] plant. Replaced Fortitude Valley plant. |- |A||Holden Birkenhead Plant||[[w:Birkenhead, South Australia|Birkenhead, South Australia]]||[[w:Australia|Australia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]<br />[[w:GMC (automobile)|GMC]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]]<br />[[w:Holden|Holden]]<br />||1926||1981||[[w:Holden|Holden]] plant. Built by GM Australia before it merged with Holden's Motor Body Builders Ltd. Plant was closed from 1931 until 1938. Also produced military vehicles & equipment during WWII. Before WWII, Birkenhead combined bodies made in Woodville with CKD chassis assembled in Melbourne. After WWII, Birkenhead assembled CKD chassis imported from the US, Canada, & the UK and combined them with bodies made in Woodville. Once Holden brand cars started to be made in 1948, body and chassis components came from Woodville & powertrain came from Fishermans Bend and complete cars were assembled in Birkenhead. Vehicle production ended in 1965 when the Elizabeth plant started making complete vehicles. Birkenhead was then used as an export boxing area, a parts warehouse, and also assembled earthmoving equipment for Terex (then owned by GM) from 1969 until the mid 1970's. |- |M,<br> J1, J2, J3, <br> and J4-J9||Holden Dandenong Plant||[[w:Dandenong|Dandenong]], [[w:Victoria, Australia|Victoria]]||[[w:Australia|Australia]]||[[w:Holden|Holden]] models including:<br /> [[w:Holden FE|Holden FE]]<br />[[w:Holden FC|Holden FC]]<br />[[w:Holden FB|Holden FB]]<br />[[w:Holden EK|Holden EK]]<br />[[w:Holden EJ|Holden EJ]]<br />[[w:Holden EH|Holden EH]]<br />[[w:Holden HD|Holden HD]]<br />[[w:Holden HR|Holden HR]]<br />[[w:Holden HQ|Holden HQ]]<br />[[w:Holden HZ|Holden HZ]]<br />[[w:Holden HK|Holden HK]]<br />[[w:Holden Torana|Holden Torana]] LH, LX, UC<br />[[w:Holden Sunbird|Holden Sunbird]] LX, UC<br />[[w:Holden Commodore (VB)|Holden Commodore (VB)]]<br />[[w:Holden Commodore (VC)|Holden Commodore (VC)]]<br />[[w:Holden Commodore (VH)|Holden Commodore (VH)]]<br />[[w:Holden Commodore (VK)|Holden Commodore (VK)]]<br />[[w:Holden Commodore (VL)|Holden Commodore (VL)]]<br />[[w:Holden Camira|Holden Camira]]<br />[[w:Holden Nova|Holden Nova]] LE, LF <br /> [[w:Toyota Corolla (E90)#Australia|Toyota Corolla (E90)]]<br />Bedford by Isuzu & [[w:Isuzu|Isuzu]] trucks<br />Body making<br />Torque converters & other components||1956|||1996||[[w:Holden|Holden]] plant. Also assembled Chevrolet trucks, Bedford vans & trucks and Frigidaire appliances. Built the 1 millionth Holden (an EJ) in October 1962, the 2 millionth Holden (an HK) in March 1969, and the 4 millionth Holden (a VC Commodore) in June 1981. Vehicle production by Holden ceased in 1988, vehicle production by Toyota for itself and for Holden lasted from 1989-1994 under a plant lease agreement<ref>{{cite web |author=Takahiro Fujimoto |date=October 1998 |url=http://e-server.e.u-tokyo.ac.jp/cirje/research/dp/98/cf23/dp.pdf |title=Toyota Motor Manufacturing Australia in 1995: An Emergent Global Strategy |publisher=[[w:University of Tokyo|University of Tokyo]] |page=23 |archive-url=https://www.webcitation.org/5xJZkwEEX?url=http://e-server.e.u-tokyo.ac.jp/cirje/research/dp/98/cf23/dp.pdf |archive-date=2011-03-20 |url-status=dead }}</ref>. Minor assembly until 1996. Then became known as Holden Service Parts Operations (HSPO) which manages the distribution and marketing of Holden service parts and accessories for the Holden dealer network and international customers. |- |L,<br><br> L1, L2, <br> L3-L5||Holden Elizabeth Plant||[[w:Elizabeth, South Australia|Elizabeth, South Australia]]||[[w:Australia|Australia]]||[[w:Holden Berlina|Holden Berlina]]<br />[[w:Holden Calais|Holden Calais]]<br /> [[w:Holden Caprice|Holden Caprice]]<br /> [[w:Holden Commodore|Holden Commodore]]<br /> [[w:Holden Ute|Holden Ute]]<br /> [[w:Holden Statesman|Holden Statesman]]<br /> [[w:Vauxhall VXR8|Vauxhall VXR8]]<br />[[w:Chevrolet SS (2013)|Chevrolet SS]] (2014-2017)<br />[[w:Chevrolet Caprice PPV|Chevrolet Caprice PPV]] (2011-2017) |1959||2017||[[w:Holden|Holden]] manufacturing plant. Holden Vehicle Manufacturing Operations. Located at 180 Philip Highway. First opened as a body hardware plant making components, then expanded to making complete vehicle bodies in 1962, then expanded to making complete vehicles in 1965. Elizabeth became Holden’s only remaining car manufacturing plant in Australia in 1994. Built the 5 millionth Holden (a VN Calais) in August 1990, the 6 millionth Holden (a VX Commodore SS) in June 2001, and the 7 millionth Holden (a VE Commodore) in August 2008. Total number of vehicles built at all plants in Australia by Holden (including export models) from 1948-2017 is 7,687,675. Production ended October 20, 2017. Final vehicle made at Elizabeth and final Australian-built Holden was a VFII Commodore Redline with a manual transmission.[https://www.carsales.com.au/editorial/details/holdens-manufacturing-closure-by-the-numbers-109466/] Epicurean Food Group bought the site in 2023 and is using it as a farm to grow mushrooms. Cars produced before its final year before closure included the [[w:Pontiac GTO#Fifth generation|Pontiac GTO]] (2004-2006), [[w:Vauxhall Monaro|Vauxhall Monaro]], [[w:Holden Monaro|Holden Monaro]], [[w:Pontiac G8|Pontiac G8]] (2008-2009), [[w:Holden Gemini#Second generation|Holden Gemini (RB)]], [[w:Chevrolet Cruze#First generation (J300; 2008)|Holden Cruze (JH)]], [[w:Holden Torana|Holden Torana]], [[w:Opel Vectra#Vectra B (1995–2002)|Holden Vectra (JS)]], [[w:Statesman (automobile)|Statesman brand WB]], [[w:Holden WB|Holden WB]] Ute & One-Tonner, [[w:Holden Adventra|Holden Adventra]], [[w:Holden Crewman|Holden Crewman]], [[w:Chevrolet Lumina#Holden-based models|Chevrolet Lumina]], [[w:Chevrolet Caprice#Fifth generation (1999–2006)|Chevrolet Caprice]], [[w:Chevrolet Cruze#First generation (J300; 2008)|Chevrolet Cruze]] 5-door, [[w:Chevrolet Omega|Chevrolet Omega]] B & C, [[w:Buick Royaum|Buick Royaum]], [[w:Daewoo Statesman|Daewoo Statesman]], and [[w:Daewoo Veritas|Daewoo Veritas]]. Also, [[w:United Australian Automobile Industries#Toyota Lexcen|Toyota Lexcen]]. |- |&nbsp;||Holden Fishermans Bend Plant (Port Melbourne)||[[w:Port Melbourne|Port Melbourne]], [[w:Victoria, Australia|Victoria]]||[[w:Australia|Australia]]||[[w:GM High Feature engine|Holden Alloytec V6 engine]]<br />[[w:Buick V6 engine#3800 V6|Buick V6]]<br />[[w:GM Family II engine|GM Family II I4 engine]]<br />[[w:Holden V8 engine]]<br />[[w:Holden straight-six motor#Starfire|Holden Starfire I4]]<br />[[w:Holden straight-six motor|Holden straight-six motor]]<br />Manual transmissions<br />[[w:Holden Salisbury differential|Holden Banjo/Salisbury differentials]]<br />Axles<br />Stampings<br />Components<br />Foundry ||1936||2016||Headquarters of GM Holden Ltd. <br /> Holden's Engine Company/Holden Engine Operations.<br /> Used to build vehicles as well including the [[w:Holden 48-215|Holden 48-215]] & [[w:Holden FJ|Holden FJ]]. Vehicle assembly ended in 1956 and was moved to Dandenong. <br /> Versions of the Alloytec/High Feature V6 were also supplied to [[w:Saab Automobile|Saab]] & [[w:Alfa Romeo|Alfa Romeo]] from this plant. <br /> Sold to the Victorian state Government in 2016. |- |B||Holden Fortitude Valley Plant||[[w:Fortitude Valley|Fortitude Valley]], [[w:Queensland|Queensland]]||[[w:Australia|Australia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]<br />[[w:GMC (automobile)|GMC]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]]<br />[[w:Holden 48-215|Holden 48-215]]<br />[[w:Holden FJ|Holden FJ]]<br />[[w:Holden FE|Holden FE]]<br />[[w:Holden FC|Holden FC]]<br />[[w:Holden FB|Holden FB]]<br />[[w:Holden EK|Holden EK]]<br />[[w:Holden EJ|Holden EJ]]<br />[[w:Holden EH|Holden EH]]<br />||1927||1965||[[w:Holden|Holden]] plant. Built by GM Australia before it merged with Holden's Motor Body Builders Ltd. Plant was closed from 1931 until 1934. Fortitude Valley combined bodies made in Woodville with CKD chassis assembled in Melbourne. Replaced by Acacia Ridge plant. |- |&nbsp;||Holden Marrickville Plant||[[w:Marrickville, New South Wales|Marrickville, New South Wales]]||[[w:Australia|Australia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Marquette (automobile)#Buick brand|Marquette]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]<br />[[w:GMC (automobile)|GMC]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]]||1926||1940||[[w:Holden|Holden]] plant. Built by GM Australia before it merged with Holden's Motor Body Builders Ltd. Plant was closed from 1931 until 1934. Marrickville combined bodies made in Woodville with CKD chassis assembled in Melbourne. Building sold. Replaced by Pagewood plant. |- |&nbsp;||Holden Melbourne Plant (City Road)||[[w:Melbourne|Melbourne]], [[w:Victoria, Australia|Victoria]]||[[w:Australia|Australia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]<br />[[w:GMC (automobile)|GMC]]<br />[[w:Vauxhall Motors|Vauxhall]]||1926||1936||[[w:Holden|Holden]] plant. Acquired by GM Australia before it merged with Holden's Motor Body Builders Ltd. Melbourne combined bodies made in Woodville with CKD chassis assembled in Melbourne. Building sold. Replaced by Fishermans Bend plant. |- |P,<br> L6||Holden Mosman Park Plant||[[w:Mosman Park, Western Australia|Mosman Park (formerly Cottesloe Beach)]], [[w:Western Australia|Western Australia]]||[[w:Australia|Australia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]<br />[[w:GMC (automobile)|GMC]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]]<br />[[w:Holden|Holden]]<br />||1926||1972||[[w:Holden|Holden]] plant. Built by GM Australia before it merged with Holden's Motor Body Builders Ltd. Plant was closed from 1932 until 1935. Also produced military vehicles & equipment during WWII. Before WWII, Mosman Park combined bodies made in Woodville with CKD chassis assembled in Melbourne. After WWII, Mosman Park assembled CKD chassis imported from the US, Canada, & the UK and combined them with bodies made in Woodville. Once Holden brand cars started to be made in 1948, body and chassis components came from Woodville & powertrain came from Fishermans Bend and final assembly was done in Mosman Park. Plant was closed down in 1972. Demolished in the early 1990s. |- |S,<br> H5, H6, H7,<br> H8, H9||Holden Pagewood Plant||[[w:Pagewood, New South Wales|Pagewood, New South Wales]]||[[w:Australia|Australia]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]]<br />[[w:Holden 48-215|Holden 48-215]]<br />[[w:Holden FJ|Holden FJ]]<br />[[w:Holden FE|Holden FE]]<br />[[w:Holden FC|Holden FC]]<br />[[w:Holden FB|Holden FB]]<br />[[w:Holden EK|Holden EK]]<br />[[w:Holden EJ|Holden EJ]]<br />[[w:Holden EH|Holden EH]]<br />[[w:Holden HD|Holden HD]]<br />[[w:Holden HR|Holden HR]]<br />[[w:Holden HK|Holden HK]]<br />[[w:Holden HT|Holden HT]]<br />[[w:Holden HG|Holden HG]]<br />[[w:Holden Monaro|Holden Monaro]]<br />[[w:Holden HQ|Holden HQ]]<br />[[w:Holden HJ|Holden HJ]]<br />[[w:Holden HX|Holden HX]]<br />[[w:Holden HZ|Holden HZ]]<br />[[w:Holden Torana|Holden Torana]]<br /> [[w:Holden Commodore (VB)|Holden Commodore (VB)]]<br />[[w:Statesman (automobile)|Statesman brand HQ-HZ]]<br />Body making||1940||1980||[[w:Holden|Holden]] plant. Also produced military equipment during WWII. Before WWII, Pagewood combined bodies made in Woodville with CKD chassis assembled in Melbourne. After WWII, Pagewood assembled CKD chassis imported from the US, Canada, & the UK and combined them with bodies made in Woodville. Also made Frigidaire appliances. Built the 3 millionth Holden (an HQ) in June 1974. Vehicle production ended in 1980 while plant closedown operations extended into 1981. |- |&nbsp;||[[w:Holden Woodville Plant|Holden Woodville Plant]]||[[w:Woodville, South Australia|Woodville, South Australia]]||[[w:Australia|Australia]]||[[w:Holden|Holden]]:<br />Stamping<br />Body making<br />Paint shop<br />Body Hardware<br />Trim<br />Tool & Die<br />[[w:Tri-Matic|Tri-Matic]] automatic transmission||1923||1965||[[w:Holden|Holden]] plant. Built before Holden was taken over by GM. Built car bodies for many brands of cars including GM brands (Chevrolet, Pontiac, Oakland, Oldsmobile, Marquette, Buick, LaSalle, Cadillac, GMC, Vauxhall, & Bedford) and non-GM brands (Chrysler, DeSoto, Dodge, Plymouth, Willys, Hudson, Nash, Studebaker, Austin, Morris, Rover, Standard, Fiat, & others). (Holden Motor Body Works.) Also produced military equipment during WWII. Once Holden brand cars started to be made in 1948, body and chassis components were made in Woodville. Also produced replacement parts for discontinued models. Most operations transferred to Elizabeth between 1959 & 1965. Built the Tri-Matic automatic transmission from 1969-1987. Plant sold in 1984. Tri-Matic production area was leased back until production ended. Other companies continued production of spare parts. |- |V||[[w:IBC Vehicles|IBC Vehicles Ltd.]]/<br>[[w:GMM Luton|GMM Luton]]<ref>{{cite web |title=Company Profile |publisher=Vauxhall |url=http://media.gm.com/gb/vauxhall/en/company/c_company-profile/index.html |access-date=2009-06-29 |archive-url=https://archive.today/20090629105853/http://media.gm.com/gb/vauxhall/en/company/c_company-profile/index.html |archive-date=2009-06-29}}</ref>||[[w:Luton|Luton]], [[w:Bedfordshire|Bedfordshire]]||[[w:United Kingdom|United Kingdom]]||[[w:Bedford CF#CF2|Bedford CF2]]<br />[[w:Isuzu Fargo#Bedford Midi / Vauxhall Midi|Bedford/Vauxhall/GME/Isuzu Midi/<br>Bedford Seta/Vauxhall Albany]]<br />[[w:Suzuki Carry#Bedford Rascal|Bedford/Vauxhall/GME Rascal]]<br />[[w:Suzuki Carry#Export models|Suzuki Super Carry]]<br />[[w:Isuzu MU#First generation (UCS55/UCS69GW; 1989–1998)|Opel/Vauxhall Frontera A]]<br />[[w:Isuzu MU#Second generation (UER25FW, UES25FW, UES73FW; 1998–2004)|Opel/Vauxhall Frontera B]]<br />[[w:Holden Frontera#First generation (UCS55/UCS69GW; 1989–1998)|Holden Frontera (UT)]]<br />[[w:Renault Trafic#Second generation (X83; 2001)|Opel/Vauxhall Vivaro]] A (low roof versions only)<br />[[w:Renault Trafic#Third generation (X82; 2014)|Opel/Vauxhall Vivaro]] B (low roof versions only)<br />[[w:Renault Trafic#Second generation (X83; 2001)|Renault Trafic (X83)]] (low roof versions only)<br />[[w:Renault Trafic#Second generation (X83; 2001)|Nissan Primastar (X83)]] (low roof versions only)||1950 (as AA Block of Luton plant)<br><br>1984 (as Bedford Luton Van Plant)||2017|| [[w:Vauxhall Motors|Vauxhall plant]]. Began as the Bedford van plant when Bedford vans were moved out of the Luton passenger car plant and into a separate, nearby plant (AA Block [body assembly and paint] &<br> K Block [trim and final assembly] of the Luton complex) connected by a bridge so that components for the CF van made in the car plant could be easily transferred to the van plant. Was part of the Bedford Commercial Vehicles Division of the GM Overseas Commercial Vehicles Corp. CF2 production ended in July 1987. Built the Isuzu-designed Midi from December 20, 1984 through May 23, 1996 though the Midi was still available through the 1997 model year. An upscale, 7-psgr. variant of the Midi called the Vauxhall Albany was built for 1991 only. Built the Suzuki-designed Rascal from February 1986 through July 3, 1993. Also built the Rascal's Suzuki counterpart, the Super Carry, for the UK & other European markets. Became a joint venture with [[w:Isuzu|Isuzu]] called IBC Vehicles Ltd., which was incorporated on January 20, 1987. Production under IBC Vehicles began in October 1987 after the plant was reorganized and staff was retrained. GM owned 60% & Isuzu held 40%. The Bedford brand was discontinued and replaced by the Vauxhall brand on light commercial vehicles as of June 1, 1990. GM bought Isuzu's stake in IBC Vehicles back in 1998 & the operation was again a subsidiary of GM. It was then renamed GMM (GM Manufacturing) Luton. Sold to [[w:PSA Group|PSA Group]] in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. Production ended March 28, 2025. Last vehicle produced was a Vauxhall Vivaro. Site has been sold for redevelopment into an industrial park. |- |&nbsp;||[[w:IDA-Opel|IDA-Opel]]||[[w:Kikinda|Kikinda]], [[w:Socialist Republic of Serbia|Socialist Republic of Serbia]]||[[w:Yugoslavia|Yugoslavia]]||[[w:Opel Ascona#Ascona C (1981–1988)|Opel Ascona]] C<br />[[w:Opel Corsa#Corsa A (S83; 1982)|Opel Corsa]] A<br />[[w:Opel Kadett|Opel Kadett]] D & E<br />[[w:Opel Kikinda#Senator A (1978–1986)|Opel Kikinda]] (Senator A)<br />[[w:Opel Omega#Omega A (1986–1994)|Opel Omega]] A<br />[[w:Opel Rekord Series E|Opel Rekord]] E<br />[[w:Opel Vectra#Vectra A (1988–1995)|Opel Vectra]] A<br />Iron castings, brake, and axle components||1977||1992|| [[w:Adam Opel AG|Opel affiliate]]. A joint venture owned 49% by GM & 51% by Kikinda Iron Foundry. IDA = Industrija Delova Automobila or Industry of Automobile Parts. The operation exported iron castings, brake, and axle components to GM/Opel, thus allowing partially built Opels to be imported into Yugoslavia and not be counted as imports. Ended by the wars of the breakup of Yugoslavia and imposition of sanctions on Yugoslavia in 1992. The plant was later restructured as the Livnica Kikinda metal foundry, which was taken over by Slovenia's Cimos in 2004 and manufactures auto parts for various European manufacturers including Opel. |- |&nbsp;||Indianapolis Metal Center||[[w:Indianapolis|Indianapolis]], [[w:Indiana|Indiana]]||United States||Metal stampings for trucks||1930||2011||Located at 340 S. White River Parkway W. Drive. Stamping plant. Acquired from the former Martin-Parry Corporation in 1930. Became a Chevrolet plant making truck bodies. Became part of GM Truck & Bus Group in 1982 and in early 1992, became part of NATP (North American Truck Platforms) and later transferred to CLCD (Cadillac/Luxury Car Division) before joining the Metal Fabrication Division in 1994. Closed in June 2011. Demolished in 2014-2015. |- |&nbsp;||Inland Fisher Guide Plant (Columbus, Ohio)||[[w:Columbus, Ohio|Columbus, Ohio]]||United States||Door Panel Assemblies & Small Components||1946||1999||Located at 200 Georgesville Road. Originally opened as a plant for the Ternstedt Division of General Motors. Then, Fisher Hardware Fabrication when Ternstedt merged back into Fisher Body in 1969. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. In 1995, Inland Fisher Guide became the Delphi Interior and Lighting Systems division of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary. Spun off with [[w:Delphi Automotive Systems|Delphi Automotive Systems]] in 1999. Closed by Delphi in 2007. |- |&nbsp;||Inland Fisher Guide Dayton Plant||[[w:Dayton, Ohio|Dayton]], [[w:Ohio|Ohio]]||United States||Engine Mounts<br />Transmission Mounts<br />Strut Mounts<br />Steering Wheels<br />Liteflex Springs<br />Brake Linings<br />Brake Hose<br />Brake Pads<br />Ball Joints<br />Ice Cube Trays ||1921||1999||Located at 2701 Home Avenue (originally Home Road). The first factory building was built in 1910 by the Wright Company and made airplanes and components. The 2nd factory building was built in 1911 & made airplane engines. Aircraft production ceased in 1916. 13 different types of planes had been produced. In Feb. 1917, the plants were sold to the Darling Motor Co. but they went bankrupt shortly thereafter. The Dayton-Wright Company bought the site from Darling Motor on March 22, 1917 and made aircraft parts at the site for its Moraine assembly plant from 1918 to 1919. Dayton-Wright Company was bought by GM in 1919 & it was initially run as a GM subsidiary. In 1923, the aircraft part of the business was sold to Consolidated Aircraft Co. & this site switched from aviation production to automotive production. Inland Manufacturing Division (originally Inland Mfg. Company) of GM was formed on January 6, 1923 at this site, initially to make steering wheels. Merged with Fisher Guide to became Inland Fisher Guide in 1989. In 1995, Inland Fisher Guide became the Delphi Interior and Lighting Systems division of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary. Spun off with [[w:Delphi Automotive Systems|Delphi Automotive Systems]] in 1999. Delphi closed it in 2008. The 2 original Wright Brothers' buildings were left standing and became part of Dayton Aviation Heritage National Historical Park in 2009 but the rest was demolished around 2014. The Wright Brothers factory buildings were damaged by fire in March 2023. |- |&nbsp;||Inland Fisher Guide Plant (Detroit - Fort St.)||[[w:Detroit, Michigan|Detroit, Michigan]]||United States||Door hinges and interior parts||1920||1989||Located at 6307 W. Fort St. & Livernois St. Was Ternstedt's headquarters until 1962. Originally opened by Ternstedt Manufacturing Co., which was taken over by Fisher Body Co. in 1920. Became part of GM when GM took over Fisher Body in 1926. Ternstedt became a separate division of GM in 1948 before merging back in to Fisher Body in 1969. Was a plant for the Ternstedt Division (Plant# 16) of General Motors. Then, Fisher Hardware Fabrication. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. Is now Evans Distribution Systems. |- |&nbsp;||Inland Fisher Guide Plant (Elyria, Ohio)||[[w:Elyria, Ohio|Elyria, Ohio]]||United States||Car seats||1947||1990||Located at 1400 Lowell St. Originally opened as a plant for the Ternstedt Division of General Motors. Then, Fisher Hardware Fabrication when Ternstedt merged back into Fisher Body in 1969. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. |- |&nbsp;||Inland Fisher Guide Plant (Euclid, Ohio)||[[w:Euclid, Ohio|Euclid, Ohio]]||United States||Vehicle Bodies until 1970<br />Then, trim fabrication, seat covers & backs, upholstery, door panels, sunvisors, & other interior parts.<br />Also made seats & cushions for Sea Ray Boats||1947||1993||Located at 20001 Euclid Ave. Originally built in 1943. Bought by GM in 1947 from Cleveland Pneumatic Aerol Co., which made rocket shells and aircraft landing gear there during WWII. Was a Fisher Body plant making bodies for Chevrolet, Pontiac, Oldsmobile, & Buick until 1970. Then became a Fisher Trim Fabrication plant. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. Closed in 1993. Site currently in use by an industrial supply store (HGR) and indoor sports facilities (The Sports Plant). |- |&nbsp;||[[w:Automotive industry in Flint, Michigan#Coldwater Road Plant|Inland Fisher Guide Plant (Flint - Coldwater Road)]]||[[w:Genesee Township, Michigan|Genesee Township, Michigan]]||United States||Window regulators, door hinges, door modules and seat adjusters||1953||1996||Located at 1245 East Coldwater Road. Originally opened as a plant for the Ternstedt Division of General Motors. Then, Fisher Hardware Fabrication when Ternstedt merged back into Fisher Body in 1969. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. In 1995, Inland Fisher Guide became the Delphi Interior and Lighting Systems division of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary. Sold to Peregrine Inc. in 1996, which continued making window regulators and door hinges and modules. Closed by Peregrine in 1998. A GM subsidiary called REALM bought the property in 1999 and GM used the administration building until 2000. Demolished by 2001. Site now used by Deployment Strategies Group LLC for container storage. |- |&nbsp;||Inland Fisher Guide Plant (Grand Rapids, Michigan)||[[w:Walker, Michigan|Walker, Michigan]]||United States||Interior trim||1942||1998||Located at 2150 Alpine Avenue NW. Built by Haskelite Manufacturing Corporation to make wooden gliders for use in WWII. Bought by GM in the early 1950's. Built fuselages for [[w:F-84F Thunderstreak|F-84F Thunderstreak]] fighter jets. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. In 1995, Inland Fisher Guide became the Delphi Interior and Lighting Systems division of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary. Became part of Delphi in 1995. Sold by GM to [[w:Lear Corp.|Lear Corp.]] in 1998. Closed by Lear in 2005. Now called Avastar Park, a multi-tenant industrial site. |- |&nbsp;||Inland Fisher Guide Plant (Livonia, Michigan)||[[w:Livonia, Michigan|Livonia, Michigan]]||United States||Seat Cushions, Seat Pads, Seat Backs, Door Panel Trim||1954||1995||Built on the site of the former Detroit Transmission Division plant that burned down in 1953. Located at 28400 Plymouth Road. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. In 1995, Inland Fisher Guide became the Delphi Interior and Lighting Systems division of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary. Closed in 1995. Sold to Peregrine Inc. in 1996, which continued making interior trim parts. Peregrine then closed the plant in 1998. Now the Plymouth Road Technical Center, a multi-tenant site for industrial, warehousing, and logistics purposes. |- |&nbsp;||Inland Fisher Guide Plant (Syracuse)||[[w:Salina, New York|Salina, New York]]||United States||Metal auto parts (die casting, stamping, machining, painting, plating), Plastic trim parts - exterior and interior (injection molding)||1952||1993||Located at One General Motors Drive (address sometimes listed as 1000 Town Line Road). Plastic operations were added in the early 1960's. Metal operations were subsequently reduced and ultimately replaced by the plastic operations by the early 1970's. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. Closed December 1993. Property is now Salina Industrial Powerpark, a multi-tenant industrial park. |- |&nbsp;||Inland Fisher Guide Plant (Tecumseh, Michigan)||[[w:Tecumseh, Michigan|Tecumseh, Michigan]]||United States||Seat Pads & Backs||1966||1988||Located at 5550 Occidental Highway. Fisher became Fisher Guide in 1984. Now occupied by Uniloy Inc., a plastics company. |- |&nbsp;||[[w:Inland Fisher Guide Plant (New Jersey)|Inland Fisher Guide Plant (Trenton)]]||[[w:West Trenton, New Jersey|West Trenton]], [[w:Ewing Township, New Jersey|Ewing Township]], [[w:New Jersey|New Jersey]]||United States||Door handles<br />Hinges<br />Door locks<br />Seat adjusters<br />Exterior body moldings and painted components||1938||1998||Located at 1445 Parkway Ave. Built 7,546 [[w:TBM Avenger|TBM Avenger]] torpedo bombers during WWII under license from Grumman as part of GM's Eastern Aircraft Division. In 1961, the facility became the first commercial user in the United States to use a programmable industrial robot to replace human workers. Brief article about the plant's closing and displaced workers. 1993 Plant closing date was later delayed until Summer of 1998 : [https://query.nytimes.com/gst/fullpage.html?res=9E0CEEDB1E3EF937A35751C1A964958260] Originally part of the [[w:Flint, Michigan auto industry#Ternstedt Division|Ternstedt Division]] of Fisher Body, then the Ternstedt Division of GM in 1948 before Ternstedt merged back in to Fisher Body in 1969. Then, Fisher Hardware Fabrication. Fisher became Fisher Guide in 1984 and Inland Fisher Guide in 1989. In 1995, Inland Fisher Guide became the Delphi Interior and Lighting Systems division of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary. Closed in 1998. Plant was subsequently demolished. Site redeveloped into Ewing Town Center, a mixed retail and residential complex. |- |&nbsp;||Inland Fisher Guide Plant (Vandalia, Ohio)||[[w:Vandalia, Ohio|Vandalia, Ohio]]||United States||Door Panel Assemblies<br />Seat Pads<br />Instrument Panels||1941||1999||Located at 250 Northwoods Boulevard. Originally a GM Aeroproducts division facility making aircraft propellers, Aeroproducts division became part of GM's Allison division in 1952, site was absorbed by GM's Inland division in 1961 after propeller production moved to Allison's Indianapolis operation in 1960, merged into Inland Fisher Guide division in 1991, became part of GM's [[w:Delphi Automotive Systems|Delphi Automotive Systems]] subsidiary in 1995 and transferred to Delphi Chassis Division. Spun off with Delphi in 1999. Transferred to Delphi Thermal Division in 2007. Sold in 2015 to [[w:Mahle GmbH|Mahle GmbH]]. Mahle transferred operations to its Behr plant in Dayton and closed the Vandalia plant by 2016. Mahle sold the property in 2017. |- |&nbsp;||General Motors International A/S||[[w:Copenhagen|Copenhagen]]||[[w:Denmark|Denmark]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Opel|Opel]]<br />[[w:Vauxhall Motors|Vauxhall]]||1924||1974||GM's 1st European assembly plant & 1st assembly plant outside North America. First vehicle off the line was a Chevrolet utility truck on January 7, 1924. Pontiac assembly began July 24, 1926. Oakland, Oldsmobile, & Buick assembly began in 1929. In the 1960's, the Chevy Chevelle & Buick Skylark were assembled along with most Opel & Vauxhall models. Station wagon-based vans were assembled as was the Opel 1500, based on the 1200. Production ended in Oct. 1974. Over 550,000 units had been produced. |- |&nbsp;||[[w:General Motors do Brasil|Ipiranga]]||[[w:Ipiranga (district of São Paulo)|Ipiranga]], [[w:São Paulo (state)|São Paulo (state)]]||[[w:Brazil|Brazil]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Cadillac|Cadillac]]||1925||1930||GM's 1st Brazilian assembly plant. Replaced by Sao Caetano do Sul plant. |- |&nbsp;||[[w:Pars Khodro|General Motors Iran]]||[[w:Tehran|Tehran]]||[[w:Imperial State of Iran|Imperial State of Iran]]||[[w:Opel Commodore#Foreign assembly|Chevrolet Iran 2500/2800/Royale]]<br />[[w:Chevrolet Nova#Fourth generation (1975–1979)|Chevrolet Iran (Nova)]]<br />[[w:Buick Skylark#Buick Skylarks in Iran|Buick Iran (Skylark)]]<br />[[w:Cadillac Seville#First generation (1976–1979)|Cadillac Iran (Seville)]]<br />[[w:Chevrolet C/K (third generation)|Chevrolet C/K pickup]] ||1974||1987||When the Shah ruled Iran, GM established a joint venture in Iran called GM Iran. GM held 45% while Pars Khodro held the other 55%. Production began on January 15, 1974 of the Opel Commodore-based Chevrolet Iran 2500/2800/Royale. By 1977, this was replaced by the American Chevrolet Nova, Buick Skylark, & Cadillac Seville. Chevy pickups followed. Once the Shah was overthrown in the 1979 Revolution and Iran was taken over by fanatics, GM abandoned the factory & Iran. The company became Pars Khodro and the local management changed. Production of GM models continued sporadically until 1987 when it finally ended. |- |J (1953-2009)<br /><br />21 (1928-1952 [[w:Chevrolet|Chevrolet]])||[[w:Janesville Assembly Plant|Janesville Assembly Plant]]||[[w:Janesville, Wisconsin|Janesville, Wisconsin]]||United States||[[w:Chevrolet K5 Blazer|Chevrolet K5 Blazer]] (1992-1994)<br /> [[w:Chevrolet Tahoe|Chevrolet Tahoe]] (1995-2009) <br />[[w:Chevrolet Suburban|Chevrolet Suburban]] (1947-1966, 1992-2009)<br /> [[w:Chevrolet Tiltmaster|Chevrolet Tiltmaster/W-Series (Gas-powered)]] (1994-2009)<br /> [[w:GMC Forward|GMC Forward/W-Series (Gas-powered)]] (1994-2009)<br /> [[w:Isuzu N-Series|Isuzu N-Series (Gas-powered)]] (1994-2009)<br />[[w:Chevrolet Tahoe|GMC Yukon]] (1992-2009)<br /> [[w:Chevrolet Tahoe#Second generation (2000)|GMC Yukon Denali (GMT800)]] (2001-2006)<br /> [[w:Chevrolet Tahoe#Third generation (2007)|GMC Yukon Denali (GMT900)]] (2007-2009) <br />[[w:GMC Suburban|GMC Suburban]] (1992-1999)<br />[[w:GMC Yukon XL|GMC Yukon XL]] (2000-2009) <br /> [[w:Chevrolet Suburban#Ninth generation (2000)|GMC Yukon XL Denali (GMT800)]] (2001-2006) <br /> [[w:Chevrolet Suburban#Tenth generation (2007)|GMC Yukon XL Denali (GMT900)]] (2007-2009)||1919||2009||Located at 1000 General Motors Dr. Was the oldest active GM assembly plant at time of its closure in 2009; largest under one roof in the U.S. Originally built [[w:Samson Tractor|Samson tractors]] from 1919-1922. Also made [[w:Samson Tractor#Trucks and a car|Samson trucks]] from 1920-1922. On October 1, 1922, the Janesville plant was transferred to Chevrolet. Started producing Chevrolets on Feb. 14, 1923. Shortly thereafter, a neighboring Fisher Body plant was added. Plant closed from September 1932 - late 1933. During World War II, both the Chevy & Fisher Body sides of the plant were controlled by Oldsmobile and made artillery shells. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Janesville Assembly joined the GM Assembly Division in 1968. On April 21, 1967, the 100 millionth GM vehicle built in the US, a blue, two-door Chevrolet Caprice, was produced at the Janesville plant. Full-size cars ended production in 1982 and were replaced by the compact J-cars like the Cavalier. Last passenger car built was the 1991 Chevy Cavalier. Only SUVs and trucks were subsequently built. SUV production ended Dec. 23, 2008. Last vehicle produced was a black 2009 Chevy Tahoe. Medium-duty truck production ended on April 23, 2009, marking the end of vehicle production at Janesville. Officially, the plant was placed on "standby" status but production never restarted and the 2015 GM-UAW contract allowed Janesville to be closed permanently. Demolished from 2018-2019.<br /> Past models: [[w:Chevrolet Superior|Chevrolet Superior]], [[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]], [[w:Chevrolet Series AB National|Chevrolet Series AB National]], [[w:Chevrolet Series AC International|Chevrolet Series AC International]], [[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]], [[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]], [[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]], [[w:Chevrolet Standard Six|Chevrolet Standard Six]], [[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]], [[w:Chevrolet Master|Chevrolet Master]], [[w:Chevrolet Deluxe|Chevrolet Deluxe]], [[w:Chevrolet Stylemaster|Chevrolet Stylemaster]], [[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]], [[w:Chevrolet 150|Chevrolet 150]] (1953-1957), [[w:Chevrolet 210|Chevrolet 210]] (1953-1957), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1970), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1972), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1982), [[w:Chevrolet Cavalier|Chevrolet Cavalier]] (1982-1991), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet El Camino#First generation (1959–1960)|Chevrolet El Camino]] (1959-1960), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1982), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Buick Skyhawk#Second generation (1982–1989)|Buick Skyhawk]] (1988-1989), [[w:Cadillac Cimarron|Cadillac Cimarron]] (1982-1988), [[w:Chevrolet AK Series|Chevrolet AK Series]], [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:Chevrolet C/K|Chevrolet C/K]] (1960-1986), [[w:Chevrolet C/K (third generation)#R/V-Series (1987–1991)|Chevrolet R/V]] (1987-1989), [[w:Chevrolet C/K (fourth generation)|Chevrolet C/K crew cab (GMT400)]] (1992-1994), [[w:Chevrolet C/K (fourth generation)#C3500HD (1991–2002)|Chevrolet C3500HD]] (1991-1998), [[w:Chevrolet Kodiak#Second generation (1990–2002)|Chevrolet Kodiak (GMT530)]] (1990-2002), [[w:Chevrolet/GMC B series#Third generation (1993–2003)|Chevrolet B-series]] (1993-02), [[w:Isuzu Forward|Chevrolet T-Series]] (1997-2002), [[w:Chevrolet C/K (second generation)|GMC C/K (Action Line)]] (1967-1972), [[w:Chevrolet C/K (third generation)|GMC C/K (Rounded Line)]] (1973-1986), [[w:Chevrolet C/K (third generation)#R/V-Series (1987–1991)|GMC R/V]] (1987-1989), [[w:Chevrolet C/K (fourth generation)|GMC Sierra crew cab (GMT400)]] (1992-1994), [[w:Chevrolet C/K (fourth generation)#C3500HD (1991–2002)|GMC Sierra C3500HD]] (1991-1998), [[w:Chevrolet Kodiak#Second generation (1990–2002)|GMC TopKick (GMT530)]] (1990-02), [[w:Chevrolet/GMC B series#Third generation (1993–2003)|GMC B-series]] (1993-2002), [[w:GMC T-Series|GMC T-Series]] (1997-2002), [[w:Isuzu F-Series|Isuzu F-Series]] (1997-2002) |- |&nbsp;||Kalamazoo Metal Center||[[w:Kalamazoo, Michigan|Kalamazoo, Michigan]]||United States||Stamped Body panels ||1965||1999|| Located at 5200 East Cork Street. Metal stamping plant. Started out as a Fisher Body plant. Now Midlink Business Park. |- |K||[[w:GM Korea|GM Korea]]||[[w:Gunsan|Kunsan]], [[w:Jeolla Province|Jeolla]]||[[w:South Korea|South Korea]]||[[w:Chevrolet Cruze|Chevrolet Cruze]]<br />[[w:Holden Cruze#Australia|Holden Cruze (JG sedan/JH wagon)]]<br />[[w:Holden Astra#Seventh generation (BK, BL; 2016)|Holden Astra Sedan (BL)]] (4-door)<br />[[w:Chevrolet Orlando|Chevrolet Orlando]]<br />[[w:GM Family Z engine|Family Z diesel engine]]||1997||2018||Past models: [[w:Daewoo Lacetti|Daewoo Lacetti]], [[w:Daewoo Nubira|Daewoo Nubira]], [[w:Daewoo Tacuma|Daewoo Tacuma]], [[w:Chevrolet Optra|Chevrolet Optra]], [[w:Chevrolet Vivant|Chevrolet Vivant]], [[w:Holden Viva|Holden Viva (JF)]], [[w:Suzuki Forenza|Suzuki Forenza]], [[w:Suzuki Reno|Suzuki Reno]] This factory also produced Chevrolet vehicles for [[w:General Motors Europe|General Motors Europe]] and [[w:Chevrolet Europe|Chevrolet Europe]]. The factory permanently closed on May 31, 2018, due to low productivity caused by GM's withdrawal from Europe in 2017 and due to GM's restructuring of its GM Korea operations. Sold to Myoung Shin Co., Ltd. in 2018. Diesel engines were produced at an adjacent facility beginning in 2006. |- |A<br />(1953-1964 [[w:Chevrolet|Chevrolet]] and 1965-1990)<br /><br />8 <br />(1929-1952 [[w:Chevrolet|Chevrolet]])||[[w:Lakewood Assembly|Lakewood Assembly]]||[[w:Lakewood Heights, Atlanta|Lakewood Heights, Georgia]]||United States ||[[w:Chevrolet Caprice|Chevrolet Caprice]] (1966, 1987-1990)<br />[[w:Pontiac Safari|Pontiac Safari wagon]] (1987-1989)<br />[[w:Buick Estate#1977–1990|Buick LeSabre Estate wagon]] (1987-1989)<br /> [[w:Buick Estate#1977–1990|Buick Electra Estate wagon]] (1987-1989)<br />[[w:Buick Estate#1977–1990|Buick Estate wagon]] (1990)||1928||1990||Located at McDonough Boulevard and Sawtell Avenue. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Lakewood Assembly joined the GM Assembly Division in 1968. Idled from September 1982 to early 1984. Production ended with Chevrolet Caprice Classic & Buick Estate Wagon. Last vehicle produced was a gray Chevy Caprice on <br> August 6, 1990.<br /> Past models:<br /> [[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br /> [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1966), [[w:Chevrolet 150|Chevrolet 150]] (1953-1957), [[w:Chevrolet 210|Chevrolet 210]] (1953-1957), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1966), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet El Camino#First generation (1959–1960)|Chevrolet El Camino]] (1959-1960), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1966), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Chevrolet Suburban|Chevrolet Suburban]] (1957, 1965-1966). Also built the <br> [[w:Chevrolet Chevette|Chevrolet Chevette]] (1981-1982, 1984-1987) & [[w:Pontiac 1000|Pontiac 1000]] (1981-1982, 1984-1987),<br> [[w:Pontiac Acadian|Pontiac Acadian]] (Canada only).<br> GM G-body: [[w:Pontiac Grand Prix#Third generation (1969–1972)|Pontiac Grand Prix]] (1970-1972). GM A-body: [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1964-1970), [[w:Chevrolet El Camino#Second generation (1964–1967)|Chevrolet El Camino]] (1965), [[w:Pontiac Grand Prix|Pontiac Grand Prix]] (1973-1979), [[w:Pontiac GTO|Pontiac GTO]] (1969, 1971-1973), [[w:Pontiac LeMans|Pontiac LeMans]] (1971-1977).<br> [[w:Chevrolet AK Series|Chevrolet AK Series]], [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1948-1955), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:Chevrolet C/K|Chevrolet C/K]] (1960-80), [[w:Chevrolet C/K (second generation)|GMC C/K (Action Line)]] (1967-1972),<br> [[w:Chevrolet C/K (third generation)|GMC C/K (Rounded Line)]] (1973-1980). |- |&nbsp;||[[w:Lansing Car Assembly|Lansing Car Assembly - Body]]||[[w:Lansing, Michigan|Lansing, Michigan]]||United States||Automotive bodies||1920||2005||Located at 401 N. Verlinden St. Opened as a [[w:Durant Motors|Durant Motors]] plant in 1920. Durant Motors went out of business in 1931 and the plant was vacant until GM bought it in 1935. Known as GM's Lansing Plant 6. The plant reopened as a Fisher Body plant replacing the Fisher Body operation within the main Oldsmobile plant (Lansing Plant 1) that operated out of space leased from Oldsmobile since 1923. It supplied bodies to the main Oldsmobile plant (Lansing Plant 1 or Lansing Car Assembly - Chassis). Together with the chassis plant, they made up Lansing Car Assembly. Demolished in 2008-2009. |- |M (1949-1984 [All], 1985-2005 [North Line])||[[w:Lansing Car Assembly|Lansing Car Assembly - Chassis (North)]]||[[w:Lansing, Michigan|Lansing, Michigan]]||United States||,<br> [[w:Chevrolet Cavalier#Third generation (1995)|Chevrolet Cavalier coupe]] (1995-1998),<br> [[w:Chevrolet Malibu#Fifth generation (1997)|Chevrolet Malibu]] (2001-2003),<br> [[w:Chevrolet Malibu#Fifth generation (1997)|Chevrolet Classic]] (2004-2005),<br> [[w:Pontiac Grand Am|Pontiac Grand Am]] (1992-2005),<br> [[w:Oldsmobile Calais|Oldsmobile Calais]] (1985-1987),<br> [[w:Oldsmobile Cutlass Calais|Oldsmobile Cutlass Calais]] (1988-1991),<br> [[w:Oldsmobile Achieva|Oldsmobile Achieva]] (1992-1998),<br> [[w:Buick Skylark#Sixth generation (1985–1991)|Buick Somerset Regal/Somerset/Skylark]] (1985-1991)||1902||2005|| "M" - North assembly line. Part of GM's Lansing Plant 1. Located around 1014 Townsend St., next to the former Oldsmobile headquarters at 920 Townsend St. This was Oldsmobile's home plant. It predated the founding of GM in 1908. Fisher Body leased space here to build bodies for Oldsmobile beginning in 1923, when Fisher started making bodies for 1924 Oldsmobiles. In 1935, Fisher Body moved to the ex-Durant Motors plant on Verlinden St. that GM bought earlier that year. Oldsmobile then took back the space that Fisher Body had been using (Bldg. 26). Lansing Car Assembly was converted to build unibody, fwd, compact cars for 1985 for multiple GM brands instead of the previous body-on-frame, rwd midsize & full-size cars exclusively for Oldsmobile. Demolished in 2007. Past models: [[w:Oldsmobile F-Series|Oldsmobile F-Series]] (1928-1938), [[w:Oldsmobile L-Series|Oldsmobile L-Series]] (1932-1938), [[w:Oldsmobile Series 60|Oldsmobile Series 60]] (1939-1948), [[w:Oldsmobile Series 70|Oldsmobile Series 70]] (1939-1950), [[w:Oldsmobile 88|Oldsmobile 88]] (1949-1984), Oldsmobile 80 (1939), [[w:Oldsmobile 98#First generation (1941)|Oldsmobile 90]] (1940), [[w:Oldsmobile 98#First generation (1941)|Oldsmobile 96]] (1941), [[w:Oldsmobile 98|Oldsmobile 98]] (1941-1984), [[w:Oldsmobile 98#1953|Oldsmobile 98 Fiesta]] convertible (1953),<br> [[w:Oldsmobile Custom Cruiser#First generation (1971–1976)|Oldsmobile Custom Cruiser]] (1971-1976), [[w:Oldsmobile Cutlass|Oldsmobile Cutlass]] (1961-1984), [[w:Oldsmobile Cutlass Supreme|Oldsmobile Cutlass Supreme]] (1966-1984), [[w:Oldsmobile 442|Oldsmobile 442]] (1964-80), [[w:Oldsmobile Jetstar I|Oldsmobile Jetstar I]] (1964-1965), [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1966), [[w:Oldsmobile Toronado|Oldsmobile Toronado]] (1966-1978), [[w:Oldsmobile Vista Cruiser|Oldsmobile Vista Cruiser]] (1964-1977), [[w:Viking (automobile)|Viking]] (1929-1931)<br />Oldsmobile engines:<br />[[w:Oldsmobile straight-6 engine|Oldsmobile straight-6 engine]]<br />[[w:Oldsmobile straight-8 engine|Oldsmobile straight-8 engine]]<br />[[w:Oldsmobile V8 engine|Oldsmobile Rocket V8 engine]]<br />[[w:Oldsmobile V8 engine#Aluminum 215|Oldsmobile Rockette V8 engine]]<br />[[w:Oldsmobile Diesel engine|Oldsmobile Diesel V8]] |- |C (1985-2004 [South Line])||[[w:Lansing Car Assembly|Lansing Car Assembly - Chassis (South)]]||[[w:Lansing, Michigan|Lansing, Michigan]]||United States||[[w:Pontiac Grand Am|Pontiac Grand Am]] (1985-2004),<br> [[w:Oldsmobile Calais|Oldsmobile Calais]] (1985-1986),<br> [[w:Oldsmobile Alero|Oldsmobile Alero]] (1999-2004),<br> [[w:Chevrolet Alero|Chevrolet Alero]] (Export only: 1999-2001),<br> [[w:Buick Skylark#Seventh generation (1992–1998)|Buick Skylark]] (1992-1998)||1902||2004||"C" - South assembly line. Only started using a separate plant code from the North plant beginning with the 1985 N-body cars. Part of GM's Lansing Plant 1. Located around 1014 Townsend St., next to the former Oldsmobile headquarters at 920 Townsend St. Demolished in 2007. |- |B<br />(0 for EV1)||[[w:Lansing Craft Centre|Lansing Craft Centre]]||[[w:Lansing Township, Michigan|Lansing Township, Michigan]]||United States||[[w:Chevrolet SSR|Chevrolet SSR]] (2003–2006)||1987||2006||Located at 2801 West Saginaw Street, across the street from the Lansing Metal Center. Originally built by Ryan-Bohn Foundry and opened in 1920. Owned by Driggs Aircraft Company from 1927-1930. Owned by R.E. Olds from 1930-1940 but not used. Bought by GM's Oldsmobile Division in 1940. Became GM's Lansing Plant 2. Also known as Olds Forge. Built artillery shells during WWII. Oldsmobile used this plant as a forge (through 1983) and for making axles and differentials (through 1984). Became known as the Oldsmobile Differential Plant and Foundry. Converted into a full vehicle assembly plant including stamping, body shop and general assembly areas. First opened as a vehicle assembly plant known as the Reatta Craft Centre in 1988 though pilot production began in December 1986. After Buick Reatta production ended in 1991, plant was renamed Lansing Craft Centre. Used by the Genasys joint venture with [[w:American Specialty Cars|ASC]] to complete production of the Chevy Cavalier and Pontiac Sunfire convertibles. Cavalier and Sunfire convertible production ends during 1999. Cadillac Eldorado production moved here from Detroit-Hamtramck Assembly during 2000. Eldorado production ended April 22, 2002. Plant was then converted to truck production for the Chevy SSR. First saleable production SSR completed on July 29, 2003. Final SSR built March 17, 2006. Closed in 2006. Demolished in 2008-2009. Past models: [[w:Buick Reatta|Buick Reatta]] (1988–1991), [[w:Chevrolet Cavalier#Third generation (1995)|Chevrolet Cavalier convertible]] (1995–2000), [[w:Pontiac Sunfire|Pontiac Sunfire]] convertible (1995–2000), [[w:General Motors EV1|General Motors EV1]] (1997, 1999), [[w:Cadillac Eldorado#Twelfth generation (1992–2002)|Cadillac Eldorado]] (2000-2002) |- |||[[w:Lansing Engine Plant|Lansing Engine]]||[[w:Delta Township, Michigan|Delta Township, Michigan]]||United States||[[w:Oldsmobile Diesel engine|Oldsmobile Diesel V6]]<br />[[w:Quad 4 engine|Quad 4 engine]]<br />[[w:GM Ecotec engine|GM Ecotec engine]] (2002 only)||1981||2002||Located at 2901 S. Canal Road. Known as GM's Lansing Plant 5. Also known as Delta Engine. Built to produce experimental diesel engine; part of Ryder Logistics since 2005. |- |&nbsp;||[[w:Lansing Metal Center|Lansing Metal Center]]||[[w:Lansing Township, Michigan|Lansing Township, Michigan]]||United States|| Stamping and electroplating bumpers; general machining of crankshafts and connecting rods; and machining, welding, and stamping of other automobile parts||1952||2006|| Located at 2800 W. Saginaw Street, across the street from the Lansing Craft Centre. Known as GM's Lansing Plant 3. Also known as the Olds Jet plant. Originally built to manufacture turbine blades for Buick-built J65 axial flow jet engines. Metal fabricating plant. Electroplating operation ended in May 1987. Closed in March 2006. Demolished in 2008-2010. |- |K <br />(1953-1964 [[w:Chevrolet|Chevrolet]] and 1965-1988)<br /><br />5 (1929-1952 [[w:Chevrolet|Chevrolet]])<br /><br />M (1964 [[w:Pontiac (automobile)|Pontiac]])<br /><br />8 (1964 [[w:Buick|Buick]]) ||[[w:Leeds Assembly|Leeds Assembly]]||[[w:Kansas City, Missouri|Kansas City, Missouri]]||United States||[[w:Chevrolet Cavalier|Chevrolet Cavalier]] (1984-1987),<br> [[w:Oldsmobile Firenza|Oldsmobile Firenza]] (1982-1988),<br> [[w:Buick Skyhawk#Second generation (1982–1989)|Buick Skyhawk]] (1982-1988)<br>[[w:Pontiac Sunbird#Second generation (1982–1994)|Pontiac J2000]] (1982)||1929||1988||Located at 6817 Stadium Drive. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Leeds Assembly began making Pontiac and Buick passenger cars for 1964. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Leeds Assembly joined the GM Assembly Division in 1968. Retooled to build fwd J-cars for 1982. Closed April 15, 1988. <br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br />[[w:Buick Apollo|Buick Apollo]] (1974), [[w:Buick GS|Buick GS]] (1965-1968, 1970), [[w:Buick Regal|Buick Regal]] (1980-1981), [[w:Buick Skylark|Buick Skylark]] (1964-1970, 1975-76), [[w:Buick Special#1964–1967|Buick Special]] (1964-1967), [[w:Chevrolet 150|Chevrolet 150]] (1953-1957), [[w:Chevrolet 210|Chevrolet 210]] (1953-1957), [[w:Chevrolet AK Series|Chevrolet AK Series]], [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:Chevrolet C/K (first generation)|Chevrolet C/K]] (1960-1966), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1963), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1963), [[w:Chevrolet Corvair|Chevrolet Corvair]] (1960-1961), [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1964-1974, 1977), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet El Camino|Chevrolet El Camino]] (1964-1974, 1978-80), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1963), [[w:Chevrolet Malibu|Chevrolet Malibu]] (1978-1981), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1971-1981), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Chevrolet Nova|Chevrolet Chevy II/Nova]] (1962-63, 1974-1977),[[w:Chevrolet Suburban|Chevrolet Suburban]] (1952, 1956, 1959, 1961-1962), [[w:GMC Sprint|GMC Sprint]] (1971-1974), [[w:GMC Caballero|GMC Caballero]] (1978-1980), [[w:Pontiac GTO|Pontiac GTO]] (1964-1968), [[w:Pontiac LeMans|Pontiac LeMans]] (1964-1968), [[w:Pontiac Tempest|Pontiac Tempest]] (1964-1965) |- |K ('94-'05)<br /><br />E ('65-'91)<br /><br />L (Pre-1965 [[w:Oldsmobile|Oldsmobile]] & [[w:Pontiac (automobile)|Pontiac]]) <br /><br /> 3 (Pre-1964 [[w:Buick|Buick]]) ||[[w:Linden Assembly|Linden Assembly]]||[[w:Linden, New Jersey|Linden, New Jersey]]||United States||[[w:Chevrolet S-10 Blazer#Second generation (1995)|Chevrolet Blazer]] (1995-2005)<br />[[w:Chevrolet S-10 Blazer#Second generation (1995)|GMC Jimmy]] (1995-2005)<br />[[w:Chevrolet S-10#Second generation (1994)|Chevrolet S-10]] (1994-2004)<br /> [[w:Chevrolet S-10#Second generation (1994)|GMC Sonoma]] (1994-2004)||1937||2005||Located at 1016 W. Edgar Road. Linden Assembly was the 2nd GM multi-brand assembly plant (the 1st was Southgate, CA), assembling Buick, Oldsmobile, and Pontiac models. It was operated by GM's Linden Division through January 1942. During WWII, GM built 5,837 [[w:FM-1 Wildcat|FM-1 Wildcat]] and [[w:FM-2 Wildcat|FM-2 Wildcat]] fighter planes at Linden under license from Grumman as part of GM's Eastern Aircraft Division. After the war ended, in 1945, Linden & Southgate were both placed in a new division called the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. BOP Assembly Division became GM Assembly Division in 1965. In 1971, Linden Assembly became the first plant outside Cadillac's home plant in Detroit to assemble Cadillacs when it began to assemble C-body Cadillacs like the DeVille & Calais. In 1979, Linden became the sole source for all three of GM's E-body personal luxury coupes, the Oldsmobile Toronado, Buick Riviera, and Cadillac Eldorado. The closely related K-body Cadillac Seville was added in 1980. In the mid-1980s, the factory was retooled to produce the new L-body Chevy Beretta & Corsica, which began production in 1987. This was the first time Linden built a Chevrolet model. Linden was idled in September 1991 for conversion to truck and SUV production. It reopened in 1993 to produce the 1994 S-10 and Sonoma pickups, adding the Blazer and Jimmy SUVs for 1995. Closed April 2005. Last vehicle built was a white 2005 four-door Chevy Blazer on April 20, 2005. Demolished in 2008. Now Legacy Square, a complex of retail stores, and Legacy Commerce Center, an industrial space at the back of the property along Linden Ave.<br /> [[w:Chevrolet Corsica|Chevrolet Corsica]] (1987-1991), [[w:Chevrolet Beretta|Chevrolet Beretta]] (1987-1991), [[w:Buick Riviera#Sixth generation (1979–1985)|Buick Riviera]] (1979-1985), [[w:Oldsmobile Toronado#Third generation (1979–1985)|Oldsmobile Toronado]] (1979-1985), [[w:Cadillac Eldorado#Tenth generation (1979–1985)|Cadillac Eldorado]] (1979-1985), [[w:Cadillac Seville#Second generation (1980–1985)|Cadillac Seville]] (1980-85), [[w:Buick Century|Buick Century]] (1939, 1955-1957), [[w:Buick Electra|Buick Electra]] (1959-1963, 1971-1978), [[w:Buick Invicta|Buick Invicta]] (1959-1962), [[w:Buick LeSabre|Buick LeSabre]] (1959-1963), [[w:Buick Roadmaster|Buick Roadmaster]] (1948-1949, 1953-1957), [[w:Buick Special|Buick Special]] (1952-1957), [[w:Buick Super|Buick Super]] (1955-1957), [[w:Buick Wildcat|Buick Wildcat]] (1963), [[w:Cadillac Calais|Cadillac Calais]] (1971-1976), [[w:Cadillac DeVille|Cadillac DeVille]] (1971-1978), [[w:Oldsmobile 88|Oldsmobile 88]] (1949-1976), [[w:Oldsmobile 98|Oldsmobile 98]] (1941-1963, 1971-1978), [[w:Oldsmobile Cutlass|Oldsmobile Cutlass]] (1968-1970), [[w:Oldsmobile 442|Oldsmobile 442]] (1968-1970), [[w:Oldsmobile Jetstar I|Oldsmobile Jetstar I]] (1964-1965), [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1966), [[w:Pontiac Bonneville|Pontiac Bonneville]] (1958-1970, 1972-1973), [[w:Pontiac Catalina|Pontiac Catalina]] (1959-1970), [[w:Pontiac Chieftain|Pontiac Chieftain]] (1949, 1953, 1955, 1958), [[w:Pontiac Executive|Pontiac Executive]] (1967-1970), [[w:Pontiac Grand Prix|Pontiac Grand Prix]] (1962-1968), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1955-1958, 1962, 1965-1966), [[w:Pontiac 2+2|Pontiac 2+2]] (1964-1967), [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1960-61) |- |&nbsp;||[[w:Livonia Engine|Livonia Engine]]||[[w:Livonia, Michigan|Livonia, Michigan]]||United States||[[w:Cadillac High Technology engine|Cadillac High Technology engine]] (4.1/4.5/4.9L OHV V8)<br>[[w:GM Premium V engine|Premium V engine]] (4.6L Northstar V8, 4.0L Aurora V8, 3.5L Shortstar V6)||1971||2010|| Located at 12200 Middlebelt Road. Originally built as a parts supplier to Cadillac. Converted into an engine plant for the HT-series V8 that debuted for 1982. Now a multi-tenant commercial space including [[w:Penske Corporation|Penske Logistics]] and [[w:KUKA|KUKA]]. The [[w:KUKA|KUKA]] facility appears to be the one building the initial batch of [[w:BrightDrop Zevo 600|BrightDrop Zevo 600]] electric vans for GM prior to production moving to GM's [[w:CAMI Automotive|CAMI Automotive]] plant. |- ||7 (1979-2019)<br /><br /> U&nbsp;(1966-1978)||[[w:Lordstown Assembly|Lordstown Assembly]]||[[w:Warren, Ohio|Warren, Ohio]]||United States||[[w:Chevrolet Cruze#Second generation (J400)|Chevrolet Cruze (2016-2019)]]||1966||2019 |GM bought the property in 1955 and announced plans for the new Chevrolet plant in 1956 but construction didn't begin until 1964. Production began on April 28, 1966. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Lordstown Assembly joined the GM Assembly Division in 1971. <br /> Past models: [[w:Chevrolet Cruze#First generation (J300; 2008)|Chevrolet Cruze (2011-2015)/ Cruze Limited (2016)]], [[w:Chevrolet Cobalt|Chevrolet Cobalt]] (2005-2010)/[[w:Pontiac G5|Pontiac G5]] (2007-2009, Canada: 2007-2010), [[w:Chevrolet Cavalier|Chevrolet Cavalier]] (1982-2005)/[[w:Pontiac Sunbird#Second generation (1982–1994)|Pontiac J2000/2000/2000 Sunbird/Sunbird]] (1982-1994)/ [[w:Pontiac Sunfire|Pontiac Sunfire]] (1995-2004), [[w:Chevrolet Vega|Chevrolet Vega]] (1971–1977)/[[w:Pontiac Astre|Pontiac Astre]] (1975-1977), [[w:Chevrolet Monza|Chevrolet Monza]] (1978-1980)/[[w:Pontiac Sunbird#First generation (1976–1980)|Pontiac Sunbird]] (1978-1980)/[[w:Oldsmobile Starfire#Second generation (1975–1980)|Oldsmobile Starfire]] (1978-1980)/ [[w:Buick Skyhawk#First generation (1975–1980)|Buick Skyhawk]] (1978-1980), [[w:Chevrolet van#Third generation (1971-1996)|Chevrolet Van/Sportvan]] (1971-1992), [[w:Chevrolet van#Third generation (1971-1996)|GMC Vandura/ Rally Van]] (1971-1992), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1966-1970), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1966-1970), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1970), [[w:Chevrolet Impala|Chevrolet Impala]] (1966-1970), [[w:Pontiac Firebird#First generation (1967–1969)|Pontiac Firebird]] (1967-1969), [[w:Pontiac Pursuit|Pontiac Pursuit/G5 Pursuit]] (Canada: 2005-2006), [[w:Toyota Cavalier|Toyota Cavalier]] (1996-2000). Located at 2300 Hallock-Young Road. Main assembly plant is the East part of the complex on Hallock-Young Road. Stamping plant added in 1970. Paint shop added in 2004. Stamping plant and paint shop are part of the West part of the complex on Ellsworth-Bailey Road. <br /> Closed on March 6, 2019. Sold to [[w:Lordstown Motors|Lordstown Motors]] in 2019. Lordstown Motors sold the plant to [[w:Foxconn|Foxconn]] in 2022 and Foxconn will do contract assembly for Lordstown Motors and others. |- |1 (Lotus Omega &<br />Lotus Carlton)<br /><br />H (Lotus models)||[[w:Lotus Cars|Lotus Cars]]||[[w:RAF Hethel|RAF Hethel]], [[w: Hethel|Hethel]], [[w:Norfolk|Norfolk]], [[w:England|England]]||[[w:United Kingdom|United Kingdom]]|| [[w:Opel Lotus Omega|Opel Lotus Omega]] A / [[w:Vauxhall Lotus Carlton|Vauxhall Lotus Carlton]]<br /> 1990-1992, 950 units [[w:Lotus Esprit|Lotus Esprit]], [[w:Lotus Excel|Lotus Excel]], [[w:Lotus Elan#Elan (M100)|Lotus Elan]] ||1986||1993||GM owned Lotus from 1986-1993. GM sold Lotus in 1993 to A.C.B.N. Holdings S.A. of Luxembourg, a company controlled by Italian businessman Romano Artioli, who also owned Bugatti Automobili SpA. Artioli sold Lotus to Malaysian automaker [[w:Proton Holdings|Proton]] in 1996. |- |&nbsp;||Mansfield Metal Center||[[w:Ontario, Ohio|Ontario, Ohio]]||United States||Metal stamping||1955||2010||Located at 2525 W. 4th St. Mostly demolished. Redeveloped into Ontario Commerce Park. |- |&nbsp;||[[w:Massena Castings Plant|Massena Castings Plant]]||[[w:Rooseveltown, New York|Rooseveltown, New York]]||United States|| Aluminum engine blocks & cylinder heads for [[w:Chevrolet Turbo-Air 6 engine|Corvair engine]], Aluminum engine blocks for [[w:Chevrolet 2300 engine|Vega engine]], & aluminum cylinder heads & blocks for other engines.<br /> Also clutch housings, transmission cases, pistons, aluminum intake manifolds||1959||2009||Located at 56 Chevrolet Rd, Rooseveltown, NY 13662 <br /> Originally a Chevrolet facility. In 1978, became part of GM's Central Foundry Division. In 1991, Central Foundry became part of GM Powertrain. <br />Production ended April 23, 2009. Demolished in 2011. |- |M||Mexico City Assembly||[[w:Mexico City|Mexico City]]||[[w:Mexico|Mexico]]||[[w:Chevrolet|Chevrolet]] trucks & vans||1937||1995<ref>{{cite news|author=Thomas H. Klier, James Rubenstein|title=Mexico’s Growing Role in the Auto Industry Under NAFTA: Who Makes What and What Goes Where|url=https://www.chicagofed.org/publications/economic-perspectives/2017/6.|publisher=Federal Reserve Bank of Chicago, Economic Perspectives, Vol. 41, No. 6|at=see table 11 and footnotes right under table 11|date=September 2017}}</ref>||[[w:Chevrolet|Chevrolet]] including: Caprice, Chevelle, Corvair, Impala, Malibu, Nova, Malibu Rallye (Nova-based), trucks<br />[[w:Pontiac (automobile)|Pontiac]], [[w:Oldsmobile|Oldsmobile]], [[w:Buick|Buick]], [[w:Cadillac|Cadillac]],<br /> [[w:Opel Olympia|Opel Olympia]],<br> [[w:Opel Rekord|Opel Rekord/MX-1/<br>Olimpico/Fiera]] <br /> Located at 843 Avenida Ejército Nacional (formerly Calzada de Los Morales) although the old headquarters building was demolished in 2018. The current headquarters is in the GM Tower at the other end of the property on Blvd. Miguel de Cervantes Saavedra. Started with trucks then added passenger cars in the early 1940s. Switched from assembly to manufacturing in 1965. Production ended in 1995 and most of the property was sold but GM de Mexico still has its corporate headquarters at this location. Most of the location is now Plaza Antara, an open-air shopping center. |- |2||[[w:Moraine Assembly|Moraine Assembly]]||[[w:Moraine, Ohio|Moraine, Ohio]]||United States||[[w:Chevrolet S-10#First generation (1982)|Chevrolet S-10]] (1982-1992)<br /> [[w:Chevrolet S-10 Blazer#First generation (1983–1994)|Chevrolet S-10 Blazer]] 4-door (1991-1994)<br /> [[w:Chevrolet S-10 Blazer#Second generation (1995–2005)|Chevrolet Blazer]] (1995-2001)<br />[[w:GMC S-15#First generation (1982)|GMC S-15]] (1982-1990)<br />[[w:GMC Sonoma#First generation (1982)|GMC Sonoma]] (1991-1992)<br /> [[w:GMC S-15 Jimmy#First generation (1983–1994)|GMC S-15 Jimmy/Jimmy]] 4-door (1991-1994)<br /> [[w:GMC S-15 Jimmy#Second generation (1995–2005)|GMC Jimmy]] (1995-2001)<br /><br /> [[w:Chevrolet TrailBlazer#First generation (KC; 2001)|Chevrolet TrailBlazer]] (2002-2009)<br /> [[w:GMC Envoy#Second generation (2002–2009)|GMC Envoy]] (2002-2009)<br /> [[w:Isuzu Ascender|Isuzu Ascender]] (2003-2008)<br />[[w:Oldsmobile Bravada|Oldsmobile Bravada]] (1991-1994, 1996-2004)<br />[[w:Buick Rainier|Buick Rainier]] (2004-2007) <br />[[w:Saab 9-7X|Saab 9-7X]] (2005-2009)<br /><br />[[w:Grumman LLV|Grumman LLV]] chassis (1987-1994)||1951<br><br>1981 (Vehicle production)||2008|| Located at 2601 West Stroop Road. Began in 1951 as part of the [[w:Frigidaire|Frigidaire]] Division of General Motors Corporation producing household appliances. [[w:Frigidaire|Frigidaire]] production ended in 1979 when GM sold [[w:Frigidaire|Frigidaire]] to [[w:White Consolidated Industries|White Consolidated Industries]] but kept the Moraine plant and converted it to build vehicles. Vehicle production began in 1981. Was part of GM's Truck & Bus Group. Closed on December 23, 2008. Sold to [[w:Fuyao Group#Fuyao Glass America Inc.|Fuyao Group]] in 2014; began production of automotive glass for GM and other automakers in 2016. |- |&nbsp;||Moraine Engine||[[w:Moraine, Ohio|Moraine, Ohio]]||United States||[[w:Detroit Diesel V8 engine|Detroit Diesel V8 engine]] 6.2L/6.5L||1981||2000||Located at 4100 Springboro Pike. Also began as a [[w:Frigidaire|Frigidaire]] plant. Replaced by the nearby DMAX Ltd. engine plant (originally a joint venture with Isuzu) which builds the replacement engine ([[w:Duramax V8 engine|Duramax V8 engine]]). Demolished by 2003. Production of the 6.5-liter diesel V8 moved to a new AM General plant in Franklin, OH known as General Engine Products. AM General makes the engine for its own use and for GM service parts, & 3rd party customers. |- |&nbsp;||Muncie Transmission||[[w:Muncie, Indiana|Muncie, Indiana]]||United States||Transmissions including: [[w:Getrag 282 transmission|Getrag 282/NVG T550]], Getrag 284, Muncie M17, Muncie M20/M21/M22, Muncie M62/M64, [[w:Muncie SM420 transmission|Muncie SM420 transmission]], [[w:Muncie SM465 transmission|Muncie SM465 transmission]], [[w:New Venture Gear 3500 transmission|NV3500/NV3550]], [[w:New Venture Gear 4500 transmission|NV4500]]<br />Valves, Steering gears<br />Forge||1919||2006||Located at 1200 W. Eighth St. Originally founded as Warner Gear Company in 1902. Bought by GM in 1919. Became Muncie Products Division. Closed in 1932. Reopened by Chevrolet in 1935 (Chevrolet Muncie). Moved to Detroit Diesel Allison Division in 1984 & then to Hydramatic Division in 1986. Became part of [[w:New Venture Gear|New Venture Gear]] joint venture with Chrysler in 1990. GM owned 36% while [[w:Chrysler|Chrysler]] owned 64%. GM sold its stake to [[w:DaimlerChrysler|DaimlerChrysler]] in 2002 but took back the Muncie plant. Became Manual Transmissions of Muncie. The plant closed in 2006. Demolished in 2008-09. |- |&nbsp;||GM Near East||[[w:Alexandria|Alexandria]]|| [[w:Egypt|Egypt]]||[[w:Chevrolet|Chevrolet]] cars and trucks <br />[[w:Buick|Buick]]||1936||1958||Began CKD assembly of trucks in 1936 followed by cars in 1938. In 1951, GM Near East became the Alexandria Branch of GM Middle East. Plant was liquidated in 1958. |- |&nbsp;||[[w:General Motors New Zealand|General Motors New Zealand]]||[[w:Petone|Petone]]||[[w:New Zealand|New Zealand]]||[[w:Chevrolet|Chevrolet]] including [[w:Chevrolet Deluxe|Chevrolet Deluxe]], [[w:Chevrolet 210|Chevrolet 210]], [[w:Chevrolet Bel Air|Chevrolet Bel Air]], [[w:Chevrolet Impala|Chevrolet Impala]], [[w:Chevrolet Thriftmaster|Chevrolet Thriftmaster]]<br />[[w:Pontiac (automobile)|Pontiac]] including [[w:Pontiac Laurentian|Pontiac Laurentian]], [[w:Pontiac Parisienne#New Zealand|Pontiac Parisienne]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:Opel Kadett#Kadett I (1936–1940)|Opel Kadett]]<br />[[w:Vauxhall Motors|Vauxhall]] including [[w:Vauxhall Cresta|Vauxhall Cresta]] (E, PA, PC), [[w:Vauxhall Wyvern|Vauxhall Wyvern]], [[w:Vauxhall Velox|Vauxhall Velox]], [[w:Vauxhall Viva|Vauxhall Viva]], [[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Bedford Vehicles|Bedford]] including [[w:Bedford CF|Bedford CF]], [[w:Bedford TK|Bedford TK]]<br />[[w:Holden|Holden]] including [[w:Holden FE|Holden FE]], [[w:Holden FB|Holden FB]], [[w:Holden EJ|Holden EJ]], [[w:Holden EH|Holden EH]], [[w:Holden HD|Holden HD]]||1926||1984||Also made [[w:Frigidaire|Frigidaire]] refrigerators, freezers, washers, and dryers (Frigidaire was owned by GM from 1919 to 1979). <br /> Axle tube assemblies, oil filters, and spark plugs. |- |Z1-Z9 [https://forums.justcommodores.com.au/threads/commodore-vin-decoder-vb-to-zb.279978/]||[[w:General Motors New Zealand|General Motors New Zealand]]||[[w:Trentham, New Zealand|Trentham]]||[[w:New Zealand|New Zealand]]||[[w:Vauxhall Motors|Vauxhall]] including [[w:Vauxhall Chevette|Vauxhall Chevette]], [[w:Vauxhall Cresta#Cresta PC|Vauxhall Cresta]], [[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Holden|Holden]] including [[w:Holden HQ|Holden HQ]], [[w:Statesman (automobile)#HQ|Holden Statesman HQ]], [[w:Holden HJ|Holden HJ]], [[w:Statesman (automobile)#HJ|Holden Statesman HJ]], [[w:Holden HX|Holden HX]], [[w:Statesman (automobile)#HX|Holden Statesman HX]], [[w:Holden HZ|Holden HZ]], [[w:Statesman (automobile)#HZ|Holden Statesman HZ]], [[w:Statesman (automobile)#WB|Holden Statesman WB]],<br /> [[w:Holden Commodore (VB)|Holden Commodore (VB)]],<br /> [[w:Holden Commodore (VC)|Holden Commodore (VC)]],<br /> [[w:Holden Commodore (VH)|Holden Commodore (VH)]],<br /> [[w:Holden Commodore (VK)|Holden Commodore (VK)]],<br /> [[w:Holden Commodore (VL)|Holden Commodore (VL)]],<br /> [[w:Holden Commodore (VN)|Holden Commodore (VN)]], [[w:Holden Royale|Holden Commodore Royale (VH/VK/VL)]] <br />[[w:Holden Torana|Holden Torana]]<br /> [[w:Isuzu Faster#Second generation (1980–1988)|Holden Rodeo]]<br />[[w:Isuzu Gemini#In other markets|Isuzu Gemini/Holden Gemini]]<br />[[w:Holden Camira|Holden Camira]]<br />[[w:Holden Barina#First generation (MB, ML; 1985–1988)|Holden Barina]]<br />[[w:Suzuki Cultus#First generation (1983)|Suzuki Swift]]<br />[[w:Daihatsu Charade#First generation (G10, G20; 1977–1983)|Daihatsu Charade (under contract for Daihatsu)]]<br />[[w:Datsun Truck#Nissan D21|Nissan Navara pickup (under contract for Nissan)]]||1967||1990|| |- |&nbsp;||GM Nordiska AB||Södra Hammarbyhamnen, [[w:Stockholm|Stockholm]]||[[w:Sweden|Sweden]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Opel|Opel]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]] trucks||1928||1957|| Converted into a warehouse in 1957. |- |&nbsp;||Northway Motor Plant||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Northway engines||1905||Burned down 1987||Located at 4584 Maybury Grand Ave. (Jeffries Expressway Service Drive) and W. Hancock St. Around 4646 Lawton St. (rear side) is the remnants of a water tower and railroad spur. Northway Motor and Manufacturing Company was acquired by GM in 1909, becoming Northway Motor and Manufacturing Division. Northway had made engines for both GM brands (in particular [[w:Oakland Motor Car Company|Oakland]], [[w:Oldsmobile|Oldsmobile]], [[w:Sheridan (automobile)|Sheridan]], [[w:Scripps-Booth|Scripps-Booth]], [[w:Samson Tractor|Samson Tractor]], and [[w:GMC (automobile)|GMC]]) and other automakers. Became part of GM Intercompany Parts Group. In 1920, Northway moved to a new plant on Holbrook Ave. in Detroit. This address was subsequently been used by [[w:Frigidaire|Frigidaire]] in the 1920's and 1930's and then by Refrigeration Service Inc. in the 1950's. At some point, the building was sold to Motor City Wiping Cloth Co. but they abandoned the property in 1983, leaving behind massive bales of rags and cloths. The building burned down in a horrific fire in 1987 after homeless people in the building were burning fires there to keep warm. The fire killed three firefighters and injured ten others. The fire even spread to the nearby Continental Paper warehouse. |- |&nbsp;||Northway Motor Plant/General Motors Truck Co. Plant No. 7/ <br>Chevrolet Gear and Axle Div.||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Northway engines, Axles, parts for past model Chevrolets||1920||1994||Located at 1806 Holbrook Ave. Northway Motor and Manufacturing Company was acquired by GM in 1909, becoming Northway Motor and Manufacturing Division. Northway had made engines for both GM brands (in particular [[w:Oakland Motor Car Company|Oakland]], [[w:Oldsmobile|Oldsmobile]], [[w:Sheridan (automobile)|Sheridan]], [[w:Scripps-Booth|Scripps-Booth]], [[w:Samson Tractor|Samson Tractor]], and [[w:GMC (automobile)|GMC]]) and other automakers. Became part of GM Central Products Division. In 1920, Northway moved here from their original plant on Maybury Grand Ave. and primarily supplied engines to GMC. In 1925, became part of Yellow Truck & Coach Manufacturing Company as part of the merger of Yellow Cab Manufacturing Company and General Motors Truck Corp., the manufacturer of GMC trucks. In 1926, Northway Motor Division was liquidated and its Detroit plant was sold to Chevrolet on March 31 to become the Chevrolet Gear and Axle Div. Part of the engine tooling machinery was transferred to the Yellow Sleeve-Valve Engine Works at East Moline, IL. Some Northway engines were still used by some GMC trucks (K-series) through 1930. Was part of the Detroit complex sold to [[w:American Axle|American Axle]] in 1994. Now part of American Axle's Advanced Technology Development Center. |- |N<br />(1953-1964 [[w:Chevrolet|Chevrolet]]) and 1965-1987<br /><br />9 <br />(1928-1952 [[w:Chevrolet|Chevrolet]])||[[w:Norwood Assembly|Norwood Assembly]]||[[w:Norwood, Ohio|Norwood, Ohio]]||United States||[[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1961)<br />[[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1961)<br />[[w:Chevrolet Camaro|Chevrolet Camaro]] (1967-1987)<br />[[w:Chevrolet Caprice|Chevrolet Caprice]] (1966)<br />[[w:Chevrolet El Camino#First generation (1959–1960)|Chevrolet El Camino]] (1959-1960)<br />[[w:Chevrolet Impala|Chevrolet Impala]]<br /> (1958-1961, 1965-1966)<br />[[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957)<br />[[w:Chevrolet Nova|Chevrolet Chevy II/Nova]]<br> (1962-1966, 1972)<br />[[w:Pontiac Firebird|Pontiac Firebird]] (1969-1987)<br />[[w:Buick Apollo|Buick Apollo]] (1973)||1923||1987||Located at 5025 Carthage Ave. First vehicle produced was a Chevrolet Superior on August 13, 1923. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Norwood Assembly joined the GM Assembly Division in 1971. Closed August 26, 1987. Last vehicle produced was a Chevy Camaro IROC-Z. Demolished. Now Linden Pointe on the Lateral, a mixed use retail and office space. <br />[[w:Chevrolet Superior|Chevrolet Superior]]<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Stylemaster|Chevrolet Stylemaster]]<br />[[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br />[[w:Chevrolet 150|Chevrolet 150]] (1953-1957)<br />[[w:Chevrolet 210|Chevrolet 210]] (1953-1957)<br />[[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958)<br />[[w:Chevrolet AK Series|Chevrolet AK Series]]<br />[[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955)<br />[[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959)<br />[[w:Chevrolet C/K (first generation)|Chevrolet C/K]] (1960-1966)<br />[[w:Chevrolet Suburban|Chevrolet Suburban]] (1952) |- |Z||[[w:NUMMI|NUMMI]]||[[w:Fremont, California|Fremont, California]]||United States||[[w:Chevrolet Chevy II / Nova#Fifth generation (1985–1988)|Chevrolet Nova]] (1985-1988)<br />[[w:Geo Prizm|Geo Prizm]] (1989-1997)<br />[[w:Chevrolet Prizm|Chevrolet Prizm]] (1998-2002)<br />[[w:Pontiac Vibe|Pontiac Vibe]] (2003-2010)<br />[[w:Toyota Corolla (E80)|Toyota Corolla FX]] (1987-1988)<br />[[w:Toyota Corolla|Toyota Corolla]] (1989-2010) (E90/E100/E110/E130/E140)<br />[[w:Toyota Hilux#Fifth generation (N80, N90, N100, N110; 1988)|Toyota Pickup]] (1992-1995)<br />[[w:Toyota Tacoma|Toyota Tacoma]] (1995-2010)<br />[[w:Toyota Voltz|Toyota Voltz]] (Japan: '02-'04)||1984||2009||Located at 45500 Fremont Blvd.<br /> Operated from 1963-1982 as a GM factory.<br />From 1984-2010, operated as [[w:NUMMI|New United Motor Manufacturing Inc. (NUMMI)]], which was a 50/50 joint venture between GM and [[w:Toyota|Toyota]] and assembled both GM and Toyota vehicles. First vehicle produced was a yellow Chevrolet Nova in December 1984. First Toyota produced was a Corolla FX16 3-d hatchback in September 1986. This was followed by the Corolla FX 3-d hatchback in February 1987. Nova and Corolla FX production ended in September 1988. That same month, NUMMI began producing the Toyota Corolla 4-door sedan. Geo Prizm production began in November 1988. In August 1991, Toyota pickup production began with the Regular Cab 4x2. The 4x4 followed in February 1992 ant the Xtracab followed in March 1993. Tacoma pickup production began in January 1995, replacing the previous unnamed Toyota pickup model. Prizm production ended in December 2001. In January 2002, Pontiac Vibe production began. In June 2002, production began of the Toyota Voltz, a rhd version of the Pontiac Vibe built for export to Japan. In September 2004, the 2nd generation Tacoma pickup began production. Pontiac Vibe production ended on August 17, 2009, ending GM production at Fremont. Tacoma pickup production ended March 26, 2010. The last vehicle built at NUMMI, a red Corolla sedan, was built April 1, 2010. NUMMI produced 7.7 million vehicles. <br />Sold to [[w:Tesla Motors|Tesla, Inc.]] in May 2010.<ref>{{cite news|author=Sam Abuelsamid|title=Tesla to buy old resources from GM, Toyota for NUMMI plant|url=http://www.autoblog.com/2010/08/22/tesla-to-buy-old-resources-from-gm-toyota/|access-date=20 August 2015|publisher=Autoblog.com|date=August 22, 2010}}</ref> Tesla only bought 210 of the total 370 acres owned by NUMMI. Tesla also bought $15 million worth of equipment and parts from the former NUMMI plant. Tesla took possession of the plant in October 2010. Tesla began production at Fremont in June 2012 with the Model S. |- |O <br />(1953-1963 [[w:Chevrolet|Chevrolet]])<br /><br />6 <br />(1928-1952 [[w:Chevrolet|Chevrolet]])<br /><br />C ([[w:GMC (automobile)|GMC]])||[[w:Oakland Assembly|Oakland Assembly]] (Chevrolet)||[[w:Oakland, California|Oakland, California]]||United States||[[w:Chevrolet Series 490|Chevrolet Series 490]]<br />[[w:Chevrolet Superior|Chevrolet Superior]]<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Stylemaster|Chevrolet Stylemaster]]<br />[[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br />[[w:Chevrolet 150|Chevrolet 150]] (1953-1957)<br />[[w:Chevrolet 210|Chevrolet 210]] (1953-1957)<br />[[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1963)<br />[[w:Chevrolet Corvair|Chevrolet Corvair]] (1960-1963)<br />[[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958)<br />[[w:Chevrolet Impala|Chevrolet Impala]] (1958-1963)<br />[[w:Chevrolet Nova|Chevrolet Chevy II/Nova]] (1962-1963)<br />[[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955)<br />[[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959)<br />[[w:Chevrolet C/K (first generation)|Chevrolet C/K]] (1960-1963)<br />[[w:GMC New Design|GMC New Design]] (1952-1954)<br />[[w:GMC Blue Chip|GMC Blue Chip]] (1955-1959)<br />[[w:Chevrolet C/K (first generation)|GMC C/K]] (1960-1963)<br />[[w:Chevrolet Suburban|Chevrolet Suburban]] (1952-1953, 1955, 1957, 1959, 1963)<br />[[w:GMC Suburban|GMC Suburban]]||1917||1963||Located at 73rd Ave. & Foothill Blvd. Built by Chevrolet before it became part of GM. Began building GMC trucks in December 1937 for the 1938 model year. Replaced by Fremont Assembly plant. Demolished. Site became Eastmont Mall which is now [[w:Eastmont Town Center|Eastmont Town Center]]. |- |&nbsp;||[[w:Oakland Motor Car Company|Oakland Motor Car Co.]]||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States||Oakland automobiles <br /> Pontiac 1926-1927||1909||1931||Located at 196 Oakland Ave. (now Cesar E Chavez Ave.). Also bordered by Baldwin Ave. and W. Howard St. GM bought Oakland Motor Car Co. in 1909. Oakland introduced sister brand Pontiac in 1926. Pontiac replaced Oakland for 1932. Early Pontiacs were built here before production moved to the new factory stretching from Baldwin Ave. east to Joslyn Ave. a little farther north. This was Pontiac's first headquarters until 1970 when Pontiac headquarters moved north to the Pontiac Assembly complex on Joslyn Ave. and <br> E. Montcalm St. Some of the buildings are still standing. |- |&nbsp;||[[w:es:General Motors OBB|GM-OBB]]||[[w:Quito, Ecuador|Quito]]||[[w:Ecuador|Ecuador]]||[[w:Isuzu D-Max#Second generation (RT; 2011)|Chevrolet D-Max 2011]]||1980 (1st GM product)||2024||OBB (Ómnibus BB Transportes) was founded in 1975. GM bought 22% of OBB in 1981 & became majority shareholder in 1988. GM announced in April 2024 that GM-OBB will shut down at the end of August 2024.<ref>{{Cite web|url=https://gmauthority.com/blog/2024/04/gm-shutting-down-manufacturing-operations-in-colombia-and-ecuador/|title = GM Shutting Down Manufacturing Operations In Colombia And Ecuador|author=Deivis Centeno|publisher=GMAuthority.com|date = April 29, 2024}}</ref><ref>{{Cite web|url=https://www.americaeconomia.com/en/business-industries/general-motors-announces-end-car-manufacturing-operations-colombia-and-ecuador/|title = General Motors announces the end of car manufacturing operations in Colombia and Ecuador|publisher=AmericaEconomia.com|date = April 26, 2024}}</ref> Past models: [[w:Chevrolet Aveo (T200)|Chevrolet Aveo]]<br />[[w:Chevrolet K5 Blazer|Chevrolet K5 Blazer]]<br />[[w:Opel Corsa#Corsa B (S93; 1993)|Chevrolet Corsa]], [[w:Opel Corsa#Corsa C (X01; 2000)|Chevrolet Corsa Evolution]]<br />[[w:Suzuki Cultus Crescent|Chevrolet Esteem]], [[w:Suzuki Cultus#Second generation (1988)|Chevrolet Forsa]]<br />[[w:Isuzu Gemini#Second generation (1985)|Chevrolet Gemini]]<br />[[w:Isuzu Faster#TF|Chevrolet LUV]], [[w:Isuzu D-Max#First generation (RA, RC; 2002)|Chevrolet LUV D-Max]]<br />[[w:Isuzu MU#First generation (UCS55/UCS69GW; 1989–1998)|Chevrolet Rodeo]], [[w:Isuzu Trooper#First generation (1981–1991)|Chevrolet Trooper]]<br />[[w:Chevrolet Sail#Second generation (2010)|Chevrolet Sail (Gen 2)]], [[w:Chevrolet Sail#Third generation (2014)|Chevrolet Sail (Gen 3)]]<br />[[w:Chevrolet C/K (third generation)|Chevrolet Silverado]]<br />[[w:Chevrolet Tracker (Americas)|Chevrolet Vitara]], [[w:Chevrolet Tracker (Americas)#Second generation|Chevrolet Grand Vitara]], [[w:Suzuki Vitara#Third generation (JT; 2005)|Chevrolet Grand Vitara SZ]] |- |6||[[w:Oklahoma City Assembly|Oklahoma City Assembly]]||[[w:Oklahoma City, Oklahoma|Oklahoma City, Oklahoma]]||United States||[[w:Chevrolet Trailblazer (SUV)#EXT|Chevrolet TrailBlazer EXT]] (2002-2006)<br />[[w:GMC Envoy XL#Second generation (2002–2009)|GMC Envoy XL]] (2002-2006)<br />[[w:GMC Envoy#Envoy XUV|GMC Envoy XUV]] (2004-2005)<br />[[w:Isuzu Ascender|Isuzu Ascender extended length]] (2003-2006)||1979||2006||Located at 7447 SE 74th Street. <br /> Initially produced front wheel drive [[w:GM X platform (FWD)|X platform]] vehicles ([[w:Chevrolet Citation|Chevrolet Citation]] (1980-1983) & [[w:Pontiac Phoenix#Second generation (1980–1984)|Pontiac Phoenix]] (1980-1982)) followed by front wheel drive [[w:General Motors A platform (FWD)|A platform]] vehicles ([[w:Chevrolet Celebrity|Chevrolet Celebrity]] (1982-1989), [[w:Pontiac 6000|Pontiac 6000]] (1988-1991), [[w:Oldsmobile Cutlass Ciera|Oldsmobile Cutlass Ciera]] (1989-1996), [[w:Buick Century#Fifth generation (1982–1996)|Buick Century]] (1982-1996)) as well as [[w:Chevrolet Malibu#Fifth generation (1997)|Chevrolet Malibu]] (1997-2001) & [[w:Oldsmobile Cutlass#Sixth generation (midsize) 1997–1999|Oldsmobile Cutlass]] (1997-1999). Converted to build body-on-frame SUVs for 2002 model year. Damaged by a tornado on May 8, 2003, but the company repaired the damage and returned the plant to operation just 53 days later. Idled February 20, 2006. Last vehicle produced was a white 2006 Chevrolet TrailBlazer EXT. Plant was taken over by Oklahoma City in 2008 and leased to neighbor Tinker Air Force Base. Now known as Building 9001 Tinker Aerospace Complex. Used for maintaining jet engines and for software engineering. |- |2||[[w:Opel|Opel]] Werk Bochum||[[w:Bochum|Bochum]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]]||[[w:Germany|Germany]]||[[w:Opel Olympia#Name revival: Opel Olympia (1967–1970)|Opel Olympia]] A<br />[[w:Opel Ascona|Opel Ascona]] A, B<br />[[w:Opel Kadett|Opel Kadett]] A, B, C, D, & E<br />[[w:Opel Astra|Opel Astra]] F, G, & H<br />[[w:Opel Astra#H|Opel Astra]] H Classic (5-door, Caravan)<br />[[w:Opel GT#GT (1968–1973)|Opel GT]]<br />[[w:Opel Manta|Opel Manta]] A, B<br />[[w:Opel Zafira#Zafira Tourer C (2011–2019)|Opel/Vauxhall Zafira Tourer]] C<br />[[w:Opel Zafira#Zafira B (2005–2014)|Opel/Vauxhall Zafira]] B/Zafira Family<br />[[w:Opel Zafira#Zafira A (1999–2006)|Opel/Vauxhall Zafira]] A<br />[[w:Vauxhall Astra|Vauxhall Astra]]<br />Engines<br />Transmissions<br />Axles||1962||2014|| Plant I was the vehicle assembly plant. First car off the line was a Kadett A. Plant II was the engine, transmission, & axle plant. Engine production ended in 2004. Axle production ended in 2011. Transmission production ended Oct. 7, 2013. Vehicle production ended December 5, 2014. |- |&nbsp;||[[w:Opel|Opel]] [[w:Opelwerk Brandenburg|Werk Brandenburg]]||[[w:Brandenburg an der Havel|Brandenburg an der Havel]], [[w:Brandenburg|Brandenburg]]||[[w:Germany|Germany]]||[[w:Opel Blitz|Opel Blitz]]<br />||1935||1944|| Bombed and heavily damaged by the Allies on Aug. 6, 1944. Factory was dismantled and shipped to the Soviet Union after the war ended as reparations. |- |6||[[w:Opel Eisenach|Opel Eisenach GmbH]]||[[w:Eisenach|Eisenach]], [[w:Thuringia|Thuringia]]||[[w:Germany|Germany]]||[[w:Opel Corsa#Corsa E (X15; 2014)|Opel/Vauxhall Corsa]] E (3-door)<br />[[w:Opel Corsa#Corsa D (S07; 2006)|Opel/Vauxhall Corsa]] D (3-door)<br />[[w:Opel Corsa#Corsa C (X01; 2000)|Opel/Vauxhall Corsa]] C (3-door)<br />[[w:Opel Corsa#Corsa B (S93; 1993)|Opel/Vauxhall Corsa]] B <br /> [[w:Opel Adam|Opel/Vauxhall Adam]]<br />[[w:Opel Astra#F|Opel Astra F]] (1992-1995)<br />[[w:Opel Astra#G|Opel Astra G]] (1998-2003)||1992||2017|| [[w:Adam Opel AG|Opel plant]]. Began production with Astra F in 1992. Began Corsa production in 1993 with Corsa B. Added production of the Adam in 2013. Sold to [[w:PSA Group|PSA Group]] in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. |- |&nbsp;||[[w:Adam Opel AG|Opel]] Werk Kaiserslautern||[[w:Kaiserslautern|Kaiserslautern]], [[w:Rhineland-Palatinate|Rhineland-Palatinate]]||[[w:Germany|Germany]]||Components<br />Engines:<br /> Four-cylinder turbo diesel engines:<br /> [[w:Fiat JTD engine#2.0 Multijet II|2.0 CDTI Family B turbodiesel 4-cyl.]]<br />[[w:Fiat JTD engine#1.9|1.9 CDTI turbodiesel 4-cyl.]]<br /> [[w:GM Ecotec Diesel (1997)|2.0/2.2 Ecotec direct injection turbodiesel]] Four-cylinder gasoline engines:<br /> [[w:GM Ecotec engine|GM Ecotec engine]] 2.2<br />[[w:GM Ecotec engine#2.0|GM Ecotec engine]] 2.0 supercharged (LSJ) <br />[[w:GM Family II engine|GM Family II engine]] 1.6, 1.8, 2.0 <br /> |1966||2017||[[w:Adam Opel AG|Opel plant]]. Sold to [[w:PSA Group|PSA Group]] in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. |- |1<br /><br />R (Catera)<br /><br />5 (Pre-1976)||[[w:Adam Opel AG|Opel]] Werk Rüsselsheim||[[w:Rüsselsheim|Rüsselsheim]], [[w:Hesse|Hesse]]||[[w:Germany|Germany]]||[[w:Opel Insignia|Opel/Vauxhall Insignia]] (sedan, hatchback, Sports Tourer, Country Tourer)<br />[[w:Buick Regal#Fifth generation (2008)|Buick Regal]] (2011MY from March 1, 2010-March 25, 2011)<br />[[w:Buick Regal#Sixth generation (2018)|Buick Regal]] (2018-2020)<br />[[w:Holden Insignia#First generation (G09; 2008)|Holden Insignia VXR (GA)]] (2015-2017)<br />[[w:Holden Commodore ZB|Holden Commodore (ZB)]] (2018-2020)<br />[[w:Opel Astra#J|Opel/Vauxhall Astra J]] (5-door)<br />[[w:Opel Zafira|Opel/Vauxhall Zafira Tourer C]]<br />[[w:Opel Vectra|Opel/Vauxhall Vectra]]<br />[[w:Opel Vectra#Vectra B (1995–2002)|Holden Vectra (JR)]]<br />[[w:Opel Vectra#Vectra C (2002–2010)|Holden Vectra (ZC)]]<br />[[w:Opel Signum|Opel/Vauxhall Signum]]<br />[[w:Opel Omega|Opel/Vauxhall Omega]]<br />[[w:Cadillac Catera|Cadillac Catera]] (1997-2001)<br />[[w:Opel Senator|Opel/Vauxhall Senator & Vauxhall Royale]]<br />[[w:Opel Calibra|Opel/Vauxhall/Holden Calibra (YE)]]<br />[[w:Opel Monza|Opel Monza/Vauxhall Royale Coupe]]<br />[[w:Opel Commodore|Opel Commodore/Vauxhall Viceroy]]<br />[[w:Opel Kapitan|Opel Kapitan]]<br />[[w:Opel Admiral|Opel Admiral]]<br />[[w:Opel Diplomat|Opel Diplomat]]<br />[[w:Opel Kadett#Kadett I (1936–1940)|Opel Kadett]]<br />[[w:Opel Olympia|Opel Olympia]]<br />[[w:Opel Blitz|Opel Blitz]]<br />axles<br />components<br />[[w:GM F40 transmission|GM F40 transmission]]<br />Frigidaire refrigerators (1937-c.1940 & 1946-1959)||1899 (1st production car built)<br><br> 1929 (part of GM)||2017 (left GM)<br><br>2020 (production for GM ended)|| [[w:Adam Opel AG|Opel plant]]. GM bought 80% of Opel in March 1929 and bought the rest in 1931, making Opel a full GM subsidiary. Russelsheim previously make engines. Sold to [[w:PSA Group|PSA Group]] in 2017. Rüsselsheim continued to supply the Buick Regal & the Holden Commodore ZB to GM through 2020. Part of [[w:Stellantis|Stellantis]] since 2021. |- |S||[[w:Opel Szentgotthárd|Opel Szentgotthárd]]||[[w:Szentgotthárd|Szentgotthárd]]||[[w:Hungary|Hungary]]||[[w:Opel Astra|Opel Astra]] F 1992-1997, 80,835 units<br />[[w:Opel Vectra#Vectra B (1995–2002)|Opel Vectra]] B1 and B2 1998-1999, 4,404 units<br />Opel Engines including:<br /> [[w:GM Family 1 engine| Family 1 engine]] DOHC versions 1.4, 1.6, 1.8<br />[[w:GM small gasoline engine|GM Small Gasoline Engine]]<br />[[w:GM Medium Gasoline Engine|GM Medium Gasoline Engine]]<br />[[w:GM Medium Diesel engine|GM Medium Diesel engine]]<br />[[w:VTi transmission|"VTi" CVT transmission]]<br /> [[w:Allison Transmission|Allison]] 3000, 4000, & Torqmatic Series automatic transmissions||1992||2017 (left GM)<br><br>2019 (production for GM ended)|| [[w:Adam Opel AG|Opel plant]]. Originally a joint venture between GM & Hungarian truck and engine maker Raba. GM bought out Raba & became 100% owner in 1995. Production of Allison Transmissions began in 2000. Sold to [[w:PSA Group|PSA Group]] in 2017. Szentgotthárd continued to supply the [[w:GM Medium Diesel engine|1.6L LH7 turbodiesel I4]] to GM through 2019. Part of [[w:Stellantis|Stellantis]] since 2021. |- |&nbsp;||[[w:Opel Wien|Opel Wien GmbH]]||[[w:Aspern|Aspern]]||[[w:Austria|Austria]]||[[w:Family 0 engine|Family 0]] engines (1.0, 1.2, 1.4, 1.4 Turbo)<br />Transmissions (Easytronic automated manual, F15/F17 five-speed manual and M20/M32 six-speed manual)||1982||2017|| [[w:Adam Opel AG|Opel plant]]. Sold to [[w:PSA Group|PSA Group]] in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. Closed by Stellantis in 2024. <br /> Past engines: [[w:GM Family 1 engine|GM Family 1 engine]] SOHC versions. |- |&nbsp;||Osaka Assembly (Built on land leased from [[w:Sojitz|Nihon Menka]])<ref>{{cite book|url=https://books.google.com/books?id=TY4l3qWIIh4C&q=general+motors+assembly+plant+location+osaka+japan&pg=PA70|title=American Multinationals and Japan: The Political Economy of Japanese Capital Controls, 1899-1980|author=Mark Mason|date=14 October 1992|publisher=Harvard Univ Asia Center|isbn=9780674026308|via=Google Books}}</ref>||[[w:Osaka|Osaka]]||[[w:Japan|Japan]]||Chevrolet, Pontiac, Oldsmobile, Buick from CKD kits||1927||1941||Factory was seized by [[w:Imperial Japanese|Imperial Japanese]] Government, see also [[w:General Motors Japan|General Motors Japan]]<ref>{{cite web|url=http://www.autonews.com/article/20080914/ANA03/809150388/gm-had-early-start-in-japan-but-was-hobbled-by-nationalism|title=GM early history in Japan|author=Hans Greimel|publisher=Autonews.com|date=September 14, 2008}}</ref><ref>{{cite web|url=https://history.gmheritagecenter.com/wiki/index.php/File:1926-6-1.jpg|title=Image of Osaka facility}}</ref> |- |&nbsp;||[[w:Oshawa Truck Assembly|Oshawa Battery Plant]]||[[w:Oshawa, Ontario|Oshawa, Ontario]]||[[w:Canada|Canada]] ||Batteries||19?||1990's?||Was part of the overall Oshawa Assembly complex (Autoplex) on Park Road South. Referred to by Delco Remy as Plant 41. This operation was closed. |- |9 (1917-Mid 1923 Chevrolet)||Oshawa North||[[w:Oshawa, Ontario|Oshawa, Ontario]]||[[w:Canada|Canada]]||<br />||1907||1996||The original Oshawa (North) plant opened in 1907 as a McLaughlin Motor Car Co. plant. It produced McLaughlin-Buick cars by fitting Buick engines and chassis to McLaughlin bodies. It also built Chevrolets for Chevrolet Motor Co. beginning in 1915 as the Chevrolet Motor Car Co. of Canada. McLaughlin Motor Car Co. and the Chevrolet Motor Car Co. of Canada were bought out by GM in 1918 becoming GM of Canada. GM of Canada continued to make Chevrolets and McLaughlin-Buicks (which became simply Buick after WWII) and also assembled [[w:Oakland Motor Car Company|Oakland]] 1921-1930, [[w:Oldsmobile|Oldsmobile]] 1920-1942, 1946-1969, [[w:Marquette (automobile)#Buick brand|Marquette]] 1929-1930, [[w:Buick|Buick]] 1908-1942, 1951-1971, [[w:LaSalle (automobile)|LaSalle]] 1927-1930, 1932-1935, [[w:Cadillac|Cadillac]] 1923-1936. [[w:Pontiac (automobile)|Pontiac]] production in Oshawa began shortly after US production in 1926. From the 1950's into the 1980's, Canadian market full-size Pontiacs were built on Chevrolet chassis and were powered by Chevrolet engines and had model names different from US-market Pontiacs (Pathfinder, Strato Chief, Laurentian, and Parisienne). Car production shifted to the current Oshawa complex Car Assembly plant (South plant; also known as Autoplex beginning in the 1980's) which opened in 1953. [[w:Chevrolet|Chevrolet]] trucks were made beginning in 1919 and [[w:GMC (automobile)|GMC]] trucks were made beginning in 1923 before truck production shifted to the Oshawa Truck plant located next to the South car plant in 1965. Oshawa also produced 65 [[w:Samson Tractor#Trucks and a car|Samson trucks]] from 1920-1921. Oshawa also produced military vehicles and equipment during both WWI and WWII. Also, Maple Leaf trucks. Operations were gradually moved from the older North plant to the newer South plant. The North plant, by then known as the GM North Fabrication plant making metal and plastic parts, was sold to Peregrine, Inc. in 1996. It was then sold to ACSYS Technologies Inc. in 2001. Both companies continued to operate as an auto parts manufacturer supplying GM. ACSYS closed the plant in 2004. The North plant ended all operations in 2005 and the last of it was demolished by 2006. Much of the site of the North plant at 155 Division Street (Ritson Road North is on the other side) is now a Costco. |- |1||[[w:Oshawa Truck Assembly|Oshawa Truck Assembly]]||[[w:Oshawa, Ontario|Oshawa, Ontario]]||[[w:Canada|Canada]]||[[w:Chevrolet Silverado|Chevrolet Silverado]] (1999-2009)<br />[[w:GMC Sierra|GMC Sierra]] (1988-2009)||1965||2009||Part of the overall Oshawa Assembly complex (Autoplex) on Park Road South. Truck plant was at 1100 Park Road South at the southern end of the Autoplex. Production ended May 14, 2009. Over 10 million vehicles were produced. Now the GM Canadian Technical Centre's (CTC) McLaughlin Advanced Technology Track. <br />Past models: [[w:Chevrolet C/K|Chevrolet C/K]] (-1986, 1988-1998), [[w:GMC C/K|GMC C/K]] (-1986) |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> Main complex||[[w:Warren, Ohio|Warren, Ohio]]||United States||Automotive wiring<br>Electric Motors||1932||1999||Packard Electric was acquired by GM in 1932. Located between Griswold St NE on the north side, Dana St NE on the south side, Paige Ave NE on the east side, and N. Park Ave on the west side. Some of the earliest Packard cars were built here before Packard Automobile split from Packard Electric in 1902. Plant 4, which opened in 1938, was originally used by GM's Sunlight Electrical Division, which made electric motors. GM had acquired the former Sunlight Electrical Manufacturing Co. in March 1933. On July 1, 1943, Sunlight Electrical Division merged into GM's Packard Electric Division. Sunlight motors were still made in Plant 4. Became part of GM's Delphi Automotive Systems subsidiary in 1995 as Delphi Packard Electric Systems. Spun off with Delphi in 1999. Closed in 2006. |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> Plant# 41||[[w:Warren, Ohio|Warren, Ohio]]||United States||Automotive wiring||1947||1998||Packard Electric was acquired by GM in 1932. Located at 1554 Thomas Rd SE. Became part of GM's Delphi Automotive Systems subsidiary in 1995 as Delphi Packard Electric Systems. Closed in 1998. Sold in 2004 to Wetzel, Inc. Sold to Berk Enterprise, Inc. in 2009. |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> North River Road complex||[[w:Bazetta Township, Ohio|Bazetta Township, Ohio]] and [[w:Howland Township, Trumbull County, Ohio|Howland Township, Ohio]]||United States||Automotive wiring||1955||1999||Packard Electric was acquired by GM in 1932. Located on North River Road and Larchmont Avenue NE. The plant is in Bazetta Township and extends across the border into Howland Township. The majority is in Bazetta Township. Became part of GM's Delphi Automotive Systems subsidiary in 1995 as Delphi Packard Electric Systems. Spun off with Delphi in 1999. Parts of the site have been closed and demolished and/or sold but Delphi successor Aptiv still operates part of the site at 1265 North River Road. |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> Brookhaven Plant||[[w:Brookhaven, Mississippi|Brookhaven, Mississippi]]||United States||Automotive wiring||1977||1999||Packard Electric was acquired by GM in 1932. Located at 925 Industrial Park Road NE. Became part of GM's Delphi Automotive Systems subsidiary in 1995 as Delphi Packard Electric Systems. Spun off with Delphi in 1999. Delphi successor Aptiv still operates the Brookhaven plant. |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> Clinton Plant||[[w:Clinton, Mississippi|Clinton, Mississippi]]||United States||Automotive wiring||1973||1999||Packard Electric was acquired by GM in 1932. Located at 1001 Industrial Park Dr. Became part of GM's Delphi Automotive Systems subsidiary in 1995 as Delphi Packard Electric Systems. Spun off with Delphi in 1999. One plant closed in 2006 and the second closed in 2009. |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> Mexico||[[w:Ciudad Juárez|Ciudad Juárez]], [[w:Chihuahua (state)|Chihuahua]]||[[w:Mexico|Mexico]]||Automotive wiring||1978||1999||Originally established as Conductores y Componentes Eléctricos by the Packard Electric division of GM. Became part of GM's Delphi Automotive Systems subsidiary in 1995. Spun off with Delphi in 1999. Delphi successor Aptiv still operates the Mexican plants. |- |&nbsp;||[[w:Delphi Automotive Systems|Packard Electric]]<br /> Ireland Ltd.||[[w:Tallaght|Tallaght]]||[[w:Republic of Ireland|Ireland]]||Wire harnesses||1975||1996||Located on Airton Road. Production and export of wiring harnesses from this plant allowed GM to import fully built-up vehicles into Ireland before Ireland fully removed its restrictions on importing fully built-up vehicles. Became part of GM's Delphi Automotive Systems subsidiary in 1995. Closed in 1996. |- |&nbsp;||GM Peninsular SA||[[w:Barcelona|Barcelona]]||[[w:Spain|Spain]]||[[w:Chevrolet|Chevrolet]] trucks||1932||1936|| Production ended due to Spanish Civil War. Liquidated around 1939. |- |&nbsp;||GM del Peru||[[w:Lima|Lima]]||[[w:Peru|Peru]]||[[w:Chevrolet Bel Air|Chevrolet Bel Air]]<br />[[w:Chevrolet Camaro (first generation)|Chevrolet Camaro]]<br />[[w:Chevrolet Caprice|Chevrolet Caprice]]<br />[[w:Chevrolet Chevelle|Chevrolet Chevelle]]/[[w:Chevrolet Malibu|Chevrolet Malibu]]<br />[[w:Chevrolet Impala|Chevrolet Impala]]<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]||1945||1970|| |- |&nbsp;||[[w:Pittsburgh Metal|Pittsburgh Metal]]||[[W:West Mifflin, Pennsylvania|West Mifflin, Pennsylvania]]||United States||Metal stamping||1949||2008||Located at 1451 Lebanon School Road. Originally part of [[w:Fisher Body|Fisher Body]] division. Demolished in 2011. |- |&nbsp;||GM Polsce Sp. Zo.o.||[[w:Warsaw|Warsaw]]||[[w:Poland|Poland]]||[[w:Chevrolet|Chevrolet]] cars and trucks||1928||1930's||Was at 103 Wolska St. Closed during the Depression. |- |P (1939-1988)||[[w:Pontiac Assembly|Pontiac Assembly]]/Pontiac Fiero Assembly||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States||In ex-Fisher Body plant (Pontiac Fiero Assembly):<br /> [[w:Pontiac Fiero|Pontiac Fiero]] (1984-1988)<br /><br />In Main plant (Pontiac Assembly) after reopening:<br /> [[w:GM G platform (RWD)|RWD G-bodies]]:<br /> [[w:Chevrolet Monte Carlo#Fourth generation (1981–1988)|Chevrolet Monte Carlo]] (1987-1988),<br /> [[w:Oldsmobile Cutlass Supreme#Fourth generation (1978–1988)|Oldsmobile Cutlass Supreme]] (1985-1987),<br /> [[w:Oldsmobile 442|Oldsmobile 442]] (1986-1987),<br />[[w:Oldsmobile Cutlass Supreme#Fourth generation (1978–1988)|Oldsmobile Cutlass Supreme Classic]] (1988),<br /> [[w:Buick Regal#Second generation (1978)|Buick Regal]] (1985-1987)<br /><br />Also:<br /> Pontiac engines:<br /> [[w:Pontiac straight-8 engine|Pontiac straight-8 engine]]<br />[[w:Pontiac V8 engine|Pontiac V8 engine]]<br />[[w:Pontiac Trophy 4 engine|Pontiac Trophy 4 engine]]<br />[[w:Iron Duke engine|Pontiac Iron Duke/Tech IV I4 engine]]||1927||1987 (Pontiac Assembly)/1988 (Pontiac Fiero Assembly)||This was Pontiac's home plant. Property runs from Walton Blvd. on the north to E. Montcalm St. on the south with Joslyn Ave. or for certain stretches, Highwood Blvd., on the east side and Price St. or further south, Baldwin Ave. and then N. Saginaw St., on the west side. Also known as Pontiac North to distinguish from GMC's multiple plants in Pontiac, MI. Within 90 days of ground being broken, vehicles were already being produced in Pontiac's new home plant in 1927. Final Assembly was Plant 8 of Pontiac's Assembly complex in Pontiac, Michigan. On March 14, 1962, Pontiac Assembly built the 75 millionth GM vehicle built in the US, a white 1962 Bonneville convertible. Idled in 1982 but reopened in January 1985 with bodies supplied by Flint Body Assembly. Closed in December 1987. Last vehicle built was a Buick Regal Grand National. Demolished in 1997. GM still has the Pontiac Redistribution Center on the northeast portion of this property at 1251 Joslyn Road at the intersection with E. Columbia Ave. The Pontiac Metal Center is another still active part of this property. GM still uses the eastern part of the property bordered by Joslyn Ave. on the east, E. Beverly Ave. on the north, E. Montcalm St. on the south, and N. Glenwood Ave. on the west. This area includes GM Performance and Racing Center at 900 N. Glenwood Ave. and the Propulsion Systems Pontiac Engineering Center at 800 N. Glenwood Ave. Pontiac's divisional HQ moved here in 1970 from the previous location at the former Oakland HQ on 196 Oakland Ave. (now Cesar E Chavez Ave.). Pontiac's divisional HQ at One Pontiac Plaza was about where the Propulsion Systems Engineering Center is now. [[w:Fisher Body|Fisher Body]] operated a plant on the site (Plant 17) from 1935-1982. This plant was connected to the final assembly plant by an enclosed bridge that ran over N. Saginaw St., that was used to transport the bodies from the Fisher Body plant, where bodies up to the firewall were built, to the Pontiac final assembly plant where the body was mated to the chassis and the front end, powertrain, & interior were installed and the car was completed. This plant, located at 900 Baldwin Ave., was converted to build the [[w:Pontiac Fiero|Pontiac Fiero]], which it built from 1983-1988. Last Fiero built August 16, 1988. GM used it as a warehouse until 2009 ("Pontiac Warehouse Operations"). Prototyping work was also done there. Most of the Fiero plant was demolished in 2013 (from Kennett Rd. until just before the plant sign which is just past St. Louis Ave.). There used to be an overpass going over Baldwin Ave. to the parking lot on the other side of Baldwin but this was taken down after Fiero production ended. Pontiac engines were made in Plant 9 and Plant 18. Another engine plant was built in 1981 in the northern part of the property. It was originally called Plant 55, later renamed Plant 33. It was next to Plant 51, later renamed Plant 25, which did chassis parts and machining and later, engine machining. Engine production ended in 1993. Plant 9 was demolished in 1997 & Plant 18 was demolished in 1998. Plants 25 & 33 were demolished sometime between 2008 & 2013. Some parts of the complex have been sold to U-Pull And Save Auto Parts, Dani’s Trucking, GFL Environmental, & Bedrock Express. <br />[[w:Pontiac Six|Pontiac Six]] (1927-1932, 1935-1940), Pontiac Series 302 V8 (1932), Pontiac Economy Eight (1933-1934), Pontiac Improved Eight (1935), Pontiac Deluxe Eight (1936-1940), [[w:Pontiac 2+2|Pontiac 2+2]] (1964-1967), [[w:Pontiac Bonneville|Pontiac Bonneville (B-body)]] (1958-80), [[w:Pontiac Bonneville#Seventh generation (1982–1986)|Pontiac Bonneville (G-body)]] (1982), [[w:Pontiac Can Am|Pontiac Can Am]] (1977) [[w:Pontiac Catalina|Pontiac Catalina]] (1959-1980), [[w:Pontiac Chieftain|Pontiac Chieftain]] (1949-1958), [[w:Pontiac Custom S|Pontiac Custom S]] (1969), [[w:Pontiac Executive|Pontiac Executive]] (1967-70), [[w:Pontiac Grand Am#1973–1975|Pontiac Grand Am (1973-75)]], [[w:Pontiac Grand Am#1978–1980|Pontiac Grand Am (1978-80)]], [[w:Pontiac Grand Prix|Pontiac Grand Prix (B-body)]] (1962-1968), [[w:Pontiac Grand Prix#Third generation (1969–1972)|Pontiac Grand Prix (G-body)]] (1969-1972), [[w:Pontiac Grand Prix|Pontiac Grand Prix (A-/G-body)]] (1973-1982), [[w:Pontiac Grand Safari|Pontiac Grand Safari]] (1971-1978), [[w:Pontiac Grand Ville|Pontiac Grand Ville]] (1971-75), [[w:Pontiac GTO|Pontiac GTO]] (1964-1973), [[w:Pontiac LeMans|Pontiac LeMans]] (1962-1981), [[w:Pontiac Safari|Pontiac Safari]] (1955-1957), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1954-66), [[w:Pontiac Streamliner|Pontiac Streamliner]] (1941-51), [[w:Pontiac Tempest|Pontiac Tempest]] (1961-1970), [[w:Pontiac LeMans#1970|Pontiac T-37]] (1970-1971), [[w:Pontiac Torpedo|Pontiac Torpedo]] (1940-1948), [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1960-1961) |- |V (1972-1990)<br /><br /> P (Pre-1972)||Pontiac Central Assembly||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States|||[[w:Chevrolet AK Series|GMC C-Series/E-Series]]<br />[[w:GMC New Design|GMC New Design]] (1947-1951, 1952-1954)<br />[[w:GMC Blue Chip|GMC Blue Chip]] (1955-1959)<br /> [[w:Chevrolet C/K|GMC C/K]] (1960-1985)<br />[[w:Chevrolet C/K|Chevrolet C/K]] (1967-1985)<br /> [[w:GMC Suburban|GMC Suburban]] (1937-1966)<br />[[w:GMC Motorhome|GMC Motorhome/TransMode]] (1978)<br /> Buses ([[w:GM "old-look" transit bus|Yellow Coach/GM "old-look" transit bus]] (1940-1969), [[w:GM PD-4103|GM PD-4103]], [[w:PD-4501 Scenicruiser|PD-4501 Scenicruiser]], [[w:GM New Look bus|GM New Look bus]] (1960-1977), [[w:GM Buffalo bus|GM Buffalo bus]] (1966-1980), [[w:Rapid Transit Series|Rapid Transit Series (RTS)]] (1978-1987))<br />Medium Duty Trucks & Heavy Duty Trucks including:<br />[[w:Chevrolet C/K (second generation)#Medium-duty trucks|Chevrolet C-Series medium-duty trucks]] (1967-1972)<br />[[w:Chevrolet/GMC B series#GMC (1966–1970)|GMC E-Series medium-duty trucks]] (E4500/E5500/E6500) (1967-1968) [https://web.archive.org/web/20140109015322/https://www.gmheritagecenter.com/docs/gm-heritage-archive/historical-brochures/GMC/100_YR_GMC_HISTORY_MAR09.pdf] (page 30)<br />[[w:Chevrolet C/K (second generation)#Medium-duty trucks|GMC C-Series medium-duty trucks]] (1969-1972)<br />[[w:Chevrolet C/K (third generation)#Medium-duty trucks (1973–1989)|Chevrolet/GMC C-Series medium-duty trucks]] (1985-1990)<br />[[w:Chevrolet Kodiak#First generation (1981–1989)|Chevrolet Kodiak]] (1985-1990)<br />[[w:Chevrolet Kodiak#First generation (1981–1989)|GMC Top Kick]] (1985-1990)<br />[[w:Chevrolet/GMC B series|Chevrolet B-series]] (-1991)<br />[[w:Chevrolet/GMC B series|GMC B-series]] (-1991)<br />[[w:GMC Brigadier#Background|Chevrolet/GMC H/J series]] (1966-1977)<br />[[w:Chevrolet Bruin|Chevrolet Bruin]] (1978-1980)<br />[[w:GMC Brigadier|GMC Brigadier]] (1978-1987)<br />[[w:WhiteGMC Brigadier|WhiteGMC Brigadier]] (1988-1989)<br />[[w:GMC General#Background|Chevrolet/GMC C/M series]] (1966-1976)<br />[[w:Chevrolet Bison|Chevrolet Bison]] (1977-1980)<br />[[w:GMC General|GMC General]] (1977-1987)<br />[[w:GMC Astro#Background|GMC F/D series "Crackerbox"]] (1959-1968)<br />[[w:Chevrolet Titan|Chevrolet Titan]] (1970-1980)<br />[[w:GMC Astro|GMC Astro]] (1969-1987)<br />Engines ([[w:GMC straight-6 engine|GMC straight-6 engine]] 1947-1962,<br /> [[w:GMC V6 engine|GMC V6 (1960-1973)/V12 (1960-1965) engine]],<br> [[w:GMC V8 engine#GMC engines|GMC 60° V8]] (1966-1972))||1928||1990||Located at 660 South Boulevard East. Known as GMC Truck & Coach Division Plant 2 when built. Production of trucks began in January 1928. In 1925, General Motors Truck Corp., the parent of the GMC brand, merged with Yellow Cab Manufacturing Company (including its Yellow Coach Mfg. Co. bus-making subsidiary) to form Yellow Truck & Coach Manufacturing Company, in which GM owned a majority stake of 57%. The Northway Motor Division of Detroit was transferred to General Motors Truck Corp. as part of that merger but was liquidated in 1926. On September 30, 1943, GM acquired the remainder of Yellow Truck & Coach Manufacturing Co. and on October 1, 1943 the GMC Truck & Coach Division of General Motors Corp. was formed and Yellow Truck & Coach Manufacturing Co. was dissolved. When limited production of civilian buses resumed in March 1944, they were badged as GM Coach and the Yellow name was retired. Headquarters of Yellow Truck & Coach Manufacturing Co. and later the GMC Truck & Coach Division. Headquarters building in front of Plant 2 was completed in March 1928. Administration and engineering buildings were part of the complex. Built 409,012 [[w:GMC CCKW 2½-ton 6×6 truck|CCKW 6x6 trucks]], AFKWX 6x6 cab-over trucks, [[w:DUKW|DUKW "Ducks"]], & other types of trucks during WWII. Also produced 2,249 buses & 30 T18E2 Boarhound armored cars during WWII. The small-block, Group 1 GMC inline-6s were moved from Plant 4 of Pontiac West to Building 29 at Pontiac Central in November 1947. In December 1947, engine manufacturing and machine shops moved from Plants 1 and 4 of Pontiac West to Building 29 at Pontiac Central. The medium- and big-block, Group 2 & 3 GMC inline-6s were moved to Building 29 at Pontiac Central in February 1948. In August 1977, the GMC MotorHome was moved from Plant 3 of Pontiac West to Building 29 at Pontiac Central. The GMC MotorHome was discontinued after 1978. [https://www.gmccolonial.com/gmc-motorhome-history] Transit bus production ended in spring 1987 when GM sold the product line to Greyhound Corporation, which continued RTS production at its [[w:Transportation Manufacturing Corporation|TMC]] plant in Roswell, New Mexico. Converted in 1994 into a Truck Product Engineering Center (Pontiac Centerpoint Campus) by GM using only the steel frame of the large main building while everything else was demolished. The Truck Product Engineering Center closed in 2009 and the site is now the Centerpoint Business Campus, which is occupied by many businesses including Fanuc Robotics and i.M. Branded. |- |E (1988-2009)<br /><br />V (1972-1985)||[[w:Pontiac East Assembly|Pontiac East Assembly]]||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States||Medium Duty Trucks:<br /> [[w:Chevrolet C/K (third generation)#Medium-duty trucks (1973–1989)|Chevrolet/GMC C-Series medium-duty trucks]] (1973-85), [[w:Chevrolet Kodiak#First generation (1981–1989)|Chevrolet Kodiak]] (1981-1985), [[w:Chevrolet Kodiak#First generation (1981–1989)|GMC Top Kick]] (1981-85)<br /><br /> [[w:Chevrolet C/K (fourth generation)|Chevrolet C/K (GMT400)]] (1988-1998)<br /> [[w:Chevrolet C/K (fourth generation)|GMC Sierra (GMT400)]] (1988-1998)<br /> [[w:Chevrolet Silverado#First-generation Silverado / second-generation Sierra (GMT800; 1999)|Chevrolet Silverado (GMT800)]] (1999-2006)<br /> [[w:Chevrolet Silverado#First-generation Silverado / second-generation Sierra (GMT800; 1999)|Chevrolet Silverado Classic (GMT800)]] (2007)<br /> [[w:Chevrolet Silverado#First-generation Silverado / second-generation Sierra (GMT800; 1999)|GMC Sierra (GMT800)]] (1999-2006)<br /> [[w:Chevrolet Silverado#First-generation Silverado / second-generation Sierra (GMT800; 1999)|GMC Sierra Classic (GMT800)]] (2007)<br /> [[w:Chevrolet Silverado#Second-generation Silverado / third-generation Sierra (GMT900; 2007)|Chevrolet Silverado (GMT900)]] (2007-2009)<br /> [[w:Chevrolet Silverado#Second-generation Silverado / third-generation Sierra (GMT900; 2007)|GMC Sierra (GMT900)]] (2007-2009) ||1972||2009||Located at 2100 South Opdyke Road. Known as GMC Truck & Coach Division Plant 6 when built, also known as Pontiac Assembly Center. Pontiac East is directly to the east of Pontiac Central. Pontiac East began by building medium-duty trucks, which were moved from Pontiac Central. In 1985, medium-duty trucks were moved back to Pontiac Central, combining with production of heavy-duty trucks and buses. GMT400 full-size pickup production began in December 1986 for the 1988 model year. Closed in September 2009. Demolished in 2011-2012. Portions of the site are now occupied by Challenge Manufacturing Co. and Williams International. |- |0 (1978-1994)<br /><br />V (1972-1977)<br /><br /> P (Pre-1972)||[[w:Pontiac West Assembly|Pontiac West Assembly]]||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States||Trucks, Buses,<br />Engines: ([[w:Buick straight-6 engine|Buick 257/331 straight-6 engine]] (1931-1932), [[w:GMC straight-6 engine|GMC straight-6 engine]] 1933-1948), <br /> [[w:GMC Motorhome|GMC Motorhome/TransMode]] (1973-1977)<br /> [[w:Chevrolet van#First generation (1964–1966)|Chevrolet Van/GMC Handi-Van]] (1964-1966)<br />[[w:Chevrolet van#Second generation (1967–1970)|Chevrolet Van/GMC Handi-Van]] (1967-1970)<br />[[w:Chevrolet van#Third generation (1971–1996)|Chevrolet Van/GMC Vandura]] (1978-1980)<br />[[w:Chevrolet S-10#First generation (1982)|Chevrolet S-10]]<br /> (1982-1984, 1991-1993)<br />[[w:GMC S-15|GMC S-15]] (1982-1984)<br />[[w:GMC Sonoma|GMC Sonoma]] (1991-1993)<br />[[w:Chevrolet S-10 Blazer#First generation (1983–1994)|Chevrolet S-10 Blazer]]<br /> (1983-1994 2-d, 1994 4-d)<br />[[w:GMC S-15 Jimmy|GMC S-15 Jimmy]]<br /> (1983-1994 2-d, 1994 4-d)<br />[[w:GMC Typhoon|GMC Typhoon]] (1992-1993)<br />[[w:Oldsmobile Bravada#First generation (1991–1994)|Oldsmobile Bravada]] (1994) ||1906||1994||Complex includes GMC Truck & Coach Division Plants 1, 3, 4, and 5. Plant 1 was originally the plant of Rapid Motor Vehicle Company, one of the 2 main ancestors of the modern GMC Division (the other being Reliance Motor Car Company). Plant 1 was located at 25 Rapid Street and opened in 1906, before Rapid was taken over by GM in 1908-1909. Plant 1 started making Buick 257 & 331 inline-6's in 1931 after Buick stopped making inline-6s after 1930 and switched its entire lineup to straight-8s. The tooling was moved to Plant 1 from the Buick complex in Flint. Buick had been supplying inline-6s to GMC since 1925. In 1933, GMC started making inline-6s of its own design in Plant 1. The medium- and big-block, Group 2 & 3 GMC inline-6s were moved to Building 29 at Pontiac Central in February 1948. Plant 1 was demolished around 1981. Plant 3 opened in 1940 and was located at South Boulevard West and Franklin Road. Plant 3 was used for sheet metal work and material storage at first. Plant 3 later built the [[w:GMC Motorhome|GMC Motorhome]]. In August 1977, the GMC MotorHome was moved from Plant 3 of Pontiac West to Building 29 at Pontiac Central for its final model year of 1978. Plant 3 was demolished around 2005. Plant 4 was located on South Saginaw Street (now Woodward Ave.) Engine production began in Plant 4 in October 1938. The [[w:GMC straight-6 engine|GMC straight-6 engine]] was built there through 1947/1948. Small-block, Group 1 GMC inline-6 engines were made in Plant 4 from October 1938. The small-block, Group 1 GMC inline-6s were moved to Building 29 at Pontiac Central in November 1947. In December 1947, engine manufacturing and machine shops moved from Plants 1 and 4 to Building 29 at Pontiac Central. Plant 4 was also used for material storage. Plant 4 also built the [[w:Chevrolet van|1964-1970 Chevrolet & GMC full-size vans]]. Plant 4 was demolished around 2008. Plant 5 was located on Franklin Road, to the north of Plant 3. Plant 5 was demolished around 2005. After Pontiac Central opened in 1928, Pontiac West focused on machining and component manufacturing rather than vehicle assembly.[https://www.hagerty.com/media/automotive-history/a-gmc-motor-homecoming-50-years-on/] (Paragraph 4) There would be sporadic vehicle production at Pontiac West in the 1960's and 1970's (vans, motorhomes). In the 1980's, vehicle production increased as Pontiac West became one of GM's plants building compact pickups and SUVs. Production ended in 1994. Entire property sold to M1 Concourse in 2014. |- |&nbsp;||Pontiac Foundry||[[w:Pontiac, Michigan|Pontiac, Michigan]]||United States||[[w:Casting|Iron castings]] of engine parts. ||1927||1987||Was part of GM's Central Foundry Division. Was Plant 6 of Pontiac's Assembly complex in Pontiac, Michigan. Demolished in 1995. A U.S. Postal Service distribution center now occupies the approximate area where the foundry used to be. |- |&nbsp;||[[w:Regina Plant|Regina Plant]]||[[w:Regina, Saskatchewan|Regina, Saskatchewan]]||[[w:Canada|Canada]] |[[w:Chevrolet|Chevrolet]] cars & trucks, Maple Leaf trucks, [[w:Pontiac (automobile)|Pontiac]], [[w:Oldsmobile|Oldsmobile]], [[w:Buick|Buick]] |1928||1941||Factory office building is located at 1102 8th Avenue while the factory building is behind the office building stretching down Winnipeg Street down to 6th Ave. Production began on Dec. 11, 1928. Production halted in August 1930, restarted in March 1931, then halted again a few months later in 1931. Production restarted in December 1937. In 1941, taken over by the [[w:Government of Canada|Government of Canada]] to produce munitions for World War II as Regina Industries Limited. Auto production never resumed and the property was used by the Canadian Department of National Defense until the mid-1960s. Sold to the Saskatchewan provincial govt. in 1967 and then the Regina city govt. in 1987. Was used by both public- and private-sector tenants. Damaged by a fire on May 3, 2017. In 2020, the City of Regina decommissioned the building and all the tenants were required to move out. Buildings are still standing and have been used by a variety of businesses and organizations. You can still see "GMC" carved in stone above the front entrance to the office building. Office building is designated a Heritage Inventory Property by city of Regina. A related building is down the block at 1260 8th Avenue at the corner of Toronto Street. After the factory closed in 1941, GM still used this building for its regional administrative and parts distribution operations until it moved in 1967. |- |&nbsp;||[[w:GMC (marque)#History|Reliance Motor Truck Co.]]||[[w:Owosso, Michigan|Owosso]], [[w:Michigan|Michigan]]||United States||Reliance trucks (1909-1912)<br> GMC trucks (heavy duty models) (1912-1913)||1909||1913||Plant was located on Michigan Ave. In late 1908, GM bought Reliance Motor Car Co. and reorganized it as Reliance Motor Truck Co. Reliance truck production moved here from Detroit in 1909. In February 1912, the GMC brand replaced the Reliance brand as well as the Rapid brand. In 1913, production was consolidated at the Rapid Street plant of the former Rapid Motor Vehicle Co. in Pontiac, Michigan and the Owosso plant was sold. Plant was later used by American Malleables and later by Mid-West Abrasive Co., a maker of sandpaper. Plant was later extended to S. Washington St. |- |&nbsp;||Saab [[w:Gothenburg|Gothenburg]] Transmission||[[w:Gothenburg|Gothenburg]]||[[w:Sweden|Sweden]]||Pre-GM era:<br />[[w:Saab two-stroke|Saab two-stroke]]<br />GM era:<br />Saab 99/900 manual transmission<br />[[w:F35 transmission|F35 transmission]]<br />[[w:GM F40 transmission|GM F40 transmission]] ||1989||2009||Saab plant. Opened in 1953. Engine production ended in 1968. GM bought 50% of [[w:Saab Automobile|Saab Automobile]] in 1989 & the other 50% in 2000. Transmission production ended when the 1st gen. 9-5 ended production. GM sold [[w:Saab Automobile|Saab Automobile]] to [[w:Spyker Cars|Spyker Cars]] in February, 2010. |- |&nbsp;||Saab [[w:Sodertalje|Sodertalje]] Engine||[[w:Sodertalje|Sodertalje]]||[[w:Sweden|Sweden]]||Pre-GM era:<br />[[w:Saab B engine|Saab B engine]]<br />GM era:<br />[[w:Saab H engine|Saab H engine]] ||1989||2007||Saab plant. Opened in 1972. GM bought 50% of [[w:Saab Automobile|Saab Automobile]] in 1989 & the other 50% in 2000. Engine plant sold to [[w:Scania AB|Scania AB]] in 2007. GM sold [[w:Saab Automobile|Saab Automobile]] to [[w:Spyker Cars|Spyker Cars]] in February, 2010. |- |1,2,3,4,8||Saab [[w:Trollhättan Assembly|Trollhättan Assembly]]||[[w:Trollhättan|Trollhättan]]||[[w:Sweden|Sweden]]||Pre-GM era:<br />[[w:Saab 92|Saab 92]]<br />[[w:Saab 93|Saab 93]]<br />[[w:Saab 95|Saab 95]]<br />[[w:Saab 96|Saab 96]]<br />[[w:Saab 99|Saab 99]]<br />GM era:<br />[[w:Saab 900|Saab 900]]<br />[[w:Saab 9000|Saab 9000]]<br />[[w:Saab 9-3|Saab 9-3]]<br />[[w:Saab 9-5|Saab 9-5]]<br />[[w:Cadillac BLS|Cadillac BLS]]||1989||2010||Saab plant. Opened in 1947. Also did engine (Saab two-stroke) & transmission production until 1953 when it was relocated to the Gothenburg plant. GM bought 50% of [[w:Saab Automobile|Saab Automobile]] in 1989 & the other 50% in 2000. Saab also built the 9-3 based BLS for Cadillac. The BLS was not sold in the US or Canada. GM sold [[w:Saab Automobile|Saab Automobile]] to [[w:Spyker Cars|Spyker Cars]] in February, 2010. |- |&nbsp;||Saginaw Malleable Iron||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||&nbsp;||1919||2007|| Located at 77 W. Center St. Iron castings. HQ of Central Foundry Division. In 1919, Saginaw Malleable Iron and Central Foundry merged with the Jacox division into GM's Saginaw Products Company. In 1928, became the Saginaw Malleable Iron division of GM. Closed in 2007, demolished in 2010. Converted into a park. |- |&nbsp;||Saginaw Nodular Iron||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||Steering knuckles, crankshafts, disc brake caliper housings, exhaust manifolds, flywheels, differential carriers, clutch pressure plates||1967||1988|| Located at 2100 Veterans Memorial Parkway. Straddles the City of Saginaw-Buena Vista Township border. Iron castings. Closed in 1988. Later demolished. |- |&nbsp;||Saginaw Parts||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||&nbsp;||1909||1983|| Located on corner of 6th & Washington Avenues. Opened in 1907 to build the 1908 Rainier. Bought by GM in 1909 as part of its purchase of [[w:Rainier Motor Car Company|Rainier Motor Car Company]]. Reorganized into the [[w:Marquette (automobile)#Company|Marquette Motor Co.]] which still made Rainier brand cars through 1911 as well as parts for Welch and Welch-Detroit cars. In 1912, the Rainier brand was replaced by the Marquette brand, which was said to be a combination of the previous Rainier and Welch-Detroit brands. In February 1912, the company was renamed Peninsular Motor Co. Some late production cars seem to have been badged as Peninsular. All of those activities ended at the end of 1912. In 1917, during World War I, the plant was reopened and used to manufacture mortar shells for the US Ordnance Corps. In 1919, became part of the Saginaw Products Company with this plant becoming the Saginaw Products Company Motor Plant. From 1919-1922, the plant made [[w:Chevrolet Inline-4 engine#224|OHV I4]] engines for [[w:Chevrolet Series FB|Chevrolet Series FB]] and [[w:Oldsmobile Model 43|Oldsmobile Model 43A]]. It was then used as a warehouse. From 1935, it made all different types of auto parts and service parts as Chevrolet Saginaw Service Parts Plant or from 1969, Chevrolet Saginaw Parts Plant. Closed in 1983, demolished in 1984. |- |&nbsp;||Saginaw Steering Gear - Plant 1||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||Steering components||1910||1984||Located on 628 North Hamilton St. Originally founded as the Jackson, Church and Wilcox Company (Jacox) in 1906. Bought by GM in 1910. Became the Jackson-Church-Wilcox or Jacox division of GM. In 1919, the Jacox division merged with Saginaw Malleable Iron and Central Foundry into GM's Saginaw Products Company. Became the Saginaw Steering Gear Division in 1928. Closed in 1984. Sold in 1987 to Thomson Industries. Still operates today as Thomson Aerospace & Defense, a brand of Linear Motion LLC, which is owned by the Umbra Group of Italy. |- |&nbsp;||Saginaw Steering Gear - Plant 2||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||Steering Gears, pump hoses||1941||2001||Located at 1400 Holmes Street. Affectionately known as "The Gun Plant", it was built in 1941 when the division was contracted to build M1919 machine guns, and M1-Carbines for World War II. After the war, normal steering gear production continued until its closure in 2001. It was demolished in 2002. |- |&nbsp;||Saginaw Steering Gear complex||[[w:Buena Vista Township, Michigan|Buena Vista Township, Michigan]]||United States|| Complete Hydraulic and Electric Power Steering Systems, Halfshafts, Intermediate Drive Shafts||1953||2010||Located at 3900 E. Holland Road. Former Saginaw Steering Gear Division of GM. Saginaw Steering Gear Division renamed Saginaw Division in 1985. Grouped under Delphi Automotive Systems in 1995. Plant 3 opened in 1953, Plant 4 opened in 1956. The sprawling Five-Plant complex (Plants 3-7), division Headquarters and large engineering center, were spun off with Delphi in 1999. GM repurchased the Delphi Steering division from bankrupt Delphi in 2009, renaming it Nexteer Automotive, and then sold the division to [[w:Pacific Century Motors|Pacific Century Motors]] in 2010. The former GM Division now operates as "[[w:Nexteer Automotive|Nexteer Automotive]]", an independent company headquartered at the Saginaw site. Nexteer moved its headquarters to Auburn Hills in 2015. |- |&nbsp;||Saginaw Steering Gear Overseas Corp.||[[w:Hendon|Hendon]], [[w:England|England]]||United Kingdom|| Steering columns, Steering column components (jacket & bracket assemblies), Vacuum pumps, EGR valves||1970 (auto parts)||?||Located on Capitol Way in The Capitol Industrial Park. Originally opened in 1924 as a vehicle assembly plant making Chevrolets (See listing for "GM Ltd."). When Chevrolet production was moved to Luton in 1930, Hendon was used for parts distribution. Later, Frigidaire made appliances at Hendon. In 1970, Hendon began producing steering columns. In 1971, more automotive components began to be produced in place of Frigidaire appliances. In 1979, Hendon became aligned with Saginaw Steering Gear in the US. In 1980, GM sold the Hendon site for redevelopment but leased back an area for construction of a new plant for Saginaw Steering Gear. The new plant opened in 1981. In 1982, GM Ltd. was dissolved and the Hendon plant became part of Saginaw Steering Gear Overseas Corp., part of GM Overseas Corp. |- |&nbsp;||Saginaw Transmission||[[w:Saginaw, Michigan|Saginaw, Michigan]]||United States||Manual Transmissions, Brakes||1921||1999||Located at 2328 E. Genesee Ave. Built 1919–20 for the Michigan Crankshaft Company (originally founded as National Engineering Company), acquired by GM in 1921 and placed under Saginaw Products Company. In 1928, became the Saginaw Crankshaft Division of GM. Transferred to Chevrolet upon the dissolution of the Crankshaft Division in 1931 when crankshaft manufacturing was turned over to the car divisions. Made the "Saginaw" 3 and 4-Speed manual transmissions. It was spun off as part of Delphi in 1999. The plant was sold to [[w:TRW Automotive|TRW Automotive]] in 2007. TRW used the plant to produces brake and suspension components (known as TRW Braking and Suspension). TRW closed this plant in 2014. |- |4||[[w:Scarborough Van Assembly|Scarborough Van Plant]]||[[w:Scarborough, Toronto|Scarborough]], [[w:Ontario|Ontario]]||[[w:Canada|Canada]]||[[w:Chevrolet Van#Third generation (1971–1996)|Chevrolet Van]] (1974-1993)<br />[[w:GMC Vandura#Third generation (1971–1996)|GMC Vandura]] (1974-1993)<br />[[w:Chevrolet Sportvan#Third generation (1971–1996)|Chevrolet Sportvan]] (1974-1993)<br />[[w:GMC Vandura#Third generation (1971–1996)|GMC Rally Van]] (1974-1993)<br />||1952<br><br>1974 (Vehicle production)||1993||Located at 1901 Eglinton Avenue East. Originally a [[w:Frigidaire|Frigidaire]] home appliance plant through 1970. In 1960, production of automotive components was added. Production included radios, instrument clusters, horns, shock absorbers, and propshafts. After Frigidaire production ended in 1970, only auto parts were made and the plant name was changed from Frigidaire Products of Canada to Delco Canada. Auto parts production ended in 1973 and the plant was expanded and converted to build full-size vans and renamed Scarborough Van Plant. First van produced on May 23, 1974 (a 1974 Chevy Van 10). After van production began, plant was expanded 5 times over the years. Cutaway production was added for 1975, halted in 1978, and resumed in 1980. One millionth van produced in January 1986 (a GMC model). Closed on May 6, 1993 and operations moved to [[w:Flint Truck Assembly|Flint Truck Assembly]]. Scarborough produced 1,626,313 vans from 1974-1993. Plant demolished and now site of Eglinton Town Centre and Comstock Bus Garage at the southern end of the property. |- |&nbsp;||[[w:Scripps-Booth|Scripps-Booth]]||[[w:Detroit, Michigan|Detroit]], [[w:Michigan|Michigan]]||United States||Scripps-Booth automobiles||1918||1922||Taken over by Chevrolet by the end of 1917 before Chevrolet was part of GM. When Chevrolet became part of GM, Scripps-Booth became part of GM as well. Scripps-Booth then adopted an Oakland chassis and a Northway six-cylinder engine, using parts from other GM divisions. However, a place could not be found for Scripps-Booth in GM's lineup, so GM closed it down in 1922. |- |8||[[w:Shreveport Operations|Shreveport Operations]]||[[w:Shreveport, Louisiana|Shreveport, Louisiana]]||United States||[[w:Chevrolet Colorado#First generation (2004)|Chevrolet Colorado]] (2004-2012)<br />[[w:Chevrolet Colorado#First generation (2004)|GMC Canyon]] (2004-2012)<br />[[w:Hummer H3|Hummer H3]] (2006-2010)<br />[[w:Hummer H3#H3T|Hummer H3T]] (2009-2010)<br />[[w:Chevrolet Colorado#Isuzu i-series|Isuzu i-series]] pickup (2006-2008)||1981||2012||Located at 7600 General Motors Blvd. General Motors Blvd. was renamed Antoine Blvd. in 2013. A portion of the complex is now used by Glovis America, a Hyundai Automotive Group subsidiary, for a vehicle logistics and processing center for Hyundai and Kia vehicles. <br />Past models: <br> [[w:Chevrolet S-10 |Chevrolet S-10]] (1982-03), [[w:Chevrolet S-10 EV|Chevrolet S-10 EV]] (1997-1998),<br /> [[w:Chevrolet S-10 Blazer#First generation (1983–1994)|Chevrolet S-10 Blazer]] (1983-1991 2-d),<br /> [[w:GMC S-15|GMC S-15]] (1982-1990), [[w:GMC Sonoma|GMC Sonoma]] (1991-03), [[w:GMC Syclone|GMC Syclone]] (1991),<br /> [[w:Chevrolet S-10 Blazer#First generation (1983–1994)|GMC S-15 Jimmy]] (1983-1991 2-d),<br /> [[w:Isuzu Hombre|Isuzu Hombre]] (1996-'00) |- |A||[[w:General Motors South Africa|General Motors South Africa]] Darling Street & Kempston Road plants||[[w:Port Elizabeth, South Africa|Port Elizabeth]]||[[w:South Africa|South Africa]]||[[w:Acadian (automobile)|Acadian]] (from CKD kits supplied from Oshawa and Willow Run)<br />[[w:Beaumont (automobile)|Acadian Beaumont & Beaumont]] (from CKD kits supplied from Oshawa 1966-69)<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Opel Ascona#Export models|Chevrolet Ascona]]<br />[[w:Chevrolet Caprice|Chevrolet Caprice]]<br />[[w:Statesman (automobile)#HJ|Chevrolet Caprice Classic]]<br />[[w:Chevrolet Constantia|Chevrolet Constantia]]<br />[[w:Chevrolet Corvair|Chevrolet Corvair]] (from CKD kits supplied from Oshawa)<br />[[w:Chevrolet Chevair|Chevrolet Chevair]]<br />[[w:Chevrolet Chevelle|Chevrolet Chevelle]]/[[w:Chevrolet Malibu|Chevrolet Malibu]]<br />[[w:Chevrolet Chevy II/Nova|Chevrolet Chevy II/Nova]]<br /> [[w:Chevrolet Nomad#South Africa production (GMSA)|Chevrolet Nomad]]<br /> [[w:Statesman (automobile)#HQ|Chevrolet De Ville]]<br />[[w:Holden HK#South Africa|Chevrolet El Camino<br />Chevrolet El Toro]]<br />[[w:Chevrolet Impala|Chevrolet Impala]]<br />[[w:Holden HK#South Africa|Chevrolet Kommando]]<br />[[w:Chevrolet LUV|Chevrolet LUV]]<br />[[w:Holden EK|Holden EK]]<br />[[w:Holden EJ|Holden EJ]]<br />[[w:Holden EH|Holden EH]]<br />[[w:Holden HD|Holden HD]]<br />[[w:Holden HR|Holden HR]]<br />[[w:Holden Monaro#Export program|Holden Monaro (HT)/Chevrolet SS (HG)]]<br />[[w:Pontiac Parisienne|Pontiac Parisienne]]<br />[[w:Vauxhall Viva#South Africa|Chevrolet Firenza/1300/1900]]<br />[[w:Opel Rekord Series D#ZA|Chevrolet 2500, 3800, 4100]]<br />[[w:Opel Rekord Series E#Chevrolet Rekord|Chevrolet Rekord]]<br />[[w:Opel Ascona#Ascona C (1981–1988)|Opel Ascona C]]<br />[[w:Opel Kadett A|Opel Kadett A]]<br />[[w:Opel Kadett B|Opel Kadett B]]<br />[[w:Opel Kadett#Kadett D (1979–1984)|Opel Kadett D]]<br />[[w:Opel Kadett#Kadett E (1984–1995)|Opel Kadett E/Monza]]<br />[[w:Opel Astra#F|Opel Kadett F]]<br />[[w:Opel Astra#G|Opel Astra G]]<br />[[w:Opel Corsa#Corsa B (S93; 1993)|Opel Corsa B/Corsa Lite]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Vauxhall Cresta|Vauxhall Cresta]]<br />[[w:Vauxhall Velox|Vauxhall Velox]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viscount|Vauxhall Viscount]]<br />[[w:Vauxhall Viva#Other markets|Vauxhall Viva]]<br />[[w:Isuzu F-Series|Isuzu F-Series]]<br />[[w:Isuzu N-Series|Isuzu N-Series]]<br /> [[w:Isuzu Faster|Isuzu KB]]<br />[[w:Isuzu D-Max|Isuzu KB (D-Max based)]]<br />||1926 (Darling Street)<br />1928 (Kempston Road)||1929 (Darling Street)<br />2017||Also assembled in the pre-WWII era: <br />[[w:Chevrolet|Chevrolet]]<br />[[w:Pontiac (automobile)|Pontiac]]<br />[[w:Oakland (automobile)|Oakland]]<br />[[w:Oldsmobile|Oldsmobile]]<br />[[w:Buick|Buick]]<br />[[w:LaSalle (automobile)|LaSalle]]<br />[[w:Cadillac|Cadillac]]<br />[[w:GMC (automobile)|GMC]]<br />[[w:Vauxhall Motors|Vauxhall]]<br />[[w:Bedford Vehicles|Bedford]]<br />[[w:Opel|Opel]]<br />[[w:Frigidaire|Frigidaire]] appliances. Also built the [[w:Ranger (automobile)#South Africa|Ranger]]. GM sold the factory to Isuzu in 2017 and left the South African market. Isuzu consolidated its commercial truck production in the Struandale plant which already built Isuzu pickups and the Kempston Road plant ended production on Nov. 30, 2018. |- |4||[[w:General Motors South Africa|General Motors South Africa]] Struandale plant||[[w:Port Elizabeth, South Africa|Port Elizabeth]]||[[w:South Africa|South Africa]]||[[w:Chevrolet Spark#Africa|Chevrolet Spark (M300)]]<br />[[w:Opel Corsa#Corsa C (X01; 2000)|Opel Corsa C]]<br />[[w:Chevrolet Montana#South Africa|Opel Corsa Utility/Chevrolet Utility]]<br />[[w:Hummer H3|Hummer H3]]<br />[[w:Isuzu D-Max#Second generation (RT; 2011)|Isuzu KB]]<br />||1996||2017||Struandale was originally a Ford plant opened in 1973 which GM South Africa bought during the time it was known as Delta Motor Corp. in 1994. GM sold the factory to Isuzu in 2017 and left the South African market. Struandale absorbed Isuzu pickup production beginning with the 2nd generation D-Max around 2013 & Isuzu commercial truck ([[w:Isuzu F-Series|Isuzu F-Series]] & [[w:Isuzu N-Series|Isuzu N-Series]]) production in Jan. 2019. Isuzu KB was renamed D-Max in South Africa in 2018, aligning with the rest of the world. |- |&nbsp;||[[w:General Motors South Africa|General Motors South Africa]] Engine plant - Aloes||[[w:Port Elizabeth, South Africa|Port Elizabeth]]||[[w:South Africa|South Africa]]||[[w:Chevrolet 153 4-cylinder engine|Chevrolet 153 4-cylinder engine]]<br />[[w:Chevrolet Turbo-Thrift engine|Chevrolet Turbo-Thrift inline-6]]<br />[[w:Vauxhall Viva|Vauxhall Viva]] inline-4||1966||1999?|| |- |C (1965-1982)<br /><br /> U (1964 [[w:Chevrolet|Chevrolet]])<br /><br />S (1960-1964 [[w:Pontiac (automobile)|Pontiac]])<br /><br />C (1937-1964 [[w:Oldsmobile|Oldsmobile]] and 1936-1959 [[w:Pontiac (automobile)|Pontiac]])<br /><br />2 (1938-1964 <br> [[w:Buick|Buick]]) ||[[w:South Gate Assembly|South Gate Assembly]]||[[w:South Gate, California|South Gate, California]]||United States||[[w:Chevrolet Cavalier|Chevrolet Cavalier]] (1982) <br /> [[w:Cadillac Cimarron|Cadillac Cimarron]] (1982)||1936||1982|| Located at 2700 Tweedy Blvd. South Gate Assembly was the 1st GM multi-brand assembly plant, assembling Buick, Oldsmobile, and Pontiac models. The first finished cars were produced in May 1936. It was operated by GM's Southern California Division through 1943. Automobile production ended in Feb. 1942. During WWII, it produced the M5 and M5A1 Stuart tanks from July 1942-August 1943 in cooperation with Cadillac Division which held the contract to build the tank. It also provided a proof range for Army Ordnance to test various types of machine gun and cannon shells. Space was also provided for Army Ordnance to modify M4 medium tanks. Also built were gun shields and deck houses for the Navy. When M5A1 production ceased in August 1943, the plant was leased to Douglas Aircraft Co. until the end of the war for aircraft parts production. After the war ended, in 1945, Southgate & Linden were both placed in a new division called the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. South Gate began making Chevrolet full-size cars for 1964. BOP Assembly Division became GM Assembly Division in 1965. South Gate was converted to build H-body small cars like the Vega for 1975 but the plant was switched back to full-size cars for 1977, building Chevy, Oldsmobile, & Buick B-bodies. In 1979, South Gate Assembly became the second plant (the 1st was Linden, NJ in 1971) outside Cadillac's home plant in Detroit to assemble Cadillacs when it began to assemble C-body Cadillacs like the DeVille instead of Oldsmobile & Buick B-bodies. The plant was then idled in March 1980. It was again switched to build small cars for 1982, this time the J-body. Slow sales and efforts to reduce air quality issues resulted in plant closure, with production ending on March 23, 1982. Plant demolished and site used for 3 new schools for L.A. School District and the South Gate Industrial and Business Park at the southern end of the property.<br /> Unibody B-O-P "Y"-body [[w:Buick Special#1961–1963|Buick Special]]/[[w:Buick Skylark#First generation (1961–1963)|Buick Skylark]] (1962-1963), [[w:Oldsmobile F-85#First generation (1961)|Oldsmobile F-85/<br> Cutlass]] (1962-1963), [[w:Pontiac Tempest#First generation (1961–1963)|Pontiac Tempest]]/[[w:Pontiac LeMans#First generation (1961–1963)|Pontiac LeMans]] (1962-1963) added to B-& C-body mix 1961-63; replaced by [[w:General Motors B platform|Chevrolet B-body]] for 1964; [[w:GM H platform (RWD)|GM H platform (RWD)]]: [[w:Chevrolet Vega|Chevrolet Vega]] (1975), [[w:Chevrolet Monza|Chevrolet Monza]] (1975-1976), [[w:Pontiac Astre|Pontiac Astre]] (1975), [[w:Pontiac Sunbird#First generation (1976–1980)|Pontiac Sunbird]] (1976), [[w:Oldsmobile Starfire#Second generation (1975–1980)|Oldsmobile Starfire]] (H-body) (1976), [[w:Buick Skyhawk#First generation (1975–1980)|Buick Skyhawk]] (1976); [[w:Buick Centurion|Buick Centurion]] (1971-1973); [[w:Buick Century|Buick Century]] (1936-1942, 1954-1958); [[w:Buick Electra|Buick Electra]] (1959-1963); [[w:Buick Estate#1970|Buick Estate]] (1970-1973); [[w:Buick Invicta|Buick Invicta]] (1959-1962); [[w:Buick LeSabre|Buick LeSabre]] (1959-1974, 1977-1978); [[w:Buick Roadmaster|Buick Roadmaster]] (1947-1949, 1953-1958); [[w:Buick Special|Buick Special]] (1936-1958); [[w:Buick Super|Buick Super]] (1940-1958); [[w:Buick Wildcat|Buick Wildcat]] (1963-1970); [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1964-1974); [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1974, 1977-80); [[w:Chevrolet Impala|Chevrolet Impala]] (1964-1974, 1977-1980); [[w:Oldsmobile 88|Oldsmobile 88]] (1949-1970, 1977-1978); [[w:Oldsmobile 98|Oldsmobile 98]] (1941-63); [[w:Oldsmobile Jetstar I|Oldsmobile Jetstar I]] (1964-1965); [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1966); [[w:Pontiac 2+2|Pontiac 2+2]] (1964-1967); [[w:Pontiac Bonneville|Pontiac Bonneville]] (1958-1970, 1972-1973); [[w:Pontiac Catalina|Pontiac Catalina]] (1959-1973); [[w:Pontiac Chieftain|Pontiac Chieftain]] (1949-1953, 1955-1958); [[w:Pontiac Executive|Pontiac Executive]] (1967-1968); [[w:Pontiac Grand Prix|Pontiac Grand Prix]] (1962-68); [[w:Pontiac Star Chief|Pontiac Star Chief]] (1955-1958, 1960, 1962, 1966); [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1960-1961); [[w:Cadillac Deville#Fifth generation (1977–1984)|Cadillac Deville]] (1979-1980). |- |&nbsp;||[[w:St. Catharines Components Plant|St. Catharines Components Plant]]||[[w:St. Catharines, Ontario|St. Catharines, Ontario]]||[[w:Canada|Canada]]||Engine components<br />Transmissions<br />Transmission components<br />Starter motors<br />Alternators<br /> Final drive assemblies<br /> Axles<br />Steering wheels<br />Steering gear<br />Shock absorbers<br />Brakes<br />Bearings<br />Horns<br />Vehicle Radios<br />Fractional horsepower motors for appliances||1929||2010||Was located at 285 Ontario Street. Originally McKinnon Dash and Metal Work Ltd., which opened this site in 1900. In 1917, the company was renamed McKinnon Industries, Ltd. Taken over by GM on March 29, 1929. In 1963, fractional horsepower motors for appliances were moved to the GM Diesel plant in London, Ontario. In 1964, vehicle radios, horns, and shocks were moved to the Scarborough plant followed by propshafts in 1966. In 1969, McKinnon Industries Ltd. was integrated into GM Canada rather than being a separate subsidiary. In 1990, the Axle Plant is officially renamed Components Plant. Permanently closed in 2010 as part of GM's restructuring plans. All operations were transferred to [[w:St. Catharines Engine Plant|St. Catharines Engine Plant]]. Some of the Components Plant was demolished in 2016 and the site will be re-developed for mixed-use residential and commercial development. |- |&nbsp;||St. Catharines Foundry||[[w:St. Catharines, Ontario|St. Catharines, Ontario]]||[[w:Canada|Canada]]||[[w:Casting|Iron casting]] of engine parts||1952||1995|| Was located at 285 Ontario Street. Operated as part of GM subsidiary McKinnon Industries, Ltd. until 1969 when it became "General Motors of Canada Limited, St. Catharines". Aligned with GM's Central Foundry Division in 1989. |- |S <br />(1952 [[w:GMC (automobile)|GMC]] and 1953-1987)<br /><br />3 <br />(1928-1952 [[w:Chevrolet|Chevrolet]])||[[w:St. Louis Truck Assembly|St. Louis Truck Assembly]]||[[w:St. Louis, Missouri|St. Louis, Missouri]]||United States ||[[w:Chevrolet C/K|Chevrolet C/K]] (1960-1986)<br />[[w:Chevrolet C/K (third generation)|GMC C/K (Rounded Line)]] (1973-1986)<br />[[w:Chevrolet C/K (third generation)#R/V-Series (1987–1991)|Chevrolet R/V]] (1987 only)<br />[[w:Chevrolet C/K (third generation)#R/V-Series (1987–1991)|GMC R/V]] (1987 only)||1920<ref>{{cite web|url=https://www.autonews.com/article/20111031/CHEVY100/310319998/built-across-the-nation|author=James B. Treece|title=Built across the nation|publisher=Autonews.com|date=October 31, 2011}}</ref>||1987||Located at 3809 N. Union Blvd. Chevrolet had previously licensed [[w:Gardner (automobile)|Gardner Buggy Co.]] to assemble its cars in St. Louis in 1915. That was replaced by Chevrolet's own St. Louis plant on Union Blvd. Built 149,135 [[w:GMC CCKW 2½-ton 6×6 truck|GMC CCKW 6x6 trucks]] & 6,748 [[w:DUKW|DUKW]] amphibious vehicles during WWII. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. St. Louis Assembly joined the GM Assembly Division in 1971. Operated 3 assembly lines: car line, truck line, and the Corvette line. 695,214 Corvettes were built from 1954-1981 in the old Fisher Body Mill Building that had been used to assemble wooden bodies in earlier years and was converted to Corvette production. First 1954 Corvette was built in St. Louis on December 28, 1953. Last Corvette built in St. Louis was built July 31, 1981. Chevy Caprice & Impala production ended on August 1, 1980 and the main car line closed down. Was a Truck and Bus Group plant from 1982, only making full-size pickups. Closed August 7, 1987. The second-to-last vehicle produced was a GMC R1500 regular cab, long bed pickup while the last vehicle produced was a Chevy pickup. The old Fisher Body Mill Building where Corvettes were built was demolished in 1992. Some of the main assembly facility was demolished and the remainder was renovated to become the Union Seventy Center. The remainder of the site, roughly 118 acres, was demolished and replaced with trees, grass, a pond, & new access roads. Property is now the Union Seventy Center, an industrial warehouse and distribution campus used by several different tenants. <br />[[w:Chevrolet Series 490|Chevrolet Series 490]]<br /> [[w:Chevrolet Superior|Chevrolet Superior]]<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]], [[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Stylemaster|Chevrolet Stylemaster]], [[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]], <br />[[w:Chevrolet 150|Chevrolet 150]] (1953-1957), [[w:Chevrolet 210|Chevrolet 210]] (1953-1957), [[w:Chevrolet AK Series|Chevrolet AK Series]], [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1970), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1970), [[w:Chevrolet K5 Blazer#1969–1972|Chevrolet K5 Blazer]] (1969-1972), [[w:Chevrolet Corvair|Chevrolet Corvair Forward Control]] (1961-1965), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1980), [[w:Chevrolet Corvette|Chevrolet Corvette]] (1954-1981), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet El Camino#First generation (1959–1960)|Chevrolet El Camino]] (1959-1960), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1980), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Chevrolet Suburban|Chevrolet Suburban]] (1956, 1959, 1963-1967), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:Chevrolet C/K (second generation)|GMC C/K (Action Line)]] (1967-1972), [[w:Chevrolet K5 Blazer#1969–1972|GMC Jimmy]] (1970-1972), [[w:GMC New Design|GMC New Design]] (1953-1954), [[w:GMC Suburban|GMC Suburban]] (1947-1955, 1967-1972) |- |2||[[w:Sainte-Thérèse Assembly|Ste. Thérèse Assembly]]||[[w:Boisbriand, Quebec|Boisbriand, Quebec]]||[[w:Canada|Canada]]||[[w:Chevrolet Camaro (fourth generation)|Chevrolet Camaro]] (1993-2002)<br />[[w:Pontiac Firebird#Fourth generation (1993–2002)|Pontiac Firebird]] (1993-2002)||1966||2002||Located at 2500 Boulevard De la Grande-Allée. <br />Past models:<br> [[w:Chevrolet Celebrity|Chevrolet Celebrity]] (1987-90)<br />[[w:Oldsmobile Cutlass Ciera|Oldsmobile Cutlass Ciera]] (1988-1991)<br />[[w:Oldsmobile Cutlass#Fifth-generation (intermediate) 1978–1988|Oldsmobile Cutlass/Cutlass Supreme]] (1978-1987)<br />[[w:Oldsmobile 442|Oldsmobile Cutlass 442]] (1979)<br />[[w:Pontiac Bonneville#Seventh generation (1982–1986)|Pontiac Bonneville]] (1983-86)<br />[[w:Pontiac Grand Prix#Fifth generation (1978–1987)|Pontiac Grand Prix]] (1978-1981, 1983-1987)<br />[[w:Pontiac Grand Prix#1986|Pontiac Grand Prix 2+2]] (1986)<br />[[w:Chevrolet Vega|Chevrolet Vega]] (1973-1974)<br />[[w:Pontiac Astre|Pontiac Astre]] (1973-1974)<br />[[w:Chevrolet Monza|Chevrolet Monza]] (1975-1977)<br />[[w:Pontiac Sunbird#First generation (1976–1980)|Pontiac Sunbird]] (1977)<br />[[w:Oldsmobile Starfire#Second generation (1975–1980)|Oldsmobile Starfire]] (1975-77)<br />[[w:Buick Skyhawk#First generation (1975–1980)|Buick Skyhawk]] (1975-1977)<br />[[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1967-1970)<br />[[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1967-70)<br />[[w:Chevrolet Impala|Chevrolet Impala]] (1967-1970)<br />[[w:Chevrolet Caprice|Chevrolet Caprice]] (1967-1970)<br />[[w:Pontiac Catalina|Pontiac Catalina]] (1970-1972)<br /> [[w:Pontiac Grand Ville|Pontiac Grand Ville]] (1971). Plant demolished and site re-developed as a commercial and residential site known as Faubourg Boisbriand and the Centre for Sports Excellence. |- |&nbsp;||Strasbourg Transmission||[[w:Strasbourg|Strasbourg]]||[[w:France|France]]||[[w:GM 6L50 transmission|6L45/6L50]] 6-speed RWD automatic transmissions||1968||2013||Past products: [[w:GM 5L40-E transmission|5L40]], [[w:GM 4L30-E transmission|4L30]], [[w:Turbo-Hydramatic 180|TH180/3L30]] RWD automatic transmissions Also supplied 4-, 5-, & 6-speed RWD auto. transmissions to [[w:BMW|BMW]].<br /> Also supplied 3-speed RWD auto. transmissions to Fiat, Peugeot ([[w:Peugeot 604|604]]), & Rover ([[w:Rover SD1|SD1]]). Sold to Punch Metals International in 2013, which renamed the unit as Punch Powerglide Strasbourg.<ref>{{Cite web|url=https://gmauthority.com/blog/2012/12/general-motors-sells-strasbourg-plant-to-punch-metals-international/|title = General Motors Sells Strasbourg Plant to Punch Metals International|author=Alex Luft|publisher=GMAuthority.com|date = 22 December 2012}}</ref> In 2014, Punch Powerglide Strasbourg began producing [[w:ZF 8HP transmission|8HP 8-speed automatic transmissions]] for [[w:ZF Friedrichshafen|ZF Friedrichshafen]] in addition to the GM 6L50 6-speed automatic transmission. In 2023, Punch Powerglide Strasbourg was renamed Dumarey Powerglide Strasbourg. |- |&nbsp;||General Motors Suisse AG||[[w:Biel|Biel]]||[[w:Switzerland|Switzerland]]||[[w:Chevrolet|Chevrolet]] 1936-1941, 1946-1968<ref>{{cite web|title=What's Wrong With This Picture? And What's Very Right With the Other Ones? They Do Things a Bit Differently In Switzerland|date=15 August 2020 |at=see 20th comment down from 8-15-20 5:59 pm|url=https://www.curbsideclassic.com/blog/qotd/whats-wrong-with-this-picture-and-whats-very-right-with-the-other-ones-they-do-things-a-bit-differently-in-switzerland/}}</ref><br />[[w:Pontiac (automobile)|Pontiac]] 1937-1939, 1946-1959 (None produced in 1955-1956)<br />[[w:Oldsmobile|Oldsmobile]] 1936-1940, 1947-1958<br />[[w:Buick|Buick]] 1936-1940, 1946-1958<br />[[w:LaSalle (automobile)|LaSalle]] 1936 <br />[[w:Cadillac|Cadillac]] 1938-1940<br />[[w:Opel|Opel]] 1936-1941, 1950-1975<br />[[w:Vauxhall Motors|Vauxhall]] 1936-1940, 1946-1971<br />[[w:Ranger (automobile)#Europe|Ranger]] 1970-1975 ||1936||1975|| First car off the line was a [[w:Buick Series 40|Buick Model 41]] on February 5, 1936. Other prewar cars built include the [[w:Buick Series 90|Buick Series 90]] & [[w:Opel P4|Opel P4]]. GM rented the factory from the city council until they bought it on Feb. 20, 1947. Closed August 14, 1975. Last car was an [[w:Opel Rekord D|Opel Rekord D]]. A total of 329,864 cars were assembled. Regular as well as customized vehicles in small series were made like drawing vehicles for the [[w:Swiss Armed Forces|Swiss Armed Forces]]: An open 6-seater [[w:Chevrolet|Chevrolet]] Platform combined with an Opel 2.5L I-6 cylinder; after World War II those "Swiss" cars were also offered to the public as limousines. As well, GM produced luxury upgraded vehicles for the European market like the [[w:Opel Kapitän|Opel Kapitän]], [[w:Opel Rekord P1#Swiss assembly|Rekord]] "Ascona Edition", and the Kadett-based [[w:Opel Kadett B#Opel Ascona (modified Kadett B assembled in Biel, Switzerland)|Opel Ascona 1700]] up to the early 1970s. The [[w:Ranger (automobile)#Europe|Ranger]] was invented by using [[w:Vauxhall Motors|Vauxhall]] structures on an [[w:Opel Rekord C|Opel Rekord C]] body. Also built the first generation [[w:Chevrolet Camaro (first generation)|Chevrolet Camaro]], [[w:Chevrolet Chevelle|Chevrolet Chevelle]], [[w:Chevrolet Chevy II / Nova|Chevrolet Chevy II / Nova]], & the [[w:Chevrolet Corvair|Chevrolet Corvair]] (from CKD kits supplied from Oshawa). Also built the [[w:Vauxhall Victor|Vauxhall Victor]] and the special Victor Riviera as well as the [[w:Vauxhall Cresta|Vauxhall Cresta]] and [[w:Vauxhall Viscount|Vauxhall Viscount]]. Afterwards the plant was used as GM's European central spare parts warehouse until 1992. Most buildings still exist, they now house a [[w:Coop (Switzerland)|Coop]] mall. &nbsp; |- |T||[[w:General Motors India|Talegaon]]||[[w:Talegaon|Talegaon]], [[w:Pune district|Pune district]], [[w:Maharashtra|Maharashtra]]||[[w:India|India]]||[[w:Chevrolet Spark|Chevrolet Spark]]<br />[[w:Chevrolet Beat|Chevrolet Beat]]<br />[[w:Chevrolet Sail#Second generation (2010)|Chevrolet Sail U-VA]] (hatchback)<br />[[w:Chevrolet Sail|Chevrolet Sail]]||2008||2020||Part of [[w:General Motors India|GM India]]. Production began in September 2008. Closed December 24, 2020. Sold to [[w:Hyundai Motor India|Hyundai Motor India]] in January 2024. |- |T (1953-1996)<br /><br />2 (1928-1952 [[w:Chevrolet|Chevrolet]])||[[w:North Tarrytown Assembly|North Tarrytown Assembly]]||[[w:Sleepy Hollow, New York|North Tarrytown, New York]]||United States||Past models:<br />[[w:Chevrolet 490|Chevrolet 490]]<br />[[w:Chevrolet Superior|Chevrolet Superior]]<br />[[w:Chevrolet Series AA Capitol|Chevrolet Series AA Capitol]]<br />[[w:Chevrolet Series AB National|Chevrolet Series AB National]]<br />[[w:Chevrolet Series AC International|Chevrolet Series AC International]]<br />[[w:Chevrolet Series AD Universal|Chevrolet Series AD Universal]]<br />[[w:Chevrolet Series AE Independence|Chevrolet Series AE Independence]]<br />[[w:Chevrolet Series BA Confederate|Chevrolet Series BA Confederate]]<br />[[w:Chevrolet Standard Six|Chevrolet Standard Six]]<br />[[w:Chevrolet Series CA Eagle / Master|Chevrolet Series CA Eagle / Master]]<br />[[w:Chevrolet Master|Chevrolet Master]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Stylemaster|Chevrolet Stylemaster]]<br /> [[w:Chevrolet Fleetmaster|Chevrolet Fleetmaster]]<br />[[w:Chevrolet AK Series|Chevrolet AK Series]]<br />[[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1947-1955)<br />[[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959) <br />[[w:Chevrolet C/K (first generation)|Chevrolet C/K (Gen.1)]] (1960-1966)<br />[[w:Chevrolet C/K (second generation)|Chevrolet C/K (Action Line)]] (1967-1972)<br />[[w:Chevrolet 150|Chevrolet 150]] (1953-1957)<br />[[w:Chevrolet 210|Chevrolet 210]] (1953-1957)<br /> [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1974)<br />[[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1970)<br />[[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1974)<br />[[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958)<br />[[w:Chevrolet Impala|Chevrolet Impala]] (1958-1974)<br />[[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957)<br />[[w:Chevrolet Suburban|Chevrolet Suburban]] (1950, 1952, 1963-1964, 1966)<br />[[w:Chevrolet C/K (second generation)|GMC C/K (Action Line)]] (1967-1972)<br />[[w:Chevrolet Nova|Chevrolet Nova]] (1975-1979)<br />[[w:Chevrolet Citation|Chevrolet Citation]] (1980-1985)<br />[[w:Pontiac Ventura#1971–1977|Pontiac Ventura]] (1975-1977)<br />[[w:Pontiac Phoenix#First generation (1977–1979)|Pontiac Phoenix (rwd X-body)]] (1978-1979)<br />[[w:Pontiac Phoenix#Second generation (1980–1984)|Pontiac Phoenix (fwd X-body)]] (1980-1984)<br />[[w:Pontiac 6000|Pontiac 6000]] (1985-1989)<br />[[w:Buick Skylark#Fourth generation (1975–1979)|Buick Skylark (rwd X-body)]] (1976-1979)<br />[[w:Buick Skylark#Fifth generation (1980–1985)|Buick Skylark (fwd X-body)]] (1980-1983)<br />[[w:Buick Century#Fifth generation (1982–1996)|Buick Century]] (1985-1989)<br />[[w:Chevrolet Lumina APV|Chevrolet Lumina APV]] (1990-1993)<br />[[w:Chevrolet Lumina Minivan|Chevrolet Lumina Minivan]] (1994-1996)<br />[[w:Pontiac Trans Sport#First generation (1990-1996)|Pontiac Trans Sport]] (1990-1996)<br />[[w:Oldsmobile Silhouette#First generation (1990–1996)|Oldsmobile Silhouette]] (1990-1996) ||1918 (as part of GM)||1996|| Located at 199 Beekman Avenue. Originally built by [[w:Mobile Company of America|Mobile Company of America]]. In 1904, plant was sold to Maxwell-Briscoe, which later became [[w:Maxwell Motor Company|Maxwell Motor Company]]. Chevrolet bought the complex in 1914, before Chevrolet was part of GM. The first Chevrolet produced in Tarrytown was the [[w:Chevrolet 490|Chevrolet 490]]. The plant became part of GM when Chevrolet became part of GM in 1918. The Fisher Body side of the plant became part of GM's Eastern Aircraft Division during World War II and assembled the wings, center section, trailing edges, motor mount, cabin, windshield, & upholstery for Avenger bombers & Wildcat fighters. Built the 50 millionth Chevrolet, a white 1963 Impala SS on June 10, 1963. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Tarrytown Assembly joined the GM Assembly Division in 1968. Passenger car production ended on Feb. 3, 1989. Plant joined Truck and Bus Group for 1990 when it was converted to build GM's new trio of fwd minivans. Plant closed in June 1996. Minivan production moved to [[w:Doraville Assembly|Doraville Assembly]] for 1997. North Tarrytown changed its name to Sleepy Hollow in December 1996. Plant was demolished. Site being redeveloped as Edge-on-Hudson, a mixed use residential/retail/office/park space. |- |H||[[w:General Motors Thailand|General Motors Thailand]] Ltd.||Pluak Daeng, [[w:Rayong province|Rayong province]]||[[w:Thailand|Thailand]]||[[w:Chevrolet Colorado|Chevrolet/Holden Colorado]] (RC/RG) <br /> [[w:Chevrolet Trailblazer (SUV)#RG|Chevrolet/Holden Trailblazer & Holden Colorado 7]] (RG)<br />[[w:Chevrolet Cruze|Chevrolet Cruze]]<br />[[w:Daewoo Lacetti|Chevrolet Optra]]<br /> [[w:Daewoo Kalos|Chevrolet Aveo]]<br /> [[w:Daewoo Winstorm|Chevrolet/Holden Captiva]]||2000||2020||Past Models:<br /> [[w:Opel Zafira#Zafira A (1999)|Opel/Vauxhall/Chevrolet Zafira]]<br /> [[w:Opel Zafira#Zafira A (1999)|Holden Zafira (TT)]]<br /> [[w:Subaru Traviq|Subaru Traviq]], [[w:Isuzu D-Max#First generation (RA, RC; 2002)|Isuzu D-Max]],<br> [[w:Alfa Romeo 156|Alfa Romeo 156]] [https://www.just-auto.com/news/thailand-gm-to-make-alfa-156-in-thailand/]<br /> Sold to [[w:Great Wall Motors|Great Wall Motors]] in 2020.<ref>{{Cite web|url=https://gmauthority.com/blog/2020/09/sale-of-gm-rayong-plant-to-great-wall-motors-confirmed/|title=Sale of GM Rayong Plant to Great Wall Motors Confirmed|author=Sam McEachern|publisher=GMAuthority.com|date=30 September 2020}}</ref> |- |&nbsp;||[[w:General Motors Thailand|General Motors Powertrain (Thailand) Ltd.]]||Pluak Daeng, [[w:Rayong province|Rayong province]]||[[w:Thailand|Thailand]]||2.5L ([[w:List of VM Motori engines#R 425 DOHC|R 425 DOHC]]) & 2.8L ([[w:List of VM Motori engines#R 428 DOHC|R 428 DOHC]] & [[w:List of VM Motori engines#A 428 DOHC|A 428 DOHC]]) turbodiesel I4 engines||2011||2020|| Sold to [[w:Great Wall Motors|Great Wall Motors]] in 2020.<ref>{{Cite web|url=https://gmauthority.com/blog/2020/09/sale-of-gm-rayong-plant-to-great-wall-motors-confirmed/|title=Sale of GM Rayong Plant to Great Wall Motors Confirmed|author=Sam McEachern|publisher=GMAuthority.com|date=30 September 2020}}</ref> |- |&nbsp;||Three Rivers||[[w:Three Rivers, Michigan|Three Rivers]], [[w:Michigan|Michigan]]||United States||Rwd Automatic transmissions, propshafts||1979||1994||Located at 1 Manufacturing Way (formerly 1 Hydramatic Drive) off W. Hoffman St. GM bought the closed plant from Continental Can Co. Part of GM St. Joseph County Operations & GM Hydramatic Division. The Hydramatic Division merged with the GM Engine Division to form GM Powertrain in 1991-1992. Sold to [[w:American Axle|American Axle & Manufacturing Inc.]] in 1994. |- |&nbsp;||[[w:Toledo Transmission|Toledo Transmission]]||[[w:Toledo, Ohio|Toledo, Ohio]]||United States||Transmissions, Gears||1916||1957||Located at 900 W. Central Ave. Acquired from Warner Gear Co. by Chevrolet in 1916 before Chevrolet was part of GM. The plant became part of GM when Chevrolet became part of GM in 1918. During WWII, produced truck transfer cases and transmissions for four- and six-wheel-drive military trucks. Replaced by the current Toledo Transmission plant on Alexis Road in 1956. A brick smokestack that says "CHEVROLET" on it is a remnant of this plant and can still be seen today at the intersection of Maplewood Ave. and Arcadia Ave. It is similar to the more famous smokestack that says "OVERLAND", a remnant of the old Willys-Overland Jeep plant, which is only a short distance away from the Chevrolet smokestack. |- |M||Toluca Assembly||[[w:Toluca|Toluca]]||[[w:Mexico|Mexico]]||[[w:Chevrolet Kodiak|Chevrolet Kodiak]]||1995<ref>{{cite news|author=Thomas H. Klier, James Rubenstein|title=Mexico’s Growing Role in the Auto Industry Under NAFTA: Who Makes What and What Goes Where|url=https://www.chicagofed.org/publications/economic-perspectives/2017/6.|publisher=Federal Reserve Bank of Chicago, Economic Perspectives, Vol. 41, No. 6|at=see table 11 and footnotes right under table 11|date=September 2017}}</ref>||2008||[[w:Chevrolet C/K|Chevrolet C/K]], [[w:Chevrolet C/K (fourth generation)#C3500HD (1991–2002)|Chevrolet/GMC C3500HD]] (US: 2001-2002), [[w:Chevrolet Silverado#First-generation Silverado / second-generation Sierra (GMT800; 1999)|Chevrolet Silverado]] |- |&nbsp;||Tonawanda Forge||[[w:Tonawanda (town), New York|Tonawanda]], [[w:New York (state)|New York]]||United States||Forged metal components||c.1950||1994||Located at 2390-2392 Kenmore Ave. Sold to [[w:American Axle|American Axle & Manufacturing Inc.]] in 1994. Closed in 2008, subsequently demolished. |- |&nbsp;||Tonawanda Foundry||[[w:Tonawanda (town), New York|Tonawanda]], [[w:New York (state)|New York]]||United States||[[w:Casting|Iron castings]] of engine parts, brake drums. ||1954||1984||Was located on River Road. Was a Chevrolet Foundry. Was part of GM's Central Foundry Division. &nbsp; |- |Z||General Motors Turkiye Ltd.||[[w:Torbali|Torbali]], [[w:Izmir Province|Izmir Province]]||[[w:Turkey|Turkey]]||[[w:Opel Vectra|Opel Vectra]] A & B||1990||2000||[[w:Adam Opel AG|Opel plant]]. Converted into a spare parts warehouse. |- |&nbsp;||[[w:Ultium#Production|Ultium Cells LLC - Lansing]]||[[w:Delta Township, Michigan|Delta Township, Michigan]]||United States||Was supposed to make Ultium lithium-ion battery cells for EV's||Was scheduled to open in late 2024 or in 2025|| || Originally owned and constructed by Ultium Cells LLC, a 50/50 joint venture between General Motors and [[w:LG Energy Solution|LG Energy Solution]]. This was supposed to be Ultium Cells' third plant but GM sold its stake in the plant to partner LG Energy Solution in 2025 before the plant opened. Located at 7111 Davis Hwy. It is adjacent to GM's Lansing Delta Township Assembly plant. |- |&nbsp;||General Motors Uruguaya SA||[[w:Sayago|Sayago]], [[w:Montevideo|Montevideo]]||[[w:Uruguay|Uruguay]]||[[w:Chevrolet|Chevrolet]]<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Bedford Vehicles|Bedford trucks]]||1962||1986|| |- |L (1953-1992)<br /><br />20 (1947-1952 [[w:Chevrolet|Chevrolet]])||[[w:Van Nuys Assembly|Van Nuys Assembly]]||[[w:Van Nuys, California|Van Nuys, California]]||United States||[[w:Chevrolet Camaro|Chevrolet Camaro]] (1967-1971, 1978-1992)<br />[[w:Pontiac Firebird|Pontiac Firebird]] (1968-1971, 1978-1992) ||1947||1992||Located at 8000 Van Nuys Blvd. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Van Nuys Assembly joined the GM Assembly Division in 1968. Demolished in 1993. Redeveloped into "The Plant", a retail and industrial complex that also includes LAPD and LAFD stations.<br />Past models: [[w:Buick Apollo|Buick Apollo]] (1973-1975), [[w:Buick Skylark#Fourth generation (1975–1979)|Buick Skylark]] (1975-1977), [[w:Chevrolet 150|Chevrolet 150]] (1953-1957), [[w:Chevrolet 210|Chevrolet 210]] (1953-1957), [[w:Chevrolet Advance Design|Chevrolet Advance Design]] (1948-1955), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1950-1969), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1958-1969), [[w:Chevrolet C/K (first generation)|Chevrolet C/K]] (1960-1966), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1969), [[w:Chevrolet Chevelle|Chevrolet Chevelle]] (1964, 1970-1972), [[w:Chevrolet Corvair|Chevrolet Corvair]] (1963, 1965-1966), [[w:Chevrolet Delray|Chevrolet Delray]] (1954-1958), [[w:Chevrolet El Camino|Chevrolet El Camino]] (1959-1960, 1964, 1970-1972), [[w:Chevrolet Impala|Chevrolet Impala]] (1958-1969), [[w:Chevrolet Monte Carlo|Chevrolet Monte Carlo]] (1970-1972), [[w:Chevrolet Nomad|Chevrolet Nomad]] (1955-1957), [[w:Chevrolet Nova|Chevrolet Nova]] (1972-1977), [[w:Chevrolet Suburban|Chevrolet Suburban]] (1952, 1955, 1959), [[w:Chevrolet Task Force|Chevrolet Task Force]] (1955-1959), [[w:GMC Sprint|GMC Sprint]] (1971-1972), [[w:Oldsmobile Omega|Oldsmobile Omega]] (1973-1977), [[w:Pontiac GTO#Fourth generation|Pontiac GTO]] (1974), [[w:Pontiac Ventura#1971–1977 X-body compact|Pontiac Ventura]] (1972-1976) |- |&nbsp;||Vauxhall - Bedford Die Plant||[[w:Bedford|Bedford]], [[w:Bedfordshire|Bedfordshire]]||[[w:United Kingdom|United Kingdom]]||Tools & Die Manufacturing||1969||1980's||Opened May 1969. Supplemented die-making at the Luton plant. |- |8 (since 1993)<br />E (before 1993)||[[w:Vauxhall Ellesmere Port|Vauxhall Ellesmere Port]]||[[w:Ellesmere Port|Ellesmere Port]], [[w:Cheshire|Cheshire]]||[[w:United Kingdom|United Kingdom]]||[[w:Opel Astra#K|Opel]]/[[w:Vauxhall Astra|Vauxhall Astra]] K (5-door, Sports Tourer)<br />[[w:Opel Astra#J|Opel]]/[[w:Vauxhall Astra|Vauxhall Astra]] J (5-door, Sports Tourer)<br />[[w:Opel Astra#H|Opel]]/[[w:Vauxhall Astra|Vauxhall Astra]] H<br />[[w:Opel Astra#G|Opel]]/[[w:Vauxhall Astra|Vauxhall Astra]] G<br />[[w:Opel Astra#F|Opel]]/[[w:Vauxhall Astra|Vauxhall Astra]] F<br />[[w:Opel Kadett E|Opel Kadett E]]/[[w:Vauxhall Astra#Second generation (1984–1991)|Vauxhall Astra Mk II]]<br />[[w:Vauxhall Belmont|Vauxhall Belmont]]<br />[[w:Opel Combo#Kadett Combo (Combo A; 1986)|Opel Kadett Combo/Bedford Astravan & Astramax]]<br />[[w:Vauxhall Astra#First generation (1980–1984)|Vauxhall Astra Mk I]]<br />[[w:Vauxhall Chevette|Vauxhall Chevette]]<br />[[w:Bedford Chevanne|Bedford Chevanne]]<br />[[w:Vauxhall Firenza|Vauxhall Firenza]]<br />[[w:Vauxhall Magnum|Vauxhall Magnum]]<br />[[w:Opel Vectra#Vectra C (2002–2010)|Opel/Vauxhall Vectra C]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Holden Astra#Third generation (TR; 1995)|Holden Astra (TR)]]<br />[[w:Holden Astra#Seventh generation (BK, BL; 2016)|Holden Astra (BK)]] (wagon)<br />Vauxhall Viva OHV Inline-4<br />[[w:General Motors 54° V6 engine|General Motors 54° V6 engine]]||1962||2017|| [[w:Vauxhall Motors|Vauxhall plant]]. <br />Also made engines, transmissions, axles, & other components. Component production began in November 1962. Vehicle production began with the Viva on June 1, 1964. Engine production ended in 2004. Sold to [[w:PSA Group|PSA Group]] in 2017. Part of [[w:Stellantis|Stellantis]] since 2021. Absorbing production of electric midsize vans from Luton van plant following Luton's closure on March 28, 2025. |- |7 (since 1993)<br />V (before 1993)||Vauxhall Luton (car plant)||[[w:Luton|Luton]], [[w:Bedfordshire|Bedfordshire]]||[[w:United Kingdom|United Kingdom]]||[[w:Vauxhall Carlton|Vauxhall Carlton]]<br />[[w:Vauxhall Cavalier|Vauxhall Cavalier]]<br />[[w:Vauxhall Cresta|Vauxhall Cresta]]<br />[[w:Opel Vectra#Vectra A (1988–1995)|Opel Vectra A]]<br />[[w:Opel Vectra#Vectra B (1995–2002)|Opel/Vauxhall Vectra B]]<br />[[w:Vauxhall Velox|Vauxhall Velox]]<br />[[w:Vauxhall Ventora|Vauxhall Ventora]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viscount|Vauxhall Viscount]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Vauxhall VX4/90|Vauxhall VX4/90]]<br />[[w:Vauxhall VX Series|Vauxhall VX Series]]<br />[[w:Vauxhall Wyvern|Vauxhall Wyvern]]<br />[[w:Envoy (automobile)#Vauxhall Victor based models|Envoy F/FB/FC/FD]]<br />Chevrolet Bedford AC/LQ<br />Bedford WHG/WLG/WS/VYC/AS/WT/BYC/K/[[w:Bedford M series|MS/ML]]/OS/OL/[[w:Bedford OB|OB]]<br />[[w:Bedford S type|Bedford S series]]<br />[[w:Bedford SB|Bedford SB]]<br />[[w:Bedford TA|Bedford TA]]<br />[[w:Bedford HC|Bedford HC/JC/PC]]<br />[[w:Bedford CA|Bedford CA/Envoy EA]]<br />[[w:Bedford CF|Bedford CF/CF1/Opel Bedford Blitz]]<br />[[w:Bedford HA|Bedford HA]]<br />[[w:Vauxhall Slant-4 engine|Vauxhall Slant-4 engine]]<br />Vauxhall OHV Inline-6<br />[[w:Churchill tank|Churchill tank]] ||1905 (operations began)<br><br>1925 (part of GM)||2002|| Vauxhall moved from London to Luton in 1905. GM bought Vauxhall in 1925. Chevrolet truck production was moved to Luton in 1930 from the Hendon plant and became known as Chevrolet Bedford. Chevrolet Bedford trucks were replaced by Vauxhall-developed Bedford trucks during 1931 though Chevrolet Bedford production continued through 1932. Bedford trucks and buses were built at Luton until production was moved to Dunstable in 1955. Subsequently, only Bedford vans and car-based light commercial vehicles were still made in Luton. Produced Churchill tanks during World War II. Production ended in 2002 with the [[w:Vauxhall Vectra|Vauxhall Vectra]]. Over 7.4 million vehicles had been produced. The Luton passenger car plant was next to the at the time still active van plant previously used by the IBC Vehicles joint venture. The plant has now been demolished and the site is now being redeveloped for housing.<ref>{{cite news|url=http://www.lutontoday.co.uk/news/politics/redevelopment-of-former-vauxhall-site-given-the-go-ahead-1-5795094|work=Luton Today|title=Redevelopment of former Vauxhall site given the go-ahead|date=8 Jan 2014|access-date=29 September 2014}}</ref> It is being redeveloped into a new Luton suburb called [[w:Napier Park|Napier Park]]. The van plant was closed in 2025 by Stellantis. |- |&nbsp;||GM de Venezuela<br />Caracas||[[w:Antimano|Antimano]], [[w:Caracas|Caracas]]||[[w:Venezuela|Venezuela]]||[[w:Chevrolet Bel Air|Chevrolet Bel Air]]<br />[[w:Chevrolet C/K|Chevrolet C/K]] <br />[[w:Chevrolet Camaro|Chevrolet Camaro]]<br /> [[w:Chevrolet Caprice|Chevrolet Caprice]]<br />[[w:Chevrolet Chevelle|Chevrolet Chevelle]]<br />[[w:Chevrolet Corvair|Chevrolet Corvair]]<br />[[w:Chevrolet Deluxe|Chevrolet Deluxe]]<br />[[w:Chevrolet Impala|Chevrolet Impala]]<br />[[w:Chevrolet Malibu|Chevrolet Malibu]]<br /> [[w:Chevrolet Nova|Chevrolet Nova]]<br /> [[w:Chevrolet Advance Design|Chevrolet Thriftmaster/Loadmaster]]<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Rekord|Opel Rekord]] ||1948||1983||Plant closed in 1983 & GM moved to the newer Valencia plant that it bought from Chrysler in 1979. |- |&nbsp;||GM Venezolana<br />Mariara||[[w:Mariara|Mariara]], [[w:Carabobo|Carabobo]]||[[w:Venezuela|Venezuela]]||[[w:Chevrolet Silverado#Second-generation Silverado / third-generation Sierra (GMT900; 2007)|Chevrolet C3500]]<br /> [[w:Isuzu Forward|Chevrolet F-Series]]<br />[[w:Isuzu Giga|Chevrolet E-Series]]<br />[[w:Chevrolet Kodiak|Chevrolet Kodiak]]<br />[[w:Isuzu Elf|Chevrolet N-Series]]<br />||2008||2015||Plant closed in 2015 & N-Series moved to Valencia plant. |- |&nbsp;||GM Venezolana<br />Valencia||[[w:Valencia, Carabobo|Valencia]], [[w:Carabobo|Carabobo]]||[[w:Venezuela|Venezuela]]||[[w:Chevrolet Astra|Chevrolet Astra]]<br />[[w:Chevrolet Aveo (T200)|Chevrolet Aveo]]<br /> [[w:Chevrolet C/K|Chevrolet C/K]] <br />[[w:Chevrolet Celebrity|Chevrolet Celebrity]]<br />[[w:Buick Century#Fifth generation (1982–1996)|Chevrolet Century]]<br />[[w:Chevrolet Chevette#Latin America|Chevrolet Chevette]]<br />[[w:Chevrolet Corsa|Chevrolet Corsa]]<br /> [[w:Chevrolet Cruze#First generation (J300; 2008)|Chevrolet Cruze]]<br />[[w:Chevrolet Tahoe#First generation (1992)|Chevrolet Grand Blazer]]<br />[[w:Chevrolet Kodiak|Chevrolet Kodiak]]<br /> [[w:Chevrolet Malibu#Fourth generation (1978)|Chevrolet Malibu]]<br />[[w:Opel Ascona#Chevrolet Monza|Chevrolet Monza]]<br />[[w:Isuzu Elf|Chevrolet N-Series]]<br />[[w:Daewoo Lacetti|Chevrolet Optra]]<br />[[w:Chevrolet Orlando#First generation (J309; 2011)|Chevrolet Orlando]]<br />[[w:Chevrolet S-10 Blazer|Chevrolet S-10 Blazer]]<br />[[w:Chevrolet Silverado|Chevrolet Silverado]]<br /> [[w:Chevrolet Spark|Chevrolet Spark]]<br />[[w:Chevrolet Tahoe|Chevrolet Tahoe]]<br />[[w:Chevrolet TrailBlazer#First generation (KC; 2001)|Chevrolet TrailBlazer]] ||1979||2017||Originally built by Chrysler de Venezuela SA. GM bought the plant from Chrysler in 1979 and moved their entire operations there from the Caracas plant by 1983. <br /> There had already been production pauses because of part shortages between 2014 and 2016. On May 2, 2017 GM announced the total closure of the plant and deconsolidation of the Venezuelan unit from its accounts due to the illegal seizure of its factory by the Venezuelan government. The plant halted all of its operations of manufacturing vehicles and now only retains the GM brands representation.<ref>{{cite web|url=https://www.semana.com/internacional/articulo/general-motors-cierra-operaciones-en-venezuela/244829|title=General Motors concreta el cierre de sus operaciones en Venezuela|website=Semana.com|date=May 2, 2017}}</ref><ref>{{cite news|url=https://elpais.com/internacional/2017/04/20/actualidad/1492679446_631610.html|title=General Motors suspende operaciones en Venezuela tras el embargo de una planta|newspaper=El País|date=April 20, 2017|via=elpais.com}}</ref><ref>{{cite web|url=http://www.elcomercio.com/actualidad/generalmotors-cierre-operaciones-venezuela-negocios.html|title=General Motors inicia cierre de operaciones en Venezuela|website=El Comercio|date=May 2, 2017}}</ref> |- |&nbsp;||[[w:GM Vietnam|GM Vietnam]]||[[w:Hanoi, Vietnam|Hanoi]]||[[w:Vietnam|Vietnam]]||[[w:Chevrolet Aveo|Chevrolet Aveo]]<br />[[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]]<br />[[w:Chevrolet Cruze#First generation (J300; 2008)|Chevrolet Cruze]]<br />[[w:Chevrolet Lacetti|Chevrolet Lacetti]]<br />[[w:Chevrolet Spark#Second generation (M200, M250; 2005)|Chevrolet Spark Lite]]<br />[[w:Chevrolet Spark#Third generation (M300; 2009)|Chevrolet Spark]]<br />[[w:Chevrolet Orlando#First generation (J309; 2011)|Chevrolet Orlando]]<br />[[w:Chevrolet Vivant|Chevrolet Vivant]]<br>[[w:Daewoo Cielo|Daewoo Cielo]]<br>[[w:Daewoo Lacetti|Daewoo Lacetti]]<br />[[w:Daewoo Lanos|Daewoo Lanos]]<br>[[w:Daewoo Leganza|Daewoo Leganza]]<br>[[w:Daewoo Magnus|Daewoo Magnus]]<br>[[w:Daewoo Matiz|Daewoo Matiz]]<br>[[w:Daewoo Nubira|Daewoo Nubira]]<br>[[w:Daewoo Damas|Daewoo Damas]]||1995||2018||Originally established as VIDAMCO (a joint venture with a state owned co.) in 1993 by Daewoo Motor Co. Daewoo bought out its Vietnamese partner in April 2000, making VIDAMCO 100% owned by Daewoo Motor Co. Bought by GM in 2002 as part of the creation of [[w:GM Daewoo|GM Daewoo Auto & Technology Co.]] In July 2011, the name of the company was changed from VIDAMCO to GM Vietnam. Sold to [[w:VinFast|VinFast]] in 2018. [[w:VinFast Fadil|VinFast Fadil]] produced under license from GM; is a rebadged [[w:Chevrolet Spark#Fourth generation (M400; 2015)|Chevrolet Spark (M400)]]/[[w:Opel Karl|Opel Karl]]. |- |&nbsp;||[[w:Warren Transmission|Warren Transmission]]||[[w:Warren, Michigan|Warren, Michigan]]||United States||[[w:GM-Ford 6-speed automatic transmission|6T70, 6T75, 6T80]] ||1958||2020||Located at 23500 Mound Road. Past transmissions: [[w:GM 4T60-E transmission|4T65-E]], [[w:List of GM transmissions#Hybrid and PHEV|5ET50 EVT]] Plant originally built in 1941 as a US Navy Ordnance facility operated by the Hudson Motor Car Co. building 20mm Oerlikon anti-aircraft guns. In 1943, the Navy moved the contract from Hudson to Westinghouse, which now operated the Warren plant for the Navy. Ford bought the plant in 1946 and used it to produce axles and ball joints. GM bought the plant in 1958.<ref>{{Cite web|url=https://gmauthority.com/blog/2022/01/old-gm-warren-transmission-plant-set-to-be-demolished/|title = Old GM Warren Transmission Plant Set To Be Demolished|author=Sam McEachern|publisher=GMAuthority.com|date=January 25, 2022}}</ref> The plant became a Chevrolet facility making auto parts. It also made artillery shells in the 1960's and 1970's. The factory was transferred to the Hydramatic Division in 1980, later becoming part of GM Powertrain. [https://nadc1.com/?portfolio=gm-paint-shop-strip-out] Ended production on August 1, 2019. Reopened for production of face masks during the COVID-19 pandemic beginning in March 2020<ref>{{Cite web|url=https://www.freep.com/story/money/cars/general-motors/2020/06/08/gm-warren-transmission-plant-coronavirus/3135789001/|title = GM revived Warren plant for face mask production. What happens when demand slows?|author=Jamie LaReau|publisher=Detroit Free Press|date=June 8, 2020}}</ref>. First face mask produced March 27, 2020. Sold to a developer in 2021. |- |&nbsp;||[[w:Welch Motor Car Company|Welch]]||[[w:Pontiac, Michigan|Pontiac]], [[w:Michigan|Michigan]]||United States||Welch automobiles||1909||1911||Welch Motor Car Company became affiliated with GM in 1909 and GM officially took it over in 1910. Welch ended production in 1911. Welch was noted for having engines with a single overhead cam and hemispherical combustion chambers, unusual technology for its time. |- |&nbsp;||[[w:Welch Motor Car Company|Welch-Detroit]]||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||Welch-Detroit automobiles||1910||1911||The Welch Company of Detroit was a separate company from the Welch Motor Car Company of Pontiac, Michigan and was set up in June 1909 to build a smaller, cheaper car than the Welch made in Pontiac, Michigan. Both Welch companies became affiliated with GM in 1909 and GM officially took over both companies in 1910. Both Welch and Welch-Detroit ended production in 1911. Equipment from the factory was moved to the also GM-owned, former Rainier Motor Car Company factory in Saginaw to make the 1912 Marquette, which was said to be a combination of the previous Rainier and Welch-Detroit brands. |- |W||[[w:Willow Run Assembly|Willow Run Assembly]]||[[w:Ypsilanti Township, Michigan|Ypsilanti Twp, Michigan]]||United States||[[w:Chevrolet Caprice#Fourth generation (1991–1996)|Chevrolet Caprice]] sedan & wagon (1991-1993) <br />[[w:Oldsmobile Custom Cruiser#Third generation (1991–1992)|Oldsmobile Custom Cruiser]] wagon (1991-1992)<br />[[w:Buick Roadmaster#1991–1996|Buick Roadmaster Estate wagon]] (1991-1993)||1956||1993||Located at 2625 Tyler Road, to the south of the former Willow Run Transmission plant. Initially opened in 1956 to exclusively build Chevrolet trucks in a 500,000 sq. ft. building that had been used as a warehouse by GM and was previously used by Kaiser-Frazer's engineering dept. [https://aadl.org/aa_news_19561208-chevrolet_willow_run_truck_plant_gains_momentum] In 1958-59, plant was expanded into a 2-part Chevrolet & Fisher Body passenger car assembly plant to make the Chevrolet Corvair. First completed 1960 Corvair rolls off the line on July 7, 1959 [https://www.facebook.com/photo/?fbid=792700342891740&set=a.453129043515540]. Added the Chevy II (Nova) for 1962. Was part of the [[w:Chevrolet Assembly Division|Chevrolet Assembly Division]]. Chevrolet Assembly Division plants, along with the onsite Fisher Body plants, were gradually transferred to the GM Assembly Division which replaced the BOP Assembly Division in 1965. Willow Run Assembly joined the GM Assembly Division in 1971. Idled in Nov. 1978. Converted in 1978-79 to build the fwd X-body compacts for 1980. Began building fwd X-cars on January 17, 1979. In 1984, joined the new BOC group in preparation for its conversion to build the new fwd H-body full-size cars for 1986. Final H-car built on May 19, 1989 and in September, moved to the CPC group. Converted to build the body-on-frame, rwd B-body for 1991. Chevy Caprice sedan production began in January 1990 followed by station wagons in July. Closed July 1993. B-body production consolidated in Arlington, TX. Assembly plant was 2.5 million sq. ft. when it closed. The Willow Run Assembly Plant is now the Willow Run Business Center, a multi-tenant warehouse and distribution facility, part of which is leased by GM to distribute automotive service parts, which is known as Ypsilanti #87 Processing Center, part of GM Customer Care and Aftersales. The nearby Willow Run Company Vehicle Operations site at 2901 Tyler Road was sold to International Turbine Industries in April 2013.<ref name=WR-Assembly-sold>{{cite news|author=Katrease Stafford|title=GM Willow Run plant redevelopment: Aircraft maintenance firm buys 1 building|url=https://www.annarbor.com/news/ypsilanti/gm-willow-run-plant-redevelopment-aircraft-maintenance-firm-purchases-facility-25-new-jobs-expected/|access-date=24 April 2013|newspaper=AnnArbor.com|date=April 2, 2013}}</ref> Past models: [[w:Chevrolet Task Force|Chevrolet Task Force]] (1957-1958), [[w:Chevrolet Suburban#Fourth generation (1955)|Chevrolet Suburban]] (1958), [[w:Chevrolet Corvair|Chevrolet Corvair]] (1960-1969), [[w:Chevrolet Nova|Chevrolet Chevy II/Nova]] (1962-79), [[w:Acadian (automobile)|Acadian]] (Canada only: 1968-71), [[w:Pontiac Ventura#1971–1977 X-body compact|Pontiac <br> Ventura]] (1971-1977), [[w:Pontiac GTO#Fourth generation|Pontiac GTO]] (1974), [[w:Pontiac Phoenix#First generation (1977–1979)|Pontiac Phoenix (rwd <br> X-body)]] (1977-1979), [[w:Oldsmobile Omega|Oldsmobile Omega (rwd X-body)]] (1973-1979), [[w:Buick Skylark#Fourth generation (1975–1979)|Buick Skylark (rwd <br> X-body)]] (1977-1978), [[w:Chevrolet Citation|Chevrolet Citation]] (1980-1981, 1984-1985), [[w:Oldsmobile Omega#Third generation (1980–1984)|Oldsmobile Omega (fwd X-body)]] (1980-1984), [[w:Buick Skylark#Fifth generation (1980–1985)|Buick Skylark (fwd <br> X-body)]] (1980-1985), [[w:Oldsmobile 88#Ninth generation (1986–1991)|Oldsmobile 88]] (1986-89), [[w:Pontiac Bonneville#Eighth generation (1987–1991)|Pontiac Bonneville]] (1987-1989). |- |&nbsp;||[[w:Willow Run Transmission|Willow Run Transmission]]||[[w:Ypsilanti, Michigan|Ypsilanti, Michigan]]||United States|| [[w:Hydramatic|Hydramatic]] automatic transmissions <br /> [[w:GM 4L80-E transmission|4L80-E transmission]]<br />[[w:GM 4L80-E transmission|4L85-E transmission]]<br />[[w:GM 4T60-E transmission|4T60-E transmission]]<br />[[w:GM 4T60-E transmission|4T65-E transmission]]<br />[[w:GM 4T80-E transmission|4T80-E transmission]]<br />[[w:GM 6L50 transmission|6L50-E transmission]]<br />[[w:GM 6L80 transmission|6L80-E transmission]]<br />[[w:GM 6L90 transmission|6L90-E transmission]]<br />||1953||2010||Began as the Ford [[w:B-24 Liberator|B-24 Liberator]] bomber plant in World War II which opened in 1941, grew from 3.5 million square feet to nearly 5 million square feet under GM. Ford built the factory and sold it to the US government, which leased it back to Ford for the duration of WWII. Ford Motor had first option on the plant after war production ended, an option it ultimately chose not to exercise. The factory was instead leased and then sold to [[w:Kaiser-Frazer|Kaiser-Frazer]] and was their main production site from 1946-1953, when they moved production to Toledo, OH following Kaiser-Frazer's acquisition of Toledo-based [[w:Willys-Overland|Willys-Overland]]. In addition to automobiles, [[w:Kaiser-Frazer|Kaiser-Frazer]] also built [[w:C-119 Flying Boxcar|C-119 Flying Boxcar]] cargo planes at Willow Run under license from [[w:Fairchild Aircraft|Fairchild Aircraft]], producing an estimated 88 C-119s between 1951 and 1953. In 1953, GM first leased then bought the plant to replace the Detroit Transmission Division factory in Livonia, Michigan that had burned down earlier in 1953. Whatever equipment could be salvaged was brought from the destroyed Detroit Transmission Division plant in Livonia to Willow Run in 1953. Also supplied Hydramatics to Lincoln, Nash, Hudson, Rambler, Kaiser, and Willys. It was also initially supplied to Rolls-Royce before Rolls-Royce set up their own Hydramatic production line in the UK building Hydramatics under license from GM. Rolls-Royce also supplied Armstrong-Siddeley and [[w: British Motor Corporation|BMC]], which in turn supplied other British automakers like Jensen that used BMC’s biggest engines. The Detroit Transmission Division became the Hydramatic Division in October 1963. The Hydramatic Division merged with the GM Engine Division to form GM Powertrain in 1991-1992. Over the years, GM expanded the plant to almost 5 million sq. ft. In addition to automatic transmissions, GM also produced the M16A1 rifle and the M39A1 20mm autocannon for the US military during the Vietnam War at Willow Run Transmission. GM Powertrain also had an on-site engineering center. The plant closed in December 2010. A small portion of the plant was saved by the [[w:Yankee Air Museum|Yankee Air Museum]] to be turned into the National Museum of Aviation and Technology at Historic Willow Run but more than 95% of the plant was demolished from 2013-2014. The rest of the site has been redeveloped into the [[w:American Center for Mobility|American Center for Mobility]], an autonomous- and connected-driving testing center which opened in December 2017. |- |Y (1964 [[w:Chevrolet|Chevrolet]] and 1965-2010) <br /><br /> W <br /> (Pre-1965 [[w:Oldsmobile|Oldsmobile]] & [[w:Pontiac (automobile)|Pontiac]])<br /><br /> 5 (Pre-1965 [[w:Buick|Buick]]) || [[w:Wilmington Assembly|Wilmington Assembly]] || [[w:Wilmington, Delaware|Wilmington, Delaware]]||United States||[[w:Pontiac Solstice|Pontiac Solstice]] (2006-2010)<br />[[w:Saturn Sky|Saturn Sky]] (2007-2010) <br />[[w:Opel GT#GT (roadster) (2007–2010)|Opel GT]] (Europe: 2007-2010) <br />[[w:Daewoo G2X#Daewoo G2X|Daewoo G2X]] (S. Korea: 2007-2009) ||1947||2009||Located at 801 Boxwood Road. Was originally part of the [[w:Buick-Oldsmobile-Pontiac Assembly Division|Buick-Oldsmobile-Pontiac Assembly Division]]. Wilmington began making Chevrolet passenger cars for 1964. BOP Assembly Division became GM Assembly Division in 1965. Converted to make the Chevette small car for 1976. Switched back to making B-body full-size cars for 1985. Converted to make the fwd Chevy Corsica & Beretta for 1987. Then built Corsica's replacement, Malibu, for 1997. Converted to build Saturn's 2nd model range, the Opel Vectra-based, plastic body paneled Saturn L-Series for 2000. Converted to build the rwd, Kappa platform small sports cars for 2006 beginning with the Pontiac Solstice. Final car produced was a Solstice roadster on July 28, 2009. The plant was sold to [[w:Fisker Automotive|Fisker Automotive]] in 2010, which had planned to build its [[w:Fisker Atlantic|2nd model line]] there. However, Fisker Automotive went bankrupt in Nov. 2013 before ever building any cars in Wilmington. Fisker Automotive's assets, including the Wilmington plant, were purchased out of bankruptcy by Wanxiang Group in February 2014. Wanxiang did not use the plant and sold it in 2017. Plant was demolished in 2019. A large part of the site is now an Amazon fulfillment center.<br />Past models: [[w:Chevrolet Corsica|Chevrolet Corsica]] (1987-1996), [[w:Chevrolet Beretta|Chevrolet Beretta]] (1987-1996), [[w:Pontiac Tempest#Fourth generation (1987–1991)|Pontiac Tempest (Canada only)]] (1988-91), [[w:Chevrolet Malibu#Fifth generation (1997)|Chevrolet Malibu]] (1997-1999), [[w:Saturn L-Series|Saturn L-Series]] (2000-2005), [[w:Chevrolet Chevette|Chevrolet Chevette]] (1976-1984), [[w:Pontiac 1000|Pontiac 1000]] (1981-1984), [[w:Pontiac Acadian|Pontiac Acadian]] (Canada only: 1976-1984), [[w:Buick Centurion|Buick Centurion]] (1971-1973), [[w:Buick Electra|Buick Electra]] (1959-1962, 1971-1974), [[w:Buick Estate#1971-1976|Buick Estate]] (1972-1973, 1975), [[w:Buick GS|Buick GS]] (1968-1969), [[w:Buick Invicta|Buick Invicta]] (1959-1962), [[w:Buick LeSabre|Buick LeSabre]] (1959-1975), [[w:Buick Limited#1958 Limited|Buick Limited]] (1958), [[w:Buick Roadmaster|Buick Roadmaster]] (1948-1950, 1955-1957), [[w:Buick Skylark#Third generation (1968–1972)|Buick Skylark]] (1968-1969), [[w:Buick Special|Buick Special]] (1950, 1953-1958), [[w:Buick Super|Buick Super]] (1954-1958), [[w:Buick Wildcat|Buick Wildcat]] (1963-1970), [[w:Chevrolet Bel Air|Chevrolet Bel Air]] (1964), [[w:Chevrolet Biscayne|Chevrolet Biscayne]] (1964-1968), [[w:Chevrolet Caprice|Chevrolet Caprice]] (1966-1975, 1985-1986), [[w:Chevrolet Impala|Chevrolet Impala]] (1964-1975, 1985), [[w:Oldsmobile 88|Oldsmobile 88]] (1949-1963, 1985), [[w:Oldsmobile 98|Oldsmobile 98]] (1948-1963), [[w:Oldsmobile Starfire#First generation (1961–1966)|Oldsmobile Starfire]] (1961-1963), [[w:Pontiac Bonneville|Pontiac Bonneville]] (1958-1963), [[w:Pontiac Catalina|Pontiac Catalina]] (1959-1960, 1962-1963), [[w:Pontiac Chieftain|Pontiac Chieftain]] (1950-1951, 1954-1957), [[w:Pontiac Grand Prix#First generation (1962–1964)|Pontiac Grand Prix]] (1962-1963), [[w:Pontiac Star Chief|Pontiac Star Chief]] (1955-1958, 1960), [[w:Pontiac Ventura#1960–1970|Pontiac Ventura]] (1960-1961) |- |&nbsp;||[[w:Windsor Transmission|Windsor Transmission]]||[[w:Windsor, Ontario|Windsor, Ontario]]||[[w:Canada|Canada]]||[[w:GM 4T40 transmission|4T40E/4T45E transmission]]<br />Transmission components||1920||2010||Plant was originally in [[w:Walkerville, Ontario|Walkerville]] until Walkerville was annexed by Windsor in 1935. Was located at 1550 Kildare Road. Walker Road is at the back of the property. Previous: 1920 - 1928 axles and parts, 1928 - 1963 engines (including the [[w:Chevrolet Stovebolt engine|Chevrolet Stovebolt OHV inline-6 engine]] and Buick engines from 1935-1942). The Windsor plant was taken over by McKinnon Industries Ltd., a GM subsidiary based in St. Catharines, Ontario, Canada in 1963. As a result, engine production in Windsor was moved to St. Catharines and transmission production in St. Catharines was moved to Windsor. At this point, the Windsor plant was renamed the Windsor Transmission Plant. In 1969, McKinnon Industries Ltd. was integrated into GM Canada rather than being a separate subsidiary. Windsor Transmission was closed on July 28, 2010. The 4-spd. automatics made in Windsor were discontinued and replaced by 6-spd. automatics made in St. Catharines. Sold in 2014 and completely demolished by 2017. Site now occupied by MotiPark Ltd. |- |&nbsp;||Windsor Trim||[[w:Windsor, Ontario|Windsor, Ontario]]||[[w:Canada|Canada]]||Seat assemblies and door trim panels||1965||1996|| Located at 1600 Lauzon Rd. Sold to Peregrine, Inc. in 1996 and then sold to [[w:Lear Corp.|Lear Corp.]] in 1999. Closed by Lear in 2005. Demolished in 2009. Part of the property is now the [[w:WFCU Centre|WFCU Centre]] and part will be residential homes. |- |&nbsp;||[[w:Wixom Performance Build Center|Wixom Performance Build Center]]||[[w:Wixom, Michigan|Wixom, Michigan]]||United States||[[w:GM LS engine|6.2L LS3 V8]] [[w:Chevrolet Corvette (C6)#Grand Sport|(C6 Corvette Grand Sport coupe w/manual transmission only)]]<br />[[w:GM LS engine|7.0L LS7 V8]]<br />[[w:GM LS engine|6.2L supercharged LS9 V8]]<br />[[w:Northstar engine series#LC3|4.4L supercharged LC3 Northstar V8]] ||2004||2013<ref>{{Cite web|url=https://www.torquenews.com/106/gm-closing-wixom-performance-engine-facility-build-your-own-engine-program-ends|title=GM Closing Wixom Performance Engine Facility, Build-Your-Own-Engine Program Ends|author=Patrick Rall|date=September 20, 2013|publisher=Torquenews.com}}</ref>||Located at 30240 Oak Creek Dr.<br> Performance Build Center relocated to <br> Bowling Green Assembly in 2014. |- |&nbsp;||[[w:Detroit Assembly#LaSalle Factory/DeSoto Factory|Wyoming Assembly (LaSalle Wyoming Ave. plant)]]||[[w:Detroit|Detroit]], [[w:Michigan|Michigan]]||United States||[[w:LaSalle (automobile)|LaSalle]] 1927-1933||1926||1934||Located at 6000 Wyoming Avenue. Originally built to produce Liberty aircraft engines in World War I, opening in 1917. In 1919, was taken over by Saxon Motor Co., owned by Hugh Chalmers of Chalmers Motor Co. GM bought the plant in 1926 and built the LaSalle there from 1927. GM sold Wyoming Assembly to Chrysler in 1934, which then used it to build its DeSoto brand. After the DeSoto brand was discontinued in late 1960, became Wyoming Export plant which was used to prepare vehicles for export. Plant closed in 1980. Plant was demolished in 1992. |- |&nbsp;||[[w:GMC (marque)#History|Yellow Truck & Coach Manufacturing Company]]||[[w:Chicago|Chicago]], [[w:Illinois|Illinois]]||United States||Yellow Cab taxis<br>Yellow Coach buses<br>Yellocab trucks (T-1, T-2, and T-3)||1925||1928||Located on West Dickens Ave. In 1925, General Motors Truck Corp., the parent of the GMC brand, merged with Yellow Cab Manufacturing Company (including its Yellow Coach Mfg. Co. bus-making subsidiary) to form Yellow Truck & Coach Manufacturing Company, in which GM owned a majority stake of 57%. Yellocab trucks were discontinued during 1927 and were replaced with new light-duty GMC trucks (T-10 & T-20). During 1928, bus and taxi production was consolidated at the GMC Pontiac Central plant in Pontiac, Michigan. The Chicago plant was closed and sold. |- |&nbsp;||Yellow Sleeve-Valve Engine Works||[[w:East Moline|East Moline]], [[w:Illinois|Illinois]]||United States||Yellow-Knight engines||1925||1929||Production began in 1923. In 1925, General Motors Truck Corp., the parent of the GMC brand, merged with Yellow Cab Manufacturing Company (including its Yellow Coach Mfg. Co. bus-making subsidiary) to form Yellow Truck & Coach Manufacturing Company, in which GM owned a majority stake of 57%. The Northway Motor Division of Detroit was transferred to General Motors Truck Corp. as part of that merger but was liquidated in 1926. During 1929 and 1930, Yellow Sleeve Valve Engine production equipment was transferred from East Moline, Illinois to Pontiac West Plant 1 in Pontiac, Michigan. The East Moline plant was closed at the end of 1929 and was sold. |- |&nbsp;||[[w:Yulon GM|Yulon GM]]||[[w:Miaoli|Miaoli]]||[[w:Taiwan|Taiwan]]||[[w:Buick Excelle#Taiwan|Buick Excelle]]<br />[[w:Buick LaCrosse#China|Buick LaCrosse]] ||2006||2012||A joint venture owned 49% by GM & 51% by [[w:Yulon|Yulon Motor Co]]. Yulon bought GM's stake in the venture in Dec. 2008. Production continued after the sale through licensing but cooperation between GM & Yulon ended in 2012. |- |&nbsp;||General Motors Zaire||[[w:Kinshasa|Kinshasa]]||[[w:Zaire|Zaire]] (now [[w:Democratic Republic of the Congo|D.R. Congo]])||[[w:Chevrolet|Chevrolet]] trucks<br />[[w:Opel Kadett|Opel Kadett]]<br />[[w:Opel Rekord|Opel Rekord]]<br />[[w:Opel Commodore|Opel Commodore]]<br />[[w:Opel Ascona|Opel Ascona]]<br />[[w:Bedford Vehicles|Bedford Trucks]]||1975||1987||GM sold the plant in 1987 to local businessmen. Plant was looted bare in 1991. |} == Former partner factories == {| class="wikitable sortable" style="font-size:90%" !VIN !! Name !! City/State !! Country !! class="unsortable" | Products !! Opened !! Idled !! class="unsortable" | Comments |- |H||[[w:AM General#Hummer brand|AM General]] Commercial plant||[[w:Mishawaka, Indiana|Mishawaka, Indiana]]||United States||[[w:Hummer H2|Hummer H2]] (2003-2009)||2002||2009||Located at 12900 McKinley Highway. Built under contract for GM by AM General. Plant later built the [[w:Mercedes-Benz R-Class|Mercedes-Benz R-Class]] under contract for Mercedes for export to China from 2015-2017 as well as the [[w:VPG MV-1|VPG MV-1]] under contract for VPG (later Mobility Ventures MV-1; Mobility Ventures being an AM General subsidiary that took over VPG's assets after VPG went bankrupt). MV-1 was made from 2011-2016. |- |E||[[w:AM General#Hummer brand|AM General]] Military plant||[[w:Mishawaka, Indiana|Mishawaka, Indiana]]||United States||[[w:Hummer H1|Hummer H1]] (2000-2006)||1992 (civilian production)||2006 (civilian production)||Located at 13200 McKinley Highway. This plant built the military [[w:Humvee|Humvee]] from fall 1984 and civilian Hummers from 1992. In Dec. 1999, GM bought the rights to the Hummer brand from AM General. AM General still handled manufacturing but GM handled marketing and distribution. At this point, the AM General Hummer was renamed Hummer H1. H1 built under contract for GM by AM General. Humvee production for military use continued after 2006. |- |&nbsp;||Asoke Engineering (Asoke Motors)||Bangkok?||[[w:Thailand|Thailand]]||[[w:Bedford HA#The BTV|Plai Noi]]<br />[[w:Opel Rekord|Opel Rekord]]||Mid-1970s||Early-1980s||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Plai Noi was assembled in Thailand in 1974. |- |&nbsp;||Associated Industries Ltd.||[[w:Georgetown, Guyana|Georgetown]]||[[w:Guyana|Guyana]]||[[w:Bedford HA#The BTV|Tapir]]||Mid-1970's||Late-1970's||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Tapir was assembled in Guyana. |- |&nbsp;||Associated Motor Industries Ltd.||[[w:Jurong|Jurong]] (Jurong Industrial Estate)||[[w:Singapore|Singapore]]||[[w:Chevrolet Impala|Chevrolet Impala]]<br />[[w:Statesman (automobile)#HQ|Chevrolet 350]]<br />[[w:Vauxhall Motors|Vauxhall]] including: <br />[[w:Vauxhall Victor|Victor]]<br />[[w:Vauxhall Viva|Viva]]<br />[[w:Vauxhall VX4/90|VX4/90]]||1968||1975||Jointly owned by Wearne Brothers Limited & Motor Investments Bhd. Associated Motor Industries Ltd. assembled vehicles under license from GM beginning in 1968 as well as brands from other automakers (Austin, Morris, & Renault). |- |&nbsp;||Associated Motor Industries Malaysia Sdn. Bhd.||[[w:Batu Tiga|Batu Tiga]], [[w:Selangor|Selangor]]||[[w:Malaysia|Malaysia]]||[[w:Holden|Holden]]<br />||1968||1971 (?)||Associated Motor Industries Malaysia assembled Holden vehicles under license from GM beginning in 1968 as well as brands from other automakers. |- |C||[[w:Automobilwerk Eisenach|Automobilwerk Eisenach]] (AWE)||[[w:Eisenach|Eisenach]]||[[w:Germany|Germany]]||[[w:Opel Vectra#Vectra A (1988–1995)|Opel Vectra]] A<br />||1990||1991|| The old [[w:Wartburg (marque)|Wartburg]] plant built vehicles for Opel for a short time before closing permanently. |- |&nbsp;||[[w:Avtotor|Avtotor]]||[[w:Kaliningrad|Kaliningrad]]||[[w:Russia|Russia]]||[[w:Chevrolet Aveo (T200)|Chevrolet Aveo]], [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]], [[w:Chevrolet Epica|Chevrolet Epica]], [[w:Chevrolet Lacetti|Chevrolet Lacetti]], [[w:Chevrolet Malibu#Eighth generation (2013)|Chevrolet Malibu]], [[w:Chevrolet Orlando#First generation (J309; 2010)|Chevrolet Orlando]], [[w:Chevrolet Rezzo|Chevrolet Rezzo]], [[w:Chevrolet Tahoe#Second generation (2000) |Chevrolet Tahoe (GMT800)]], [[w:Chevrolet Tahoe#Third generation (2007)|Chevrolet Tahoe (GMT900)]], [[w:Chevrolet Trailblazer (SUV)#First generation (KC; 2001)|Chevrolet Trailblazer]], [[w:Cadillac BLS|Cadillac BLS]], [[w:Cadillac CTS|Cadillac CTS]], [[w:Cadillac Escalade#Second generation (2001)|Cadillac Escalade (GMT800)]], [[w:Cadillac Escalade#Third generation (2007)|Cadillac Escalade (GMT900)]], [[w:Cadillac SRX|Cadillac SRX]], [[w:Cadillac STS|Cadillac STS]], [[w:Hummer H2|Hummer H2]], [[w:Hummer H3|Hummer H3]], [[w:Opel Antara|Opel Antara]], [[w:Opel Astra|Opel Astra]], [[w:Opel Insignia|Opel Insignia]], [[w:Opel Mokka#First generation (J13; 2012)|Opel Mokka]], [[w:Opel Meriva|Opel Meriva]], [[w:Opel Zafira|Opel Zafira]]||2004||2015||Built under contract by [[w:Avtotor|Avtotor]] for GM. GM ended the contract in 2015. |- |&nbsp;||Azia Avto||[[w:Ust-Kamenogorsk|Ust-Kamenogorsk]]||[[w:Kazakhstan|Kazakhstan]]||[[w:Chevrolet Aveo (T200)|Chevrolet Aveo]], [[w:Chevrolet Captiva#First generation (C100, C140; 2006)|Chevrolet Captiva]], [[w:Chevrolet Cruze|Chevrolet Cruze]], [[w:Chevrolet Epica|Chevrolet Epica]], [[w:Chevrolet Lacetti|Chevrolet Lacetti]], [[w:Chevrolet Malibu#Eighth generation (2013)|Chevrolet Malibu]], [[w:Chevrolet Orlando#First generation (J309; 2010)|Chevrolet Orlando]], [[w:Chevrolet Trax|Chevrolet Tracker]]||2007||2018||Built under contract by Azia Avto for GM. |- |&nbsp;||[[w:Bangchan General Assembly|Bangchan General Assembly]] Co., Ltd.||[[w:Khan Na Yao district|Khan Na Yao district]], [[w:Bangkok|Bangkok]]||[[w:Thailand|Thailand]]||[[w:Opel Kadett|Opel Kadett]] <br />[[w:Opel Rekord|Opel Rekord]] <br />[[w:Holden Kingswood|Holden Monaro LS]]<br />[[w:Statesman (automobile)|Chevrolet De Ville]]||1970||1987 (?)||[[w:Isuzu|Isuzu]] invested in Bangchan in 1979 but then sold its stake to [[w:Honda|Honda]] in 1987. Phra Nakorn Automobile Group became sole owner of Bangchan in 2005. |- |B||[[w:Gruppo Bertone|Gruppo Bertone]]||[[w:Grugliasco|Grugliasco]]||[[w:Italy|Italy]]||[[w:Opel Kadett#Kadett E (1984–1995)|Opel Kadett E convertible]]<br />[[w:Vauxhall Astra#Second generation (1984–1993)|Vauxhall Astra Mark 2 convertible]]<br />[[w:Opel Astra#F|Opel/Vauxhall Astra F convertible]]<br />[[w:Opel Astra#G|Opel/Vauxhall Astra G coupe & convertible]]<br />[[w:Holden Astra#Fourth generation (TS; 1998)|Holden Astra convertible (TS)]] ||1987||2006||Built under contract by [[w:Gruppo Bertone|Gruppo Bertone]] for Opel/Vauxhall. |- |&nbsp;||Central African Transport Company (CATCO)||?||[[w:Malawi|Malawi]]||[[w:Bedford HA#The BTV|Zonse]]||Mid-1970's||?||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Zonse was assembled in Malawi. |- |&nbsp;||Centroamericana de Ensamblaje y Fabricación||(?)||[[w:Honduras|Honduras]]||[[w:El Compadre (car)|Compadre]]||1970s||(?)||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Compadre was assembled in Honduras. |- |&nbsp;||Champion Motors||[[w:Shah Alam|Shah Alam]], [[w:Selangor|Selangor]]||[[w:Malaysia|Malaysia]]||[[w:Chevrolet Impala|Chevrolet Impala]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Bedford Vehicles|Bedford trucks]] including [[w:Bedford TJ|Bedford TJ]]||1968||1982 (?)||Champion Motors assembled vehicles under license from GM beginning in 1968. Champion Motors was renamed Assembly Services Sdn. Bhd. (ASSB) in 1975. The last products still being built for GM were Bedford trucks. A joint venture of Toyota & [[w:UMW Holdings|UMW Holdings Bhd.]] called Sejati Motor took over ASSB in 1982 which was then renamed UMW Toyota Motor in 1987. |- |&nbsp;||Chinese Automobile Co., Ltd.||[[w:Xinzhuang District|Xinzhuang District]], [[w:New Taipei City|New Taipei City]]||[[w:Taiwan|Taiwan]]||[[w:Opel Astra|Opel Astra]] F & G<br />[[w:Opel Vectra#Vectra B (1995–2002)|Opel Vectra]] B ||1993||2000||GM ended the assembly contract in 2001. |- |&nbsp;||Fabrica Superior de Centro America S.A.||?||[[w:El Salvador|El Salvador]]||[[w:Bedford HA#The BTV|Cherito]]||1973||1975||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Cherito was assembled in El Salvador. It was distributed by Auto Palace. |- |&nbsp;||Fernandes Autohandel||?||[[w:Suriname|Suriname]]||[[w:Bedford HA#The BTV|Moetete]]||1973||1975||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Moetete was assembled in Suriname. |- |&nbsp;||[[w:GAZ|GAZ]]||[[w:Nizhny Novgorod|Nizhny Novgorod]]||[[w:Russia|Russia]]||[[w:Chevrolet Aveo#Second generation (T300; 2012)|Chevrolet Aveo]]||2013||2015||Built under contract by [[w:GAZ|GAZ]] for GM. GM ended the contract in 2015. |- |&nbsp;||Genoto (General Otomotiv Sanayi ve Ticaret AS)||[[w:Kozyatağı|Kozyatağı]], [[w:Istanbul|Istanbul]]||[[w:Turkey|Turkey]]||[[w:Bedford Vehicles|Bedford trucks]] including [[w:Bedford TK|Bedford TK]] (KG EJR & KBC 10 & 570)||1965||1986||Built Bedford trucks under license from GM, sometimes rebadged as Genoto. |- |E||[[w:Heuliez|Heuliez]]||[[w:Cerizay|Cerizay]]||[[w:France|France]]||[[w:Opel Tigra#Tigra TwinTop B (2004–2009)|Opel/Vauxhall Tigra TwinTop B]]<br />[[w:Opel Tigra#Tigra TwinTop B (2004–2009)|Holden Tigra (XC)]]||2004||2009||Built under contract by [[w:Heuliez|Heuliez]] for Opel/Vauxhall. |- |&nbsp;||[[w:Hindustan Motors|Hindustan Motors]]||[[w:Uttarpara|Uttarpara]], [[w:West Bengal|West Bengal]]||[[w:India|India]]||[[w:Vauxhall Motors|Vauxhall]] models under Hindustan name including [[w:Hindustan Contessa|Hindustan Contessa]] (based on [[w:Vauxhall Victor|Vauxhall Victor]])<br />[[w:Bedford Vehicles|Bedford]] models including [[w:Bedford TJ|Bedford TJ]]<br />[[w:Allison Transmission|Allison Transmission]]<br />[[w:Terex|Terex]]||1957 (?)||2004||Built under license by [[w:Hindustan Motors|Hindustan Motors]]. |- |&nbsp;||INDEVESA, S.A. (Industrias Nicaraguenses De Vehiculos SA)||(?)||[[w:Nicaragua|Nicaragua]]||[[w:Bedford HA#The BTV|Pinolero]]||1974||(?)||The Nicaraguan state-owned company produced a version of GM's BTV called the Pinolero. |- |&nbsp;||Industrias Superior||[[w:Guatemala City|Guatemala City]]||[[w:Guatemala|Guatemala]]||[[w:Bedford HA#The BTV|Chato]]||1977||1970's||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Chato was assembled in Guatemala. It was distributed by CIDEA. |- |3||[[w:Isuzu|Isuzu]] Kawasaki plant||[[w:Kawasaki, Kanagawa|Kawasaki, Kanagawa]]||[[w:Japan|Japan]]||[[w:Chevrolet W-Series|Chevrolet W-Series]] (1984-1998)<br />[[w:GMC W-Series|GMC W-Series]] (1984-1998)<br />[[w:Isuzu N-Series|Isuzu N-Series]] (1987-1994)<br />[[w:Isuzu F-Series|Isuzu F-Series]] (1995-98 FRR, 1989-96 FSR, 1992-96 FTR/FVR)||1938||2005||[[w:Isuzu|Isuzu]] plant. Closed 2005. |- |H<br />(WMI: MPA)||[[w:Isuzu Motors (Thailand)|Isuzu Motors Co., (Thailand) Ltd.]] (IMCT)||Samrong Tai, [[w:Phra Pradaeng district|Phra Pradaeng district]], [[w:Samut Prakan province|Samut Prakan province]]||[[w:Thailand|Thailand]]||[[w:Holden Rodeo|Holden Rodeo (RA)]]||2003||2008||Rebadged Isuzu D-Max produced by Isuzu Thailand for GM Holden in Australia and New Zealand. Replaced by the updated and renamed Holden Colorado, which was made by GM Thailand rather than Isuzu Thailand. The model name was changed because after GM sold the last of its shares in Isuzu in 2006, GM Holden lost the right to use the Rodeo name, which was owned by Isuzu, during 2008. |- |9||[[w:KUKA|KUKA]]||[[w:Livonia, Michigan|Livonia]], [[w:Michigan|Michigan]]||United States||[[w:BrightDrop Zevo 600|BrightDrop Zevo 600]] (2022)||2021||2022||Produced under contract for GM in a limited run of less than 500 units. A temporary measure until GM's CAMI plant is ready to start building BrightDrop electric vans. |- |&nbsp;||[[w:Lilpop, Rau i Loewenstein|Lilpop, Rau and Loewenstein (LRL)]]||[[w:Warsaw|Warsaw]]||[[w:Poland|Poland]]||[[w:Chevrolet|Chevrolet]] cars, trucks, and buses<br />[[w:Buick|Buick]]<br />[[w:Opel|Opel]]||1937||1939||Was located at Bema Street. Lilpop, Rau and Loewenstein was a GM distributor who also assembled vehicles from CKD kits under license from GM until the German invasion that began World War II interrupted production. The Germans took over the factory during the war and the company was nationalized by the Communist Polish govt. after the war. |- |N (Opel Speedster &<br />Vauxhall VX220)<br /><br />H (Lotus models)||[[w:Lotus Cars|Lotus Cars]]||[[w:RAF Hethel|RAF Hethel]], [[w: Hethel|Hethel]], [[w:Norfolk|Norfolk]], [[w:England|England]]||[[w:United Kingdom|United Kingdom]]|| [[w:Opel Speedster|Opel Speedster]]/[[w:Vauxhall VX220|Vauxhall VX220]] (2001-2006) 7,207 units [[w:Lotus Elise|Lotus Elise]]<br />[[w:Lotus Exige|Lotus Exige]] ||2000||2005||GM owned Lotus from 1986-1993. GM sold Lotus in 1993 to A.C.B.N. Holdings S.A. of Luxembourg, a company controlled by Italian businessman Romano Artioli, who also owned Bugatti Automobili SpA. Artioli sold Lotus to Malaysian automaker [[w:Proton Holdings|Proton]] in 1996. The Opel Speedster & Vauxhall VX220 were built under contract for GM by Lotus after GM had sold Lotus. The Opel Speedster & Vauxhall VX220 were based on the Lotus Elise. |- |6||[[w:Magna Steyr|Magna Steyr]]||[[w:Graz|Graz]]||[[w:Austria|Austria]]||[[w:Saab 9-3#Second generation (2003–2014)|Saab 9-3 Convertible]] (2004-2010)||2003||2009||Built under contract by [[w:Magna Steyr|Magna Steyr]] for GM-owned Saab Automobile AB. 9-3 Convertible production was moved to Saab's own plant in Trollhattan, Sweden in January 2010. |- |&nbsp;||[[w:de:McCairns Motors|McCairns Motors Ltd.]]||[[w:Dublin Docklands|Dublin Docklands]], [[w:Dublin|Dublin]] and [[w:Santry|Santry]]||[[w:Republic of Ireland|Republic of Ireland]]||[[w:Vauxhall Cresta|Vauxhall Cresta]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Bedford Vehicles|Bedford trucks]]<br />[[w:Chevrolet Bel Air|Chevrolet Bel Air]]||1935||1975||McCairns Motors was the local assembler and distributor for Vauxhall and Bedford in Ireland. Assembly began at Dublin Port on Alexandra Road in November 1935. In 1951, car assembly moved to a larger plant in Santry. McCairns also assembled and sold other brands like Simca, Alfa Romeo, and Mitsubishi Fuso. Production ended due to Ireland joining the European Economic Community in 1973 and the end of tariffs on imports of completely built-up vehicles. This removed the need for local assembly in Ireland. McCairns Motors used the site in Santry until 1987. The Omni Park shopping center now stands where the assembly plant in Santry used to be. |- |&nbsp;||[[w:Mercury Marine|Mercury Marine]]||[[w:Stillwater, Oklahoma|Stillwater, Oklahoma]]||United States||[[w:Chevrolet small-block engine (first and second generation)#LT5|5.7L LT5 DOHC V8 engine]] (For 1990-1995 C4 Chevrolet Corvette ZR-1)||1989||1993||Engine was built for GM by Mercury Marine at their existing MerCruiser marine engine plant in Stillwater. 21,000 square feet of the 650,000 square foot plant was partitioned from the rest of the plant for assembly of this engine. LT5 engine production actually ended in 1993. Extra engines were built to be sufficient for Corvette ZR-1 production through 1995. The extra engines were sealed and crated for long-term storage and were shipped to the Corvette plant in Bowling Green, Kentucky and stored there until they were needed for installation in a '94 or '95 Corvette ZR-1. <br> Plant was located at 3003 N Perkins Rd. Closed in December 2011. Sold in 2012 to Belgium-based aerospace supplier Asco Industries. |- |&nbsp;||Neal and Massy Industries Ltd.||[[w:Morvant|Morvant]]<br /> later moved to <br />[[w:Arima|Arima]]||[[w:Trinidad and Tobago|Trinidad and Tobago]]||[[w:Holden Commodore#First generation (1978–1988)|Holden Commodore]]<br />[[w:Holden Kingswood|Holden Kingswood]]<br />[[w:Statesman (automobile)|Chevrolet Caprice (rebadged Statesman DeVille)]]<br />[[w:Opel Rekord Series C|Opel Rekord]]<br />[[w:Vauxhall Cresta|Vauxhall Cresta]]<br />[[w:Vauxhall Victor|Vauxhall Victor]]<br />[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Bedford Vehicles|Bedford trucks]]||1966||1994 (Production for GM may have ended earlier)||Built under license by Neal and Massy for GM. Neal and Massy also assembled vehicles for Datsun (Nissan) and Mazda. Assembly operation closed in 1994. Neal and Massy (now called Massy Motors) still operates as an importer/distributor for several non-GM automotive brands. |- |&nbsp;||[[w:Nexus Automotive|Nexus Automotive (Pvt.) Ltd.]]||[[w:Port Qasim|Port Qasim]], [[w:Karachi|Karachi]], [[w:Sindh|Sindh province]]||[[w:Pakistan|Pakistan]]||[[w:Chevrolet Spark#Asia|Chevrolet Joy]]||2005||2006||Nexus Automotive was a GM licensed assembler and distributor. Built under contract for [[w:Nexus Automotive|Nexus Automotive]] by [[w:Ghandhara Nissan|Ghandhara Nissan]] at a plant with spare capacity. |- |K||[[w:Nissan USA#Manufacturing|Nissan Mexicana]]||[[w:Cuernavaca|Cuernavaca]]||[[w:Mexico|Mexico]]||[[w:Chevrolet City Express|Chevrolet City Express]] (2015-2018)<br />[[w:Nissan NV200|Nissan NV200]] (2013-2021)||2014||2018||Nissan plant. Chevrolet City Express is a rebadged Nissan NV200 made for GM by Nissan. Chevrolet <br> City Express discontinued after 2018. NV200 discontinued in North America after 2021. |- |&nbsp;||[[w:Nissan Motor Australia|Nissan Motor Australia]] Clayton plant||[[w:Clayton South, Victoria|Clayton South]], [[w:Victoria (state)|Victoria]]||[[w:Australia|Australia]]||[[w:Holden Astra#First generation (LB, LC; 1984–1987)|Holden Astra (LB/LC)]]<br />[[w:Nissan Pulsar#N12 (1982)|Nissan Pulsar (N12)]]<br />[[w:Holden Astra#Second generation (LD; 1987–1989)|Holden Astra (LD)]]<br />[[w:Nissan Pulsar#N13 (1986)|Nissan Pulsar (N13)]]||1984 (GM prod.)||1989 (GM prod.)|| Production for GM Holden at Nissan's Australian plant was done as part of the Australian government's [[w:Button car plan|Button car plan]] for rationalization of local automotive production. The relationship ended in 1989 and GM Holden established a joint venture with Toyota called [[w:United Australian Automobile Industries|United Australian Automobile Industries]] to replace the Nissan relationship. The Nissan Pulsar-based Holden Astra was replaced by the Toyota Corolla-based Holden Nova. Nissan closed its Australian vehicle assembly plant in 1992. The Clayton plant was later taken over by HSV and the Walkinshaw Group. |- |Y||[[w:Nissan Motor Ibérica|Nissan Motor Ibérica]]||[[w:Barcelona|Barcelona]]||[[w:Spain|Spain]]||[[w:Opel Vivaro A|Opel/Vauxhall Vivaro A]] (high roof versions only)<br />[[w:Renault Trafic#Second generation (X83; 2001)|Renault Trafic]] (high roof versions only)<br />[[w:Renault Trafic#Second generation (X83; 2001)|Nissan Primastar]] (high roof versions only)||2001||2015||This is a Nissan plant that built high roof versions of Renault-designed midsize vans for Opel/Vauxhall as part of a supply deal between GM Europe & Renault as well as for Renault and Nissan. The low roof versions were made by Vauxhall at the IBC Vehicles/GMM Luton plant however that UK plant could not fit the high roof versions so they were built by Nissan in Spain. Van production in Barcelona ended in 2015 and high roof Opel/Vauxhall Vivaro production was moved to Renault's plant in Sandouville, France, which also handled all Renault Trafic and Nissan NV300 (Primastar replacement) production. Nissan closed this plant in Dec. 2021. |- |&nbsp;||[[w:de:O’Shea’s Limited (Opel)|O’Shea’s Limited]]||[[w:Cork (city)|Cork]], [[w:Munster|Munster]]||[[w:Republic of Ireland|Republic of Ireland]]||[[w:Opel|Opel]] cars including [[w:Opel Rekord|Rekord]]||1937||1965|| Before 1962, O’Shea’s was the sole Opel assembler and distributor in Ireland. From 1962-1965, assembly and distribution of Opels in Ireland was split between Reg Armstrong Motors and O’Shea’s Limited. After 1965, Reg Armstrong Motors was the sole Opel assembler and distributor in Ireland. |- |&nbsp;||PT. Pantja Motor||[[w:Sunter, Jakarta|Sunter]], [[w:North Jakarta|North Jakarta]], [[w:Jakarta|Jakarta]]||[[w:Indonesia|Indonesia]]||[[w:Chevrolet Tavera|Chevrolet Tavera]]||2001||2005||Isuzu's Indonesian assembler, now known as [[w:Isuzu Astra Motor Indonesia|Isuzu Astra Motor Indonesia]]. Built the Isuzu Panther-based Tavera for GM Indonesia. |- |&nbsp;||[[w:Pininfarina|Pininfarina]]||[[w:Grugliasco|Grugliasco]]||[[w:Italy|Italy]]||[[w:Cadillac Eldorado#1959–60 Eldorado Brougham|Cadillac Eldorado Brougham (Series 6900)]] (1959-1960) painted bodies||1959||1960||Bodies were built by [[w:Pininfarina|Pininfarina]] and mated with chassis shipped to Italy by Cadillac and then shipped back to the US. |- |&nbsp;||[[w:Pininfarina|Pininfarina]]||[[w:San Giorgio Canavese|San Giorgio Canavese]]||[[w:Italy|Italy]]||[[w:Cadillac Allanté|Cadillac Allanté]] (1987-1993) painted bodies||1986||1993||Bodies were designed and manufactured under contract by [[w:Pininfarina|Pininfarina]] for Cadillac. Plant was built specially for the Allanté. Bodies were then flown from Turin, Italy to Detroit on specially equipped Boeing 747s and then trucked to GM's Detroit/Hamtramck Assembly Plant for final assembly. The assembly process was known as the "Allanté Air Bridge". It was also referred to as "the world's longest assembly line." |- |&nbsp;||[[w:Pragoti|Pragoti Industries Ltd.]]||[[w:Sitakunda|Sitakunda]], [[w:Chittagong Division|Chittagong Division]]||[[w:Bangladesh|Bangladesh]]||[[w:Vauxhall Viva|Vauxhall Viva]]<br />[[w:Bedford Vehicles|Bedford trucks and buses]]<br />[[w:Bedford HA#The BTV|BTV]]||1966||1970's||Began as part of [[w:Ghandhara Industries|Ghandhara Industries]] Ltd. in 1966 when Bangladesh was still [[w:East Pakistan|East Pakistan]] and assembled GM vehicles like the Ghandhara plant in Karachi did. After Bangladesh became independent in 1971, the operation was nationalized by the new government and became Pragoti Industries Ltd. |- |&nbsp;||[[w:de:Reg. Armstrong Motors|Reg Armstrong Motors Ltd.]]||[[w:Ringsend|Ringsend]], [[w:Dublin|Dublin]]||[[w:Republic of Ireland|Republic of Ireland]]||[[w:Opel|Opel]] cars including [[w:Opel Kadett|Kadett]], [[w:Opel Rekord|Rekord]], and [[w:Opel Commodore|Commodore]]||1962||1974||From 1962-1965, assembly and distribution of Opels in Ireland was split between Reg Armstrong Motors and O’Shea’s Limited. After 1965, Reg Armstrong Motors was the sole Opel assembler and distributor in Ireland. Reg Armstrong Motors also assembled the [[w:NSU Prinz|NSU Prinz]], [[w:Honda motorcycles|Honda motorcycles]], and from 1976-1978, the original [[w:Mini|Mini]] at the Ringsend plant. Production ended due to Ireland joining the European Economic Community in 1973 and the end of tariffs on imports of completely built-up vehicles. This removed the need for local assembly in Ireland. |- |B (GM)||[[w:Société de Véhicules Automobiles de Batilly|Renault Batilly]]||[[w:Batilly, Meurthe-et-Moselle|Batilly]]||[[w:France|France]]||[[w:Renault Trafic#First generation (1980)|Opel/Vauxhall Arena]]<br />[[w:Renault Trafic#First generation (1980)|Renault Trafic]]<br />[[w:Renault Master#Second generation (1997)|Opel/Vauxhall Movano A]]<br />[[w:Renault Master#Third generation (2010)|Opel/Vauxhall Movano B]]<br />[[w:Renault Master|Renault Master]]<br />[[w:Renault Master#Renault Mascott|Renault Trucks Mascott]]<br />[[w:Nissan Interstar|Nissan Interstar]]<br />[[w:Nissan NV400|Nissan NV400]]||1997||2017||Renault-[[w:Société de Véhicules Automobiles de Batilly|SOVAB]] plant. Opel/Vauxhall was sold to [[w:PSA Group|PSA Group]] in 2017. As part of PSA Group, Opel/Vauxhall became part of [[w:Stellantis|Stellantis]] in 2021. Movano switched to being PSA/Fiat-based instead of Renault-based in 2021. |- |S (GM)||[[w:Sandouville Renault Factory|Renault Sandouville]]||[[w:Sandouville|Sandouville]]||[[w:France|France]]||[[w:Renault Trafic#Third generation (X82; 2014)|Opel/Vauxhall Vivaro]] B (high roof versions only) <br />[[w:Renault Trafic#Third generation (X82; 2014)|Renault Trafic]]<br />[[w:Nissan NV300|Nissan NV300]]<br />[[w:Renault Trafic#Third generation (X82; 2014)|Nissan Primastar]]<br />[[w:Renault Trafic#Third generation (X82; 2014)|Fiat Talento]]||2014||2017||Renault plant. Opel/Vauxhall was sold to [[w:PSA Group|PSA Group]] in 2017. Vivaro switched to being PSA-based instead of Renault-based in 2018. As part of PSA Group, Opel/Vauxhall became part of [[w:Stellantis|Stellantis]] in 2021. |- |&nbsp;||[[w:Renault Argentina|Renault Santa Isabel]]||[[w:Santa Isabel, Córdoba|Santa Isabel]], [[w:Córdoba Province, Argentina|Cordoba]]||[[w:Argentina|Argentina]]||[[w:Chevrolet D-20|Chevrolet C-20 & D-20]]<br />[[w:Chevrolet Tahoe#First generation (1992)|Chevrolet Grand Blazer]] (GMT400)<br />[[w:Chevrolet C/K#1997–2001|Chevrolet Silverado]] (GMT400)<br />[[w:Renault Trafic#South America|Chevrolet Trafic/SpaceVan]] ||1991||2002||[[w:Renault Argentina|Renault Argentina]]-CIADEA plant. Built Chevrolets under license for GM. |- |&nbsp;||[[w:Sevel Argentina|Sevel Argentina]]||[[w:Córdoba, Argentina|Estación Ferreyra, Córdoba]], [[w:Córdoba Province, Argentina|Cordoba]]||[[w:Argentina|Argentina]]||[[w:Chevrolet D-20|Chevrolet C-20/D-20]]||1985||1991||Fiat - PSA jointly owned plant. Built Chevrolets under license for GM. |- |For Saab<br> 9-2X:<br> G (w/man. trans.),<br> H (w/auto. trans.)||[[w:Subaru#Manufacturing facilities|Subaru Main Plant]]||[[w:Ōta, Gunma|Ōta, Gunma]]||[[w:Japan|Japan]]||[[w:Saab 9-2X|Saab 9-2X]] (2005-2006)<br />[[w:Subaru Forester#Second generation (SG; 2002)|Chevrolet Forester (India)]] (2003-2007)||2003 (GM prod.)||2007 (GM prod.)||[[w:Subaru|Subaru]] plant |- |4||[[w:Subaru-Isuzu Automotive|Subaru-Isuzu Automotive]] (S.I.A.)||[[w:Lafayette, Indiana|Lafayette, Indiana]]||United States||[[w:Holden Frontera#Second generation (1998)|Holden Frontera]] (UE/MX)||1999 (GM prod.)||2003 (GM prod.)||Subaru & Isuzu joint venture plant. Isuzu built a rebadged, rhd version of the 2nd generation US market Isuzu Rodeo & Amigo SUVs for export to GM Holden in Australia and New Zealand. |- |W (GM),<br />4 (Suzuki)||Suzuki Iwata Assembly||[[w:Iwata, Shizuoka|Iwata, Shizuoka]]||[[w:Japan|Japan]]||[[w:Chevrolet Tracker (Americas)#First generation|Geo Tracker]] (US: 1989-1990)<br />[[w:Suzuki Sidekick|Suzuki Sidekick]] (US: 1989-1995, 1997-98)<br />[[w:Suzuki Sidekick|Suzuki Sidekick Sport]] (US: 1996-1998)<br />[[w:Suzuki Grand Vitara|Suzuki Grand Vitara]] (1999-2013)<br />[[w:Suzuki XL-7#First generation (XL-7; 1998)|Suzuki XL-7]] (2001-2006)<br />[[w:Holden Drover#Second generation (1981)|Holden Drover (QB)]]<br />[[w:Holden Scurry#Eighth generation (DA71/DB71/DA81/DA41/DB41/DA51/DB51; 1985)|Holden Scurry (NB)]]||1985 (GM prod.)||1990 (GM prod.)||[[w:Suzuki|Suzuki]] plant |- |K (GM),<br />5 (Suzuki)||Suzuki Kosai Assembly||[[w:Kosai, Shizuoka|Kosai, Shizuoka]]||[[w:Japan|Japan]]||[[w:Chevrolet Sprint|Chevrolet Sprint]] (US: 1985-1988)<br />[[w:Geo Metro|Geo Metro]] (US: 1989-1993)<br />[[w:Pontiac Firefly|Pontiac Firefly]] (Canada)<br />[[w:Holden Barina#First generation (MB, ML; 1985–1988)|Holden Barina (MB/ML)]]<br />[[w:Holden Barina#Second generation (MF, MH; 1989–1994|Holden Barina (MF/MH)]]<br />[[w:Suzuki Cultus|Suzuki Swift]] (US: 1989-1994)<br />[[w:Suzuki Ignis#Chevrolet Cruze|Chevrolet/Holden Cruze (YGM1)]] (YG) ||1984 (GM prod.)||2008 (GM prod.)||[[w:Suzuki|Suzuki]] plant |- |M (GM),<br />0 (Suzuki/Fiat/Subaru)||[[w:Magyar Suzuki Corporation|Magyar Suzuki Corporation]]||[[w:Esztergom|Esztergom]]||[[w:Hungary|Hungary]]||[[w:Opel Agila#Second generation (H08; 2007)|Opel/Vauxhall Agila B]]<br />[[w:Suzuki Splash|Suzuki Splash]]<br />[[w:Suzuki Swift|Suzuki Swift]]<br />[[w:Suzuki Cultus#Second generation (1988)|Subaru Justy]]<br />[[w:Suzuki SX4|Suzuki SX4]]<br />[[w:Fiat Sedici|Fiat Sedici]]<br />[[w:Suzuki Ignis#Suzuki Ignis (2003 facelift)|Suzuki Ignis]]<br />[[w:Suzuki Ignis#Suzuki Ignis (2003 facelift)|Subaru G3X Justy]]||1992<br /><br />2007 (GM prod.)||2014 (GM prod.)||[[w:Suzuki|Suzuki]] plant |- |&nbsp;||Suzuki Sagara Assembly & Engine||[[w:Makinohara|Makinohara]], [[w:Shizuoka Prefecture|Shizuoka Prefecture]]||[[w:Japan|Japan]]||[[w:Chevrolet MW|Chevrolet MW]] (sold in Japan)<br />||2000||2010||[[w:Suzuki|Suzuki]] plant.<br /> Also built the 3.6-liter GM High Feature V6 engine ([[w:GM High Feature engine#LY7|Suzuki N36A]]) to power the [[w:Suzuki XL-7#Second generation (XL7; 2006)|2nd generation Suzuki XL7]] under license from GM. (Note: Dates reflect beginning & end dates of production for GM.) |- |&nbsp;||Tecna SA||[[w:Arica, Chile|Arica]]||[[w:Chile|Chile]]||[[w:Acadian (automobile)|Acadian]] (1962-71 from CKD kits supplied by GM Oshawa and Willow Run)<br />[[w:Beaumont (automobile)|Acadian Beaumont]] (1964-71 from CKD kits supplied by GM Oshawa)<br />[[w:Vauxhall Victor|Vauxhall Victor]]||1962||1971|| |- |&nbsp;||Tecno S.A.||[[w:Uruca|La Uruca]], [[w:San José, Costa Rica|San José]]||[[w:Costa Rica|Costa Rica]]||[[w:Bedford HA#The BTV|GM Amigo]]||1970s||(?)||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Amigo was assembled in Costa Rica. |- |&nbsp;||Tecnomotor S.A.||(?)||[[w:Paraguay|Paraguay]]||[[w:Bedford HA#The BTV|GM Mitai]]||1970s||(?)||A version of GM's [[w:Bedford HA#The BTV|BTV]] called the Mitai was assembled in Paraguay. |- |9 (GM),<br />6 (Fiat & Ram)||[[w:Tofaş|Tofaş]]||[[w:Bursa|Bursa]]||[[w:Turkey|Turkey]]||[[w:Opel Combo#Combo D (2012-2018)|Opel/Vauxhall Combo D]]<br />[[w:Fiat Doblo|Fiat Doblo]]<br />[[w:Ram ProMaster City|Ram ProMaster City]]||2011||2017||[[w:Fiat|Fiat]] plant (joint venture with Koç Holding of Turkey). Opel/Vauxhall was sold to PSA Group in 2017. Combo switched to being PSA-based instead of Fiat-based in 2019. As part of PSA Group, Opel/Vauxhall became part of Stellantis in 2021. Fiat and Tofaş also became part of Stellantis in 2021. |- |&nbsp;||[[w:Toyota Australia|Toyota Australia]] [[w:Toyota Australia Altona Plant|Altona plant]]||[[w:Altona North|Altona North]], [[w:Victoria (state)|Victoria]]||[[w:Australia|Australia]]||[[w:Holden Nova#Second generation (LG; 1994–1996)|Holden Nova (LG)]]<br />[[w:Toyota Corolla (E100)|Toyota Corolla (E100)]]<br />[[w:Holden Apollo|Holden Apollo (JM/JP)]]<br />[[w:Toyota Camry (XV10)|Toyota Camry (XV10)]]||1994||1996 (GM prod.)|| Production for GM Holden at Toyota's Australian plant was done as part of [[w:United Australian Automobile Industries|United Australian Automobile Industries]], a model sharing joint venture in Australia between Holden and Toyota from 1987-1996. This was created as part of the Australian government's [[w:Button car plan|Button car plan]] for rationalization of local automotive production. Toyota consolidated its Australian production at the new Altona plant in 1994-1995. The joint venture dissolved in 1996 and Holden's rebadged Toyotas were replaced with rebadged Opel models (Astra and Vectra) from GM Europe. Corolla production in Australia ended in 1999. Toyota closed the Altona plant in 2017. |- |&nbsp;||[[w:Toyota Australia|Toyota Australia]] Port Melbourne plant||[[w:Port Melbourne|Port Melbourne]], [[w:Victoria (state)|Victoria]]||[[w:Australia|Australia]]||[[w:Holden Apollo|Holden Apollo (JK/JL)]]<br />[[w:Toyota Camry#V20 (1986–1992)|Toyota Camry (V20)]]<br />[[w:Holden Apollo|Holden Apollo (JM)]]<br />[[w:Toyota Camry (XV10)|Toyota Camry (XV10)]]||1989 (GM prod.)||1994 (GM prod.)|| Production for GM Holden at Toyota's Australian plant was done as part of [[w:United Australian Automobile Industries|United Australian Automobile Industries]], a model sharing joint venture in Australia between Holden and Toyota from 1987-1996. This was created as part of the Australian government's [[w:Button car plan|Button car plan]] for rationalization of local automotive production. Toyota consolidated its Australian production at the new Altona plant in 1994-1995 and production ended at the older Port Melbourne plant in late 1994. The joint venture would later dissolve in 1996 and Holden's rebadged Toyota Camry was replaced with a rebadged Opel Vectra from GM Europe. |- |&nbsp;||PT. Udatin (Usaha Dagang Teknik Indonesia)||[[w:Surabaya|Surabaya]], [[w:East Java|East Java]]||[[w:Indonesia|Indonesia]]||[[w:Holden FC|Holden FC]]<br />[[w:Holden FB|Holden FB]]<br />[[w:Holden EK|Holden EK]]<br />[[w:Holden EJ|Holden EJ]]<br />[[w:Holden EH|Holden EH]]<br />[[w:Holden HQ|Holden HQ]]<br />[[w:Holden HJ|Holden HJ]]<br />[[w:Holden HX|Holden HX]]<br />[[w:Holden HZ|Holden HZ]]<br />[[w:Statesman (automobile)|Statesman brand HQ-HZ]]<br />[[w:Holden Monaro|Holden Monaro]] HQ<br />[[w:Holden Torana|Holden Torana]] LJ, LH, LX<br /> [[w:Holden Gemini#First generation|Holden Gemini TX, TC, TD, TE, TF, TG]]<br />[[w:Holden Camira|Holden Camira]] JB<br />[[w:Isuzu Aska#South-East Asia and New Zealand|Holden Aska]]<br />[[w:Holden Gemini#Second generation|Holden Gemini (RB)]]<br />[[w:Holden Commodore (VB)|Holden Commodore (VB)]]<br />[[w:Holden Commodore (VC)|Holden Commodore (VC)]]<br />[[w:Holden Commodore (VH)|Holden Commodore (VH)]]<br />[[w:Holden Commodore (VK)|Holden Commodore (VK)]]<br />[[w:Holden Commodore (VL)|Holden Calais (VL)]]<br />[[w:Isuzu Faster#Second generation (1980–1988)|Holden Lincah/Raider]]<br />[[w:GMC (automobile)|GMC trucks]]||1959||1988||Built vehicles under contract for GM. During the 1960's, production was off and on due to Indonesian government policies and the economic situation. Production ended in 1988. |- |&nbsp;||Unison||[[w:Minsk|Minsk]]||[[w:Belarus|Belarus]]||[[w:Chevrolet Tahoe#Fourth generation (2015)|Chevrolet Tahoe]] K2XX, [[w:Chevrolet Trax|Chevrolet Tracker]], [[w:Cadillac Escalade#Fourth generation (2015)|Cadillac Escalade]] K2XX, [[w:Opel Mokka#First generation (J13; 2012)|Opel Mokka]]||2015||2018||Built under contract by Unison for GM. Production ended in 2018. |- |6,7 (Saab)<br />9 (Opel/Vauxhall)||[[w:Valmet Automotive|Valmet Automotive]]||[[w:Uusikaupunki|Uusikaupunki]]||[[w:Finland|Finland]]||[[w:Saab 9-3#First generation (1998–2003)|Saab 9-3 Convertible & 9-3 Viggen]]<br />[[w:Saab 900|Saab 900]] (including 900 Convertible)<br />[[w:Opel Calibra|Opel/Vauxhall Calibra]]||1969||2003||Built under contract by [[w:Valmet Automotive|Valmet Automotive]] for Saab & for Opel/Vauxhall. Saab-Valmet was established in 1968 as a joint venture between Valmet and Saab-Scania. In 1992, Valmet became the sole owner, and the company was renamed Valmet Automotive in 1995. |- |X||[[w:ZAZ|ZAZ]]||[[w:Zaporizhia|Zaporizhia]] & [[w:Illichivsk|Illichivsk]]||[[w:Ukraine|Ukraine]]||[[w:Chevrolet Aveo (T200)|Chevrolet Aveo]], [[w:Chevrolet Lacetti|Chevrolet Lacetti]], [[w:Chevrolet Lanos|Chevrolet Lanos]], [[w:Opel Astra#G|Opel Astra Classic]], [[w:Opel Astra#H|Opel Astra]], [[w:Opel Corsa|Opel Corsa]], [[w:Opel Combo|Opel Combo]], [[w:Opel Meriva|Opel Meriva]], [[w:Opel Vectra|Opel Vectra]], [[w:Opel Zafira|Opel Zafira]]||2003||2012||Built under contract by [[w:ZAZ|ZAZ]] for GM. |- |} 2wxsihj29yoji5ea8ulads0xua1ng1c User:JJPMaster (bot)/markAdmins-Data.json 2 471107 4656583 4656265 2026-08-07T13:49:14Z JJPMaster (bot) 3488561 Bot: Updating markAdmins data 4656583 json application/json { ".snoopy.": [ "global-rollbacker", "editor" ], "1234qwer1234qwer4": [ "editor", "steward" ], "157yagz5r48a5f1a1f": [ "editor" ], "1997kB": [ "global-rollbacker", "global-renamer", "editor" ], "1F616EMO": [ "global-renamer" ], "1exec1": [ "transwiki", "editor" ], "1sfoerster": [ "editor" ], "20041027 tatsu": [ "global-rollbacker" ], "2005-Fan": [ "transwiki", "editor", "uploader" ], "331dot": [ "global-renamer" ], "33rogers": [ "editor" ], "3MMPEYTON": [ "editor" ], "4PlayerChess": [ "autoreview" ], "4pillars": [ "editor" ], "511KeV": [ "global-rollbacker" ], "94rain": [ "global-rollbacker", "editor" ], "A R King": [ "editor" ], "A Sulaiman Z": [ "editor" ], "A.K.Karthikeyan": [ "editor" ], "A09": [ "steward" ], "AFBorchert": [ "vrt-permissions" ], "AIProf": [ "editor" ], "ALittleSlow": [ "autoreview" ], "AManWithNoPlan": [ "editor" ], "ATannedBurger": [ "global-renamer" ], "AVRS": [ "editor" ], "Aafi": [ "vrt-permissions" ], "Abenwagner": [ "editor" ], "Abigor": [ "editor" ], "Abitt002": [ "editor" ], "Abyssal": [ "editor" ], "Acagastya": [ "autoreview" ], "Acalamari": [ "global-renamer" ], "Acarologiste": [ "editor" ], "AcidBat": [ "editor" ], "Acrow005": [ "editor" ], "Actualist": [ "editor" ], "Adalvis": [ "editor" ], "Adart001": [ "editor" ], "Adavyd": [ "global-renamer" ], "Addihockey10": [ "editor" ], "Addihockey10 (automated)": [ "editor" ], "Adrignola": [ "editor" ], "AdventureWriter": [ "editor" ], "Aelxen": [ "global-renamer" ], "Aferg006": [ "editor" ], "Afett001": [ "editor" ], "Affe2011": [ "global-rollbacker" ], "Agnerf": [ "editor", "uploader" ], "Agpires": [ "editor" ], "Agricola": [ "editor" ], "Agusbou2015": [ "editor" ], "Ah3kal": [ "editor" ], "Ahecht": [ "global-renamer", "vrt-permissions" ], "Ahonc": [ "global-renamer", "vrt-permissions" ], "AiClassEland": [ "editor" ], "Ainz Ooal Gown": [ "editor" ], "Airpmb": [ "editor" ], "Ajraddatz": [ "editor", "steward" ], "Aka": [ "vrt-permissions" ], "Alanah.97": [ "autoreview" ], "Albertoleoncio": [ "steward", "vrt-permissions" ], "Albmont": [ "editor" ], "Alchimista": [ "vrt-permissions" ], "Aldnonymous": [ "editor" ], "Aledownload": [ "editor" ], "Alexlatham96": [ "editor" ], "Alextejthompson": [ "editor" ], "Alison": [ "global-rollbacker" ], "AllenZh": [ "editor" ], "Alphama": [ "global-renamer" ], "AlvaroMolina": [ "editor" ], "AmandaNP": [ "steward" ], "Ambrevar": [ "editor" ], "Amcgail": [ "editor" ], "Ameisenigel": [ "global-rollbacker", "global-sysop", "ombuds", "editor", "vrt-permissions" ], "AmieKim": [ "editor" ], "Amire80": [ "global-sysop" ], "Anachronist": [ "editor", "vrt-permissions" ], "Ancient9983": [ "editor" ], "Andrei Stroe": [ "vrt-permissions" ], "Andrew janke": [ "editor" ], "Andriy.v": [ "vrt-permissions" ], "Andyross": [ "editor" ], "Anil Shaligram": [ "editor" ], "Animajosser": [ "editor" ], "Anne Correia": [ "editor" ], "Anonim Şahıs": [ "editor" ], "Anonymity": [ "editor" ], "AnotherEditor144": [ "autoreview" ], "Antanana": [ "vrt-permissions" ], "Antandrus": [ "editor" ], "Anthere": [ "editor" ], "AntiCompositeNumber": [ "steward", "vrt-permissions" ], "Antonizoon": [ "editor" ], "Antonw": [ "editor" ], "Apfelmus": [ "editor" ], "Aphoneyclimber": [ "editor" ], "Apocheir": [ "editor" ], "Aqurs1": [ "global-rollbacker", "global-renamer", "global-sysop" ], "AramilFeraxa": [ "steward" ], "Arch dude": [ "editor" ], "Archolman": [ "editor" ], "Arcticocean": [ "ombuds" ], "ArdentPerf": [ "editor", "uploader" ], "Arlen22": [ "transwiki", "editor" ], "Armchair": [ "editor" ], "Arno-nl": [ "editor" ], "Arrow303": [ "vrt-permissions" ], "Arthurvogel": [ "editor" ], "Artoria2e5": [ "editor" ], "Arturoiochoam": [ "editor" ], "Arunreginald": [ "editor" ], "AshLin": [ "editor" ], "Atcovi": [ "sysop", "global-rollbacker" ], "Athrash": [ "editor" ], "Atiedebee": [ "editor" ], "Atlas.Spheres": [ "editor" ], "Atsme": [ "vrt-permissions" ], "Auremel": [ "editor" ], "Austncorp": [ "editor" ], "AuthorsAndContributorsBot": [ "autoreview" ], "Avicennasis": [ "editor" ], "Avraham": [ "global-renamer", "editor" ], "Awesome Princess": [ "editor" ], "Axpde": [ "editor" ], "Az1568": [ "global-rollbacker" ], "Az2008": [ "editor" ], "Azotochtli": [ "editor" ], "B.Korlah": [ "editor" ], "BD2412": [ "editor" ], "BORGATO Pierandrea": [ "editor" ], "BRPever": [ "global-rollbacker", "global-sysop" ], "BRUTE": [ "editor" ], "Backfromquadrangle": [ "editor" ], "Baiji": [ "global-rollbacker" ], "Bakasakali": [ "editor" ], "Balaji.md au": [ "editor" ], "BarkingFish": [ "editor" ], "Barras": [ "steward" ], "Base": [ "steward", "vrt-permissions" ], "Bastique": [ "editor" ], "Bautsch": [ "editor" ], "BeardMD": [ "editor" ], "Beetstra": [ "global-rollbacker" ], "BenTels": [ "editor" ], "Bencemac": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "Benjamin J. Burger": [ "editor" ], "Benjamin.doe": [ "editor" ], "Benrattray": [ "editor" ], "Benson Muite": [ "editor" ], "Bentbracke": [ "editor" ], "Bequw": [ "editor" ], "Bert Niehaus": [ "autoreview" ], "BethNaught": [ "editor" ], "Beuc": [ "editor" ], "Bhardwaj Anil": [ "autoreview" ], "BiT": [ "editor" ], "Bigdelboy": [ "transwiki" ], "Bignose~enwikibooks": [ "editor" ], "Billinghurst": [ "global-rollbacker", "editor" ], "Billymac00": [ "editor" ], "Biplab Anand": [ "global-rollbacker", "global-sysop" ], "Birdofadozentides": [ "editor" ], "BitterAsianMan": [ "editor" ], "Bluefoxicy": [ "editor" ], "Bluerasberry": [ "vrt-permissions" ], "BobChan2": [ "editor" ], "Bodhisattwa": [ "vrt-permissions" ], "BoldLuis": [ "editor" ], "Borhan": [ "global-rollbacker", "vrt-permissions" ], "Boris1951zz": [ "editor" ], "Bpenn005": [ "editor" ], "Brewster239": [ "global-rollbacker" ], "Bridget": [ "global-rollbacker", "editor" ], "Brienna.Hall77": [ "editor" ], "Brim": [ "editor" ], "Brittanys": [ "editor" ], "Bronwynh": [ "editor" ], "Bsadowski1": [ "editor", "steward" ], "Buddpaul": [ "editor" ], "Bullercruz1": [ "editor" ], "Buncic": [ "editor" ], "Bunnypranav": [ "global-renamer" ], "BurakD53": [ "editor" ], "Burkep": [ "editor" ], "ByGrace": [ "editor" ], "Bykim2012": [ "editor" ], "C1203sc": [ "editor" ], "CJakes1": [ "editor" ], "CKWG - Ada Magica": [ "editor" ], "Cabayi": [ "global-renamer" ], "CaitlinCarbury": [ "autoreview" ], "CalciumTetraoxide": [ "editor" ], "CalendulaAsteraceae": [ "editor" ], "Caliburn": [ "editor" ], "CallumPoole": [ "editor" ], "Calvin.Andrus": [ "editor" ], "Cameron11598": [ "editor" ], "Camouflaged Mirage": [ "editor" ], "Captain-tucker": [ "vrt-permissions" ], "Carlo.milanesi": [ "editor" ], "Caro de Segeda": [ "editor" ], "CarsracBot": [ "editor" ], "Catermark": [ "editor" ], "Cecila123": [ "autoreview" ], "Cedar101": [ "editor" ], "Champion": [ "editor" ], "Chaojidage": [ "editor" ], "Chaojoker": [ "editor" ], "Chaotic Enby": [ "autoreview", "global-renamer" ], "Chapka": [ "editor" ], "Charidri": [ "editor" ], "Charleneabeana": [ "autoreview" ], "Charles Jeffrey Danoff": [ "editor" ], "CharlesHoffman": [ "editor" ], "Chazz": [ "editor" ], "Chelseafan528": [ "editor" ], "Cheryl2012": [ "editor" ], "Chescargot": [ "vrt-permissions" ], "Chi Sigma": [ "editor" ], "Chinmayee Mishra": [ "ombuds" ], "Chongkian": [ "editor" ], "Chowbok": [ "editor" ], "ChrisHodgesUK": [ "editor" ], "ChrisWallace": [ "editor" ], "Chriswaterguy": [ "editor" ], "Chuckhoffmann": [ "editor" ], "Church of emacs": [ "global-rollbacker" ], "Cic": [ "editor" ], "Ciell": [ "vrt-permissions" ], "Cilantrohead": [ "editor" ], "Cintilo": [ "editor" ], "Circuit dreamer": [ "editor" ], "Circuit-fantasist": [ "editor" ], "Civvì": [ "global-rollbacker", "global-renamer" ], "Ckwalker": [ "editor" ], "Clairerusselll": [ "autoreview" ], "Cloidl": [ "autoreview" ], "Cmsmcq": [ "editor" ], "Cnrowley": [ "editor" ], "CocoaZen": [ "editor" ], "CoconutOctopus": [ "global-renamer" ], "Codename Noreste": [ "sysop", "global-rollbacker", "interface-admin" ], "Codename Noroeste": [ "editor" ], "Codinghead": [ "editor" ], "CommonsDelinker": [ "autoreview" ], "Comp.arch": [ "editor" ], "Conan": [ "editor" ], "Cormullion": [ "editor" ], "Count Count": [ "steward" ], "Coupe": [ "editor" ], "Courcelles": [ "global-rollbacker", "editor" ], "CptViraj": [ "global-rollbacker", "global-renamer", "global-sysop" ], "Craignewland": [ "editor" ], "Craxd1": [ "editor" ], "CrazyEddy": [ "editor" ], "Cremastra": [ "editor" ], "Cremastra (JWB)": [ "autoreview" ], "Cromium": [ "editor" ], "Cromwellt": [ "editor" ], "Crystal East": [ "editor" ], "Cttcraig": [ "editor" ], "Cultures17": [ "editor" ], "Cultures33": [ "editor" ], "Cultures4": [ "editor" ], "Cultures92": [ "editor" ], "CunninghamJohn": [ "autoreview" ], "Curtaintoad": [ "editor" ], "Cyberpower678": [ "global-rollbacker" ], "Céréales Killer": [ "global-renamer" ], "D1n05aur5 4ever": [ "editor" ], "DARIO SEVERI": [ "autoreview", "global-rollbacker", "global-sysop" ], "DC Slagel": [ "editor" ], "DCB": [ "vrt-permissions" ], "DD 8630": [ "editor" ], "DGerman": [ "editor" ], "DVD206": [ "editor" ], "DZadventiste": [ "editor" ], "DaB.": [ "vrt-permissions" ], "DaGizza": [ "editor" ], "Dagana4": [ "autoreview" ], "Dallas1278": [ "editor" ], "Dan Koehl": [ "editor" ], "Dan Polansky": [ "editor" ], "Dan-aka-jack": [ "editor" ], "DanCherek": [ "autoreview" ], "Danarwaller": [ "editor" ], "DanielWhernchend": [ "editor" ], "Danielravennest": [ "editor" ], "Danilka5469": [ "editor" ], "Daniuu": [ "steward", "vrt-permissions" ], "DannyS712": [ "editor" ], "Darklama": [ "editor" ], "Darklilac": [ "editor" ], "Darrelljon": [ "editor" ], "DarwIn": [ "vrt-permissions" ], "Dave Braunschweig": [ "editor" ], "David L Davis": [ "editor" ], "DavidCary": [ "editor" ], "DavidLevinson": [ "editor" ], "Davidbena": [ "editor" ], "Dayshade": [ "editor" ], "Dchmelik": [ "editor" ], "Dcljr": [ "editor" ], "Dcondon": [ "editor" ], "Deepfriedokra": [ "global-renamer" ], "DejaVu": [ "global-rollbacker" ], "DennisDaniels": [ "editor" ], "Dennisblu": [ "uploader" ], "Denniss": [ "editor" ], "DerHexer": [ "editor", "steward", "vrt-permissions" ], "Derek Andrews": [ "editor" ], "Designermadsen": [ "editor" ], "Deu": [ "global-rollbacker" ], "Dexxor": [ "editor" ], "Dezedien": [ "vrt-permissions" ], "Diandramartin": [ "autoreview" ], "Didym": [ "vrt-permissions" ], "Dino Bronto Rex": [ "editor" ], "Dirk Hünniger": [ "editor" ], "Divinations": [ "global-rollbacker" ], "Djb": [ "editor" ], "Djbrown": [ "editor" ], "Dlrohrer2003": [ "editor" ], "Dmccreary": [ "editor" ], "Doc Taxon": [ "vrt-permissions" ], "Doctorxgc": [ "editor" ], "Dom walden": [ "editor" ], "Domdomegg": [ "editor" ], "DominikTurner": [ "autoreview" ], "DonaldKronos": [ "editor" ], "DoubleGrazing": [ "global-renamer" ], "Doubleotoo": [ "editor" ], "Downdate": [ "editor" ], "Dr-Taher": [ "global-renamer" ], "Dr.Unclear": [ "editor" ], "DreamRimmer": [ "global-renamer", "global-sysop" ], "Dreftymac": [ "editor" ], "Drpundir": [ "editor" ], "Drummingman": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "DuLithgow": [ "editor" ], "Dungodung": [ "vrt-permissions" ], "Duplode": [ "editor" ], "DustDFG": [ "editor" ], "Dyolf77": [ "vrt-permissions" ], "EDCU320RHT": [ "editor" ], "EDUC320 Sylvialiang": [ "editor" ], "EE JRW": [ "editor" ], "EMAD KAYYAM": [ "editor" ], "EPIC": [ "steward" ], "EarlGrey2005": [ "autoreview" ], "Ebe123": [ "editor" ], "Ecarew": [ "editor" ], "Edgar181": [ "editor" ], "Edit filter": [ "sysop" ], "EdoDodo": [ "editor" ], "Edornbush": [ "editor" ], "Edriiic": [ "editor" ], "Efex": [ "editor" ], "Efex3": [ "editor" ], "Effeietsanders": [ "editor", "vrt-permissions" ], "EggRoll97": [ "editor" ], "Egil": [ "editor" ], "Eihel": [ "global-rollbacker", "editor" ], "Ejs-80": [ "global-renamer" ], "Ekaroleski": [ "editor" ], "Elaurier": [ "editor" ], "Elcobbola": [ "vrt-permissions" ], "Electro": [ "editor" ], "ElfSnail123": [ "editor" ], "Eli bubo4ka": [ "editor" ], "Eliarani": [ "editor" ], "Elli": [ "global-renamer", "vrt-permissions" ], "Ellywa": [ "vrt-permissions" ], "Elmacenderesi": [ "vrt-permissions" ], "Elton": [ "editor", "steward" ], "Emha": [ "vrt-permissions" ], "EmilymDaniel": [ "autoreview" ], "Empire3131": [ "editor" ], "Encik Tekateki": [ "editor" ], "Enzomartinelli": [ "editor" ], "Eric Evers": [ "editor" ], "Erigena": [ "editor" ], "Erik Baas": [ "editor" ], "ErinNik": [ "editor" ], "Erinamukuta": [ "editor" ], "ErrantX": [ "editor" ], "EruannoVG": [ "editor" ], "Espen180": [ "editor" ], "Eta Carinae": [ "global-renamer" ], "Ethacke1": [ "editor" ], "Eumolpo": [ "editor" ], "Euphydryas": [ "global-renamer" ], "Eurodyne": [ "editor" ], "EvDawg93": [ "editor" ], "EvanCarroll": [ "editor" ], "Ewen": [ "editor" ], "Exusiai": [ "global-renamer" ], "Ezarate": [ "global-rollbacker", "vrt-permissions" ], "Fabartus": [ "editor", "uploader" ], "Faendalimas": [ "ombuds" ], "Fasten": [ "editor" ], "Faster than Thunder": [ "editor" ], "Fathoms Below": [ "global-renamer" ], "Fcorthay": [ "editor" ], "Fdena": [ "editor" ], "Federhalter": [ "editor" ], "Fehufanga": [ "global-rollbacker", "global-sysop" ], "Fekarp": [ "editor" ], "Fephisto": [ "editor" ], "Ferien": [ "global-rollbacker" ], "Fernando2812l": [ "editor" ], "Fernly": [ "editor" ], "Ffion B Thompson": [ "autoreview" ], "Fimatic": [ "editor" ], "FischX": [ "editor" ], "Fishpi": [ "editor" ], "Flattail": [ "editor" ], "FlightTime": [ "global-renamer" ], "Flolit": [ "editor" ], "Fluffernutter": [ "vrt-permissions" ], "FlyingAce": [ "global-rollbacker" ], "Fountain Pen": [ "editor" ], "Fr33kman": [ "editor" ], "FrancisFromGaspesie": [ "editor" ], "Frantsch": [ "autoreview" ], "Fredericknortje": [ "editor" ], "Fritzlein~enwikibooks": [ "editor" ], "Frozen Wind": [ "transwiki", "editor" ], "Ftaljaard": [ "editor" ], "Ftiercel": [ "editor" ], "Furrykef": [ "editor" ], "GKFX": [ "editor" ], "Galahad": [ "global-rollbacker" ], "Gampe": [ "vrt-permissions" ], "Ganímedes": [ "vrt-permissions" ], "Gary Dorman Wiggins": [ "editor", "uploader" ], "Garygaryj": [ "editor" ], "Gat lombard": [ "editor" ], "Gc211": [ "editor" ], "Geagea": [ "vrt-permissions" ], "Geekgirl": [ "editor" ], "GemmaCampbell": [ "autoreview" ], "Geoff Plourde": [ "editor" ], "Geofferybard": [ "transwiki", "editor" ], "GerbenRienk": [ "editor" ], "Gerges": [ "global-rollbacker", "global-renamer" ], "Germany Poul Ah": [ "editor" ], "Gertbuschmann": [ "editor" ], "Ggee0621": [ "editor" ], "Gifnk dlm 2020": [ "editor", "uploader" ], "Girdi": [ "editor" ], "Glaisher": [ "editor" ], "Glane23": [ "vrt-permissions" ], "Gleb713": [ "autoreview" ], "Glich": [ "editor" ], "Gllyons": [ "editor" ], "Gmasterman": [ "editor" ], "GoblinInventor": [ "editor" ], "Godsy": [ "autoreview" ], "Good afternoon": [ "editor" ], "GoreyCat": [ "editor" ], "GorgeUbuasha": [ "editor" ], "GorillaWarfare": [ "vrt-permissions" ], "Gott wisst": [ "editor" ], "Goulart": [ "editor" ], "Gpkp": [ "editor" ], "Gracebaysinger": [ "editor" ], "Graeme E. Smith": [ "editor" ], "Greatswrd": [ "editor" ], "GreenC": [ "editor" ], "Greenbreen": [ "editor" ], "Greenman": [ "editor" ], "GregXenon01": [ "editor" ], "Gretski247": [ "editor" ], "GreyCat": [ "editor" ], "Grin": [ "vrt-permissions" ], "Growl41": [ "editor" ], "Guaka": [ "editor" ], "Guanaco": [ "editor" ], "GuillermoHazebrouck": [ "editor" ], "Guus": [ "editor" ], "Guy vandegrift": [ "editor" ], "Guywan": [ "editor" ], "Gzuufy": [ "editor" ], "HJ Mitchell": [ "autoreview" ], "HLand": [ "editor" ], "HYanWong": [ "editor" ], "Ha98574": [ "editor" ], "Hagindaz": [ "editor" ], "HakanIST": [ "editor", "steward" ], "Hamish": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "Hanay": [ "vrt-permissions" ], "Hannes Röst": [ "editor" ], "Hans Adler": [ "editor" ], "Haoreima": [ "editor" ], "Happy-melon": [ "editor" ], "Harry Wood": [ "editor" ], "Harrybrowne1986": [ "editor" ], "Harv4": [ "editor" ], "Hasley": [ "editor" ], "Hazard-SJ": [ "global-rollbacker" ], "He7d3r": [ "editor" ], "HenkvD": [ "editor" ], "Herbythyme": [ "editor" ], "Hercule": [ "editor" ], "Herman darman": [ "editor" ], "HerrHartmuth": [ "editor" ], "Hethrir": [ "editor" ], "HgDeviasse": [ "editor" ], "Hippias": [ "editor" ], "Hliow": [ "autoreview" ], "Holder": [ "global-rollbacker", "global-sysop" ], "Holdoffhunger": [ "editor" ], "Hoo man": [ "editor", "steward" ], "HouseBlaster": [ "global-renamer" ], "Howard Beale": [ "editor" ], "Hpon": [ "editor" ], "Hrkalona": [ "autoreview" ], "Hskeet": [ "editor", "uploader" ], "Htm": [ "vrt-permissions" ], "Hugetim": [ "editor" ], "Humaira Ali": [ "editor" ], "Huntertur": [ "editor" ], "Hydriz": [ "global-rollbacker" ], "Ibidthewriter": [ "editor" ], "Ibrahim Sani Mustapha": [ "editor" ], "Ibrahim.ID": [ "global-renamer", "vrt-permissions" ], "Icetruck": [ "editor" ], "Icodense": [ "global-rollbacker", "global-sysop" ], "Idavidmiller": [ "editor" ], "Ideasman42": [ "editor" ], "Igna": [ "editor" ], "Ijon": [ "vrt-permissions" ], "Illusional": [ "editor" ], "Iluvatar": [ "global-rollbacker", "vrt-permissions" ], "Indiana": [ "editor" ], "Inductiveload": [ "editor" ], "Inertia6084": [ "autoreview" ], "Inferno986return": [ "editor" ], "Infinite0694": [ "global-rollbacker", "global-sysop" ], "Ingolemo": [ "editor" ], "Insignificantwrangler": [ "editor" ], "Internoob": [ "transwiki", "editor" ], "InverseHypercube": [ "editor" ], "Isenhand": [ "editor" ], "Ish ishwar": [ "editor" ], "Iste Praetor": [ "editor" ], "ItsNyoty": [ "vrt-permissions" ], "Itsmeyash31": [ "autoreview" ], "Itswikisam": [ "editor" ], "Itti": [ "global-renamer", "vrt-permissions" ], "Ixfd64": [ "editor" ], "J ansari": [ "global-rollbacker" ], "J.palacios.jean": [ "editor" ], "J36miles": [ "editor" ], "JBW": [ "global-renamer" ], "JCrue": [ "editor" ], "JJ12880": [ "editor" ], "JJMC89": [ "vrt-permissions" ], "JJPMaster": [ "sysop", "global-rollbacker", "global-renamer", "interface-admin", "vrt-permissions" ], "JJPMaster (test 1)": [ "autoreview" ], "JJohnson": [ "editor" ], "JJohnson1701": [ "editor" ], "JPPINTO": [ "editor" ], "Jack Frost": [ "vrt-permissions" ], "JackBot": [ "editor" ], "JackPotte": [ "sysop", "interface-admin" ], "Jackhand1": [ "autoreview" ], "Jacob J. Walker": [ "editor" ], "Jafeluv": [ "global-rollbacker", "editor" ], "Jake Park": [ "global-renamer" ], "Jakec": [ "editor" ], "JamesCrook": [ "editor" ], "JamesNZ": [ "editor" ], "Jamesofur": [ "global-rollbacker" ], "Jamesssss": [ "editor" ], "Jamzze": [ "editor" ], "Jan Myšák": [ "global-rollbacker" ], "Jan.duggan": [ "autoreview" ], "Janbery": [ "global-rollbacker", "vrt-permissions" ], "Janpha": [ "editor" ], "Janschejbal": [ "editor" ], "Jason.Cozens": [ "editor" ], "Jaspalkaler": [ "editor" ], "Jasper Deng": [ "global-rollbacker" ], "JavaHurricane": [ "global-rollbacker", "editor" ], "Javier Carro": [ "editor" ], "JavierCantero": [ "editor" ], "Jay Bolero": [ "editor" ], "Jazzmanian": [ "editor" ], "Jcb": [ "editor", "vrt-permissions" ], "Jcwf": [ "editor" ], "Jeff G.": [ "global-rollbacker", "editor" ], "Jeff1138": [ "editor" ], "Jellysandwich0": [ "editor" ], "JenVan": [ "editor" ], "JenniferPalacios": [ "editor" ], "Jenniferjkidd": [ "editor" ], "Jens Østergaard Petersen": [ "editor" ], "JeremyMcCracken": [ "editor" ], "Jeroenr": [ "editor" ], "Jerome Charles Potts": [ "editor" ], "Jerry vlntn": [ "editor" ], "Jesdisciple": [ "editor" ], "Jfmantis": [ "editor" ], "Jianhui67": [ "global-rollbacker", "editor" ], "Jianhui67 public": [ "editor" ], "Jim Ashby": [ "autoreview" ], "JimKillock": [ "editor" ], "Jimbotyson": [ "editor" ], "Jimmy Xu": [ "vrt-permissions" ], "Jkauf007": [ "editor" ], "Jmdeschamps": [ "uploader" ], "Jnanaranjan sahu": [ "ombuds" ], "Jnewh001": [ "editor" ], "Jobin RV": [ "editor" ], "Joewiz": [ "editor" ], "Johannes Bo": [ "editor" ], "Johannnes89": [ "steward" ], "John Cross": [ "editor" ], "JohnMarcelo": [ "editor" ], "Johnkn63": [ "editor" ], "Johnwhelan": [ "editor" ], "Jokes Free4Me": [ "editor" ], "Jomegat": [ "editor" ], "Jon Harald Søby": [ "vrt-permissions" ], "Jon Kolbert": [ "steward", "vrt-permissions" ], "Jonathan Webley": [ "editor" ], "Jordan Brown": [ "editor" ], "JorisvS": [ "editor" ], "Josve05a": [ "vrt-permissions" ], "Jrincayc": [ "editor" ], "Jsnaree": [ "editor" ], "Jtneill": [ "editor" ], "JuethoBot": [ "autoreview" ], "Jugandi": [ "editor" ], "Jules*": [ "global-renamer" ], "Juliancolton": [ "global-rollbacker", "editor" ], "Jumark27": [ "editor" ], "JustTheFacts33": [ "editor" ], "Justlettersandnumbers": [ "global-renamer", "vrt-permissions" ], "K6ka": [ "global-rollbacker", "global-renamer" ], "Kadı": [ "global-renamer", "vrt-permissions" ], "Kai Burghardt": [ "editor" ], "Kaltenmeyer": [ "editor" ], "Kambai Akau": [ "editor" ], "Kanjy": [ "global-rollbacker", "editor" ], "Kapooht": [ "editor" ], "Karl Wick": [ "editor" ], "Karosent": [ "editor" ], "Kashkhan": [ "editor" ], "Kathryn Mary Nicholson": [ "autoreview" ], "Katiemgeorge": [ "editor" ], "Katyauchter": [ "editor" ], "Kaushlendratripathi": [ "editor" ], "Kaw8yh": [ "editor" ], "Kayau": [ "transwiki", "editor" ], "Kellen": [ "editor" ], "Kelti": [ "editor" ], "Kiefer.Wolfowitz": [ "editor" ], "Killarnee": [ "editor" ], "King of Hearts": [ "vrt-permissions" ], "Kingaustin07": [ "editor" ], "Kingofnuthin": [ "editor" ], "Kirito": [ "global-rollbacker", "editor" ], "Kittycataclysm": [ "sysop" ], "Kj cheetham": [ "global-renamer" ], "Kkmurray": [ "editor" ], "Kl-robertson": [ "editor" ], "Klaas van Buiten": [ "editor" ], "Knittedbees": [ "transwiki", "editor" ], "Knoppson": [ "autoreview" ], "Koantum": [ "editor" ], "Koavf": [ "sysop", "global-rollbacker" ], "Kodos": [ "editor" ], "KonstantinaG07": [ "editor", "steward" ], "Kowey": [ "editor" ], "KrakatoaKatie": [ "vrt-permissions" ], "Krd": [ "vrt-permissions" ], "Krdbot": [ "vrt-permissions" ], "Kri": [ "editor" ], "Krinkle": [ "global-rollbacker" ], "Kropotkine 113": [ "vrt-permissions" ], "Kruusamägi": [ "vrt-permissions" ], "Ktucker": [ "editor" ], "Kwamikagami": [ "editor" ], "Kwhitefoot": [ "editor" ], "Kylu": [ "editor" ], "Kızıl": [ "global-renamer" ], "L10nM4st3r": [ "editor" ], "LABoyd2": [ "editor" ], "LR0725": [ "global-rollbacker", "global-sysop" ], "Ladislav": [ "editor" ], "Ladsgroup": [ "global-renamer" ], "Ladybug62": [ "editor" ], "Lagoset": [ "editor" ], "Larsnooden": [ "editor" ], "Laurianedani": [ "editor" ], "Lcraw005": [ "editor" ], "Ldo": [ "editor" ], "Leaderboard": [ "sysop", "global-renamer", "interface-admin" ], "Learnerktm": [ "editor" ], "Lechatjaune": [ "vrt-permissions" ], "Leighblackall": [ "editor" ], "Lengel46": [ "editor" ], "Lentokonefani": [ "global-renamer" ], "LeoChiukl": [ "editor" ], "Leonard64": [ "uploader" ], "Leonidlednev": [ "autoreview", "global-rollbacker" ], "Leovanderven": [ "editor" ], "Lesless": [ "vrt-permissions" ], "Leyo": [ "global-rollbacker" ], "Lgriot": [ "editor" ], "Liam987": [ "editor" ], "Liao": [ "editor" ], "Libperry": [ "editor" ], "Limiza": [ "editor" ], "Lionel Cristiano": [ "editor" ], "Litlok": [ "global-renamer" ], "Little Sunshine": [ "global-renamer" ], "Llakew": [ "editor" ], "LlamaAl": [ "editor" ], "Lobsteroh": [ "editor" ], "LodestarChariot2": [ "editor" ], "Lofty abyss": [ "global-rollbacker", "editor", "vrt-permissions" ], "Logictheo": [ "editor" ], "Lomita": [ "vrt-permissions" ], "Londonjackbooks": [ "editor" ], "Lovepeacejoy404": [ "editor" ], "Lp0 on fire": [ "autoreview", "global-rollbacker" ], "Lubaochuan": [ "editor" ], "Luckas Blade": [ "editor" ], "Lucystewpid": [ "autoreview" ], "Ludovic Brenta": [ "editor" ], "Ludovicocaldara": [ "editor", "uploader" ], "Lukas²³": [ "editor" ], "LukeCEL": [ "editor" ], "Lvova": [ "vrt-permissions" ], "Lwill031": [ "editor" ], "M7": [ "steward" ], "MARKELLOS": [ "vrt-permissions" ], "MBq": [ "global-renamer" ], "MF-Warburg": [ "global-rollbacker", "global-sysop", "editor" ], "MGA73": [ "vrt-permissions" ], "MIacono": [ "editor" ], "MNeuschaefer": [ "editor" ], "MS Sakib": [ "global-renamer", "vrt-permissions" ], "Mabdul": [ "transwiki", "editor", "uploader" ], "Madisonhen": [ "autoreview" ], "Magda.dagda": [ "editor" ], "Magnus Manske": [ "editor" ], "Mahagaja": [ "editor" ], "MaikoM93": [ "editor" ], "Maire": [ "global-renamer" ], "Malarz pl": [ "global-renamer" ], "Manchiu": [ "global-renamer" ], "MandoRachovitsa": [ "autoreview" ], "Mandy Hopkins": [ "editor" ], "ManuelGR": [ "editor" ], "MarcGarver": [ "sysop", "checkuser", "steward" ], "Marco Klunder": [ "editor" ], "MarcoAurelio": [ "editor" ], "Marcus Cyron": [ "vrt-permissions" ], "Mardus": [ "editor" ], "MarkJFernandes": [ "editor" ], "MarkTraceur": [ "editor" ], "Markcwm": [ "editor" ], "Markhobley": [ "editor" ], "MarsRover": [ "editor" ], "Marshman~enwikibooks": [ "editor" ], "Martin Kraus": [ "editor" ], "Martin Sauter": [ "editor" ], "Martin Urbanec": [ "editor", "steward", "vrt-permissions" ], "MartinPoulter": [ "editor" ], "Martinwguy2": [ "editor" ], "MarygoldRules": [ "editor" ], "Master tongue": [ "editor" ], "Masti": [ "steward", "vrt-permissions" ], "Math buff": [ "editor" ], "MathXplore": [ "global-rollbacker", "editor" ], "Mathildem16": [ "autoreview" ], "Mathmensch": [ "editor" ], "Mathmensch-Smalledits": [ "editor" ], "Mathmogeek": [ "editor" ], "Maths314": [ "editor" ], "Matiia": [ "editor" ], "Matrix": [ "autoreview", "vrt-permissions" ], "Matsievsky": [ "editor" ], "Mattb112885": [ "editor" ], "Mattbarton.exe": [ "editor" ], "Matttest": [ "autoreview" ], "Max Milas": [ "editor" ], "Maxim": [ "editor" ], "Maximillion Pegasus": [ "global-rollbacker", "editor" ], "Maxint2": [ "editor" ], "Mazbel": [ "global-rollbacker" ], "Mbch331": [ "vrt-permissions" ], "Mbrickn": [ "transwiki", "editor" ], "Mcdonnkm": [ "editor" ], "Mcld": [ "editor" ], "Mdkoch84": [ "editor" ], "Mdmckenzie": [ "editor" ], "MdsShakil": [ "steward", "vrt-permissions" ], "Mdupont": [ "editor" ], "Me Lendroz": [ "editor" ], "Meanmicio": [ "editor" ], "Mecanismo": [ "editor" ], "MediaKyle": [ "editor" ], "Meditation": [ "editor" ], "Meev0": [ "editor" ], "Mehman": [ "ombuds", "vrt-permissions" ], "Melos": [ "steward", "vrt-permissions" ], "MemicznyJanusz": [ "global-renamer" ], "Mendelivia~enwikibooks": [ "editor" ], "Meniktah": [ "editor" ], "Mercy": [ "global-rollbacker", "editor" ], "MerlLinkBot": [ "editor" ], "Mfield": [ "global-renamer" ], "Mh7kJ": [ "editor" ], "Michael Romanov": [ "editor" ], "MichaelFrey": [ "editor" ], "Michaelbluett": [ "editor", "uploader" ], "Mido": [ "vrt-permissions" ], "MihalOrela": [ "editor" ], "MiiCii": [ "editor" ], "Mike Hayes": [ "editor" ], "Mike.lifeguard": [ "editor" ], "Mild Bill Hiccup": [ "editor" ], "Mill3315": [ "editor" ], "Millbart": [ "vrt-permissions" ], "Mimarx": [ "editor" ], "Min1996": [ "autoreview" ], "Minorax": [ "global-rollbacker", "global-sysop", "editor" ], "Mirinano": [ "global-rollbacker" ], "Mithridates": [ "editor" ], "Mjbt": [ "editor" ], "Mjchael": [ "editor" ], "Mjkaye": [ "editor" ], "Mkline": [ "autoreview" ], "Mlipl001": [ "editor" ], "Moby-Dick4000": [ "editor" ], "Mohean": [ "editor" ], "Money-lover-12345": [ "editor" ], "Moonriddengirl": [ "autoreview", "vrt-permissions" ], "Mortense": [ "editor" ], "Mpfau": [ "editor" ], "Mr. Stradivarius": [ "editor" ], "MrAlanKoh": [ "editor" ], "MrJaroslavik": [ "global-rollbacker", "ombuds" ], "Mrajcok": [ "editor" ], "Mrjulesd": [ "editor" ], "Mrwojo": [ "editor" ], "Mschrag": [ "editor" ], "Msmithma": [ "editor" ], "MtPenguinMonster": [ "editor" ], "Mtarch11": [ "global-rollbacker", "global-sysop", "editor" ], "Musical Inquisit": [ "editor" ], "Mussklprozz": [ "vrt-permissions" ], "Mvolz": [ "editor" ], "Mwtoews": [ "editor" ], "Mxn": [ "editor" ], "Myklaw": [ "editor" ], "Mykola7": [ "steward" ], "Mys 721tx": [ "global-renamer", "vrt-permissions" ], "NDG": [ "global-rollbacker", "editor" ], "Nadzik": [ "global-rollbacker", "global-renamer" ], "NahidSultan": [ "vrt-permissions" ], "Nangkhan Magar": [ "editor" ], "Natuur12": [ "vrt-permissions" ], "Nbarth": [ "editor" ], "Nbro": [ "editor" ], "Nehaoua": [ "ombuds" ], "Neils51": [ "editor" ], "Nemoralis": [ "vrt-permissions" ], "Neojacob": [ "editor" ], "Neriah": [ "global-rollbacker", "global-renamer" ], "Nesbit": [ "editor" ], "Newlisp": [ "editor" ], "Nfgdayton": [ "editor" ], "NguoiDungKhongDinhDanh": [ "global-rollbacker", "editor" ], "NhacNy2412": [ "global-renamer" ], "Nick.anderegg": [ "editor" ], "NickPenguin": [ "editor" ], "NicoScribe": [ "editor" ], "Nicole Sharp": [ "editor" ], "Nieuwsgierige Gebruiker": [ "editor" ], "Nigos": [ "autoreview" ], "Nihonjoe": [ "global-renamer" ], "Nikai": [ "editor" ], "Ninjastrikers": [ "vrt-permissions" ], "NipplesMeCool": [ "editor" ], "Njardarlogar": [ "editor" ], "Nobody60": [ "editor" ], "Nolispanmo": [ "vrt-permissions" ], "Nomstuff": [ "autoreview" ], "Nonenmac": [ "editor" ], "Norton": [ "editor" ], "Npettiaux": [ "editor" ], "Nsaa": [ "vrt-permissions" ], "Nthep": [ "vrt-permissions" ], "NuclearWarfare": [ "global-rollbacker", "editor" ], "OMSMike": [ "editor" ], "Officer781": [ "editor" ], "Oleander": [ "editor" ], "Oliviacatherall": [ "autoreview" ], "Omphalographer": [ "editor" ], "OnBeyondZebrax": [ "editor" ], "Onsen": [ "editor" ], "Ontzak": [ "global-renamer" ], "Orderud": [ "editor" ], "OrenBochman": [ "editor" ], "Oshwah": [ "global-renamer" ], "Ottawahitech": [ "editor" ], "Owain.davies": [ "editor" ], "PAC": [ "editor" ], "PAC2": [ "editor" ], "PK 97": [ "editor" ], "PNW Raven": [ "editor" ], "Pac8612": [ "editor" ], "Paloi Sciurala": [ "global-rollbacker" ], "Panic2k4": [ "transwiki", "editor" ], "Pascal Pignard": [ "editor" ], "Pastbury": [ "editor" ], "Pathfinders": [ "editor" ], "Pathoschild": [ "editor" ], "Patrik": [ "editor" ], "PauSix": [ "editor" ], "Paul James": [ "editor" ], "Pavroo": [ "editor" ], "PbakerODU": [ "editor" ], "Pbrower2a": [ "editor" ], "Pearts": [ "editor" ], "Peeragogia": [ "editor" ], "Peri Coleman": [ "editor" ], "Perl~enwikibooks": [ "editor" ], "Peter1180": [ "editor" ], "PeterEasthope": [ "editor" ], "Peyton09": [ "editor" ], "Phan M. Nhat": [ "autoreview" ], "PhilKnight": [ "global-renamer" ], "Phoebe": [ "editor" ], "Phosgram": [ "editor" ], "Pi zero": [ "editor" ], "PieWriter": [ "editor" ], "Piotrus": [ "editor" ], "Pithikos": [ "editor" ], "Pittsburgh Poet": [ "editor" ], "Pjpearce": [ "editor" ], "Pkkao": [ "editor" ], "Planotse": [ "editor" ], "Platonides": [ "vrt-permissions" ], "Pluke": [ "editor" ], "PlyrStar93": [ "global-rollbacker", "editor" ], "Pminh141": [ "global-renamer" ], "Pmlineditor": [ "editor" ], "Pmw57": [ "editor" ], "Poetcsw": [ "editor" ], "PoizonMyst": [ "editor" ], "Pola 2607": [ "autoreview" ], "Polimerek": [ "vrt-permissions" ], "Polluks": [ "editor" ], "Pookiyama": [ "editor" ], "Popski": [ "editor" ], "Povigna": [ "editor" ], "Ppolar bear": [ "global-rollbacker", "global-renamer" ], "Pppery": [ "autoreview" ], "Prahlad balaji": [ "editor" ], "Pratyeka": [ "editor" ], "Praxidicae": [ "global-rollbacker", "global-sysop", "editor" ], "Primefac": [ "vrt-permissions" ], "Prince Kassad~enwikibooks": [ "editor" ], "Pronesto": [ "editor" ], "Prototyperspective": [ "autoreview" ], "Psoup": [ "editor" ], "Psr1909": [ "editor" ], "PullUpYourSocks": [ "editor" ], "PurpleBuffalo": [ "global-renamer" ], "PurplePieman": [ "editor" ], "Purplebackpack89": [ "editor" ], "Putukas01": [ "editor" ], "Qenalcu": [ "autoreview" ], "Quebecguy": [ "global-rollbacker" ], "QueerEcofeminist": [ "global-rollbacker", "global-renamer", "editor" ], "Quinlan83": [ "global-rollbacker", "editor" ], "Quintucket": [ "editor" ], "Qwerty number1": [ "editor" ], "Qwertyus": [ "editor" ], "Qədir": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "R. Henrik Nilsson": [ "editor" ], "RAdimer-WMF": [ "global-rollbacker" ], "RDBury": [ "editor" ], "RJHall": [ "editor" ], "Ra'ike": [ "vrt-permissions" ], "Rachboots": [ "editor" ], "Rachel": [ "editor" ], "Rachmat04": [ "global-renamer", "vrt-permissions" ], "RadiX": [ "editor", "steward", "vrt-permissions" ], "Raffaela Kunz": [ "editor" ], "Rahulkepapa": [ "editor" ], "Ramac": [ "editor" ], "Rambam rashi": [ "editor" ], "Randykitty": [ "autoreview", "global-rollbacker" ], "RatónMístico176": [ "editor" ], "Ravichandar84": [ "editor" ], "Rawheatley": [ "editor" ], "Ray Trygstad": [ "editor" ], "RayeChellMahela": [ "editor" ], "Raymond": [ "vrt-permissions" ], "Razr Nation": [ "editor" ], "Rchaswms01": [ "editor" ], "Rcragun": [ "editor", "uploader" ], "Readyokaygo": [ "editor" ], "Recent Runes": [ "editor" ], "Redlentil": [ "editor" ], "Refcanimm": [ "editor" ], "Regasterios": [ "vrt-permissions" ], "Reinhard Kraasch": [ "vrt-permissions" ], "RenaissanceMan2144": [ "autoreview" ], "Renamed user 242094acfb1a5b2f08e9e78f2e021a40": [ "editor" ], "Renamed user 5f91ca71739b07cfce8397eed758fe13": [ "editor", "uploader" ], "Renamed user f26394dcb19bd7bdad78f0d752896653": [ "editor" ], "Renvoy": [ "global-rollbacker", "global-sysop" ], "Reseletti": [ "editor" ], "Retropunk": [ "editor" ], "Reuben1508": [ "autoreview" ], "Revi C.": [ "global-rollbacker", "global-renamer", "ombuds", "editor", "vrt-permissions" ], "Reyk": [ "editor" ], "Rfc1394": [ "editor" ], "Rgdboer": [ "editor" ], "Rgreenone": [ "editor" ], "Rhole2001": [ "autoreview" ], "Rich Farmbrough": [ "editor" ], "Rickstambaugh": [ "editor" ], "Riggwelter": [ "vrt-permissions" ], "Risk": [ "editor" ], "Risteall": [ "editor" ], "Ritjesman": [ "editor" ], "RoMancer": [ "editor" ], "Robbiemorrison": [ "editor" ], "Robert Huber~enwikibooks": [ "editor" ], "Roberto Mura": [ "editor" ], "Robertsky": [ "global-renamer", "vrt-permissions" ], "RobinH": [ "editor" ], "Rodasmith": [ "editor" ], "Rodrigo": [ "editor" ], "Rodrigo.Argenton": [ "vrt-permissions" ], "Rogerborrell": [ "editor" ], "Rogerdpack": [ "editor" ], "RogueScholar": [ "editor" ], "Romainbehar": [ "editor" ], "RomaineBot": [ "vrt-permissions" ], "RonaldB": [ "vrt-permissions" ], "Rosser1954": [ "editor" ], "Rotlink": [ "editor" ], "RoySmith": [ "ombuds" ], "Rozzychan": [ "editor" ], "Rplano": [ "editor" ], "Rreagan007": [ "autoreview" ], "Rrgreen": [ "editor" ], "Rschen7754": [ "global-rollbacker", "editor" ], "RshieldsVA": [ "editor" ], "Rsjaffe": [ "global-renamer" ], "Rtaisis": [ "editor" ], "Ruakh": [ "editor" ], "Rudolpho~enwikibooks": [ "editor" ], "Runfellow": [ "editor" ], "Runner4lyfe": [ "editor" ], "RunningBlind": [ "editor" ], "Ruthven": [ "vrt-permissions" ], "Ruud Koot": [ "transwiki", "editor" ], "Rzuwig": [ "autoreview", "global-rollbacker" ], "S8321414": [ "global-renamer" ], "SB Johnny": [ "editor" ], "SCP-2000": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "SHB2000": [ "sysop", "steward" ], "SPM": [ "editor" ], "Sae1962": [ "editor" ], "Safuan12616": [ "editor" ], "SahniM": [ "editor" ], "Sakretsu": [ "steward" ], "Sakura emad": [ "global-rollbacker" ], "Salil Kumar Mukherjee": [ "editor" ], "Samat": [ "vrt-permissions" ], "Sammy2012": [ "editor" ], "Samuel.dellit": [ "editor" ], "Samuele2002": [ "global-rollbacker", "editor" ], "Samwilson": [ "editor" ], "SanBonne": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "Sandbergja": [ "editor" ], "Sannita": [ "vrt-permissions" ], "Sante Caserio~enwikibooks": [ "editor" ], "SarahFatimaK": [ "editor" ], "Sargoth": [ "vrt-permissions" ], "Saroj": [ "global-rollbacker" ], "Sascha Lill 95": [ "editor" ], "Satdeep Gill": [ "vrt-permissions" ], "Savh": [ "global-rollbacker", "editor" ], "Sbb1413": [ "editor" ], "Scention": [ "editor" ], "Schniggendiller": [ "steward" ], "SchreiberBike": [ "editor" ], "Scott.beckman": [ "editor" ], "Sebastian Wallroth": [ "vrt-permissions" ], "Seewolf": [ "global-rollbacker", "vrt-permissions" ], "Sekidoki": [ "vrt-permissions" ], "Selden": [ "editor" ], "Sennecaster": [ "vrt-permissions" ], "Serinap": [ "editor" ], "Seth Miller": [ "editor" ], "SevenSpheres": [ "editor" ], "Sfan00 IMG": [ "editor" ], "Sfoerster": [ "editor" ], "Sgarrigan": [ "editor" ], "Sgowal": [ "editor" ], "Shaitand": [ "editor" ], "ShakespeareFan00": [ "editor" ], "SharingNotes": [ "editor" ], "Shawntanchinyang": [ "editor" ], "Shdwninja8": [ "editor" ], "ShelleyAdams": [ "autoreview" ], "ShifaYT": [ "global-rollbacker" ], "Shii": [ "editor" ], "Shira the Mogul": [ "editor" ], "Shlomif": [ "editor" ], "ShuBraque": [ "editor" ], "Sidelight12": [ "editor" ], "Sidorkin": [ "editor" ], "Sidpatil": [ "editor" ], "Siebengang": [ "editor" ], "Sigma 7": [ "editor" ], "Simon Peter Hughes": [ "editor" ], "Sinus46": [ "editor" ], "Sir Beluga": [ "editor" ], "Sir Lestaty de Lioncourt": [ "vrt-permissions" ], "SixWingedSeraph": [ "editor" ], "Sj": [ "editor" ], "Sjc~enwikibooks": [ "editor" ], "Sjlegg": [ "editor" ], "Sjone101": [ "editor" ], "Sjö": [ "global-rollbacker" ], "Skymath": [ "editor" ], "Slava Ukraini Heroyam Slava 123": [ "editor", "uploader" ], "Slava Ukrajini Heroyam Slava": [ "editor" ], "Sluffs": [ "editor" ], "Smjg": [ "editor" ], "SnappyDragonPennyroyal": [ "editor" ], "SocialKnowledge": [ "editor" ], "SoftwareEngineerMoose": [ "autoreview" ], "Sonia": [ "editor" ], "Sophie Cheng": [ "editor" ], "Sotiale": [ "steward" ], "Soul windsurfer": [ "editor" ], "SouthParkFan65": [ "editor" ], "SoylentGreen": [ "editor" ], "Spamduck": [ "editor" ], "Spaynton": [ "editor" ], "Spender2001": [ "editor" ], "Speregrination": [ "editor" ], "Spiderworm": [ "editor" ], "Spoon!": [ "editor" ], "Squasher": [ "global-renamer" ], "Srhat": [ "editor" ], "Stang": [ "global-rollbacker", "editor", "vrt-permissions" ], "Stanglavine": [ "editor" ], "Steinsplitter": [ "global-renamer", "vrt-permissions" ], "StephT0704": [ "autoreview" ], "Stepheng3": [ "editor" ], "Stepro": [ "vrt-permissions" ], "Steve M": [ "editor" ], "Stilfehler": [ "editor" ], "Stockywood": [ "editor" ], "Storeye": [ "editor" ], "Strainu": [ "vrt-permissions" ], "Strange quark": [ "editor" ], "Stryn": [ "global-rollbacker", "editor" ], "Stïnger": [ "global-rollbacker", "editor" ], "Suchenwi": [ "editor" ], "Sumone10154": [ "editor" ], "SunCreator": [ "editor" ], "Sunny Cryolite": [ "global-rollbacker" ], "Sunshineconnelly": [ "editor" ], "SuperTyphoonNoru": [ "editor" ], "Superbass": [ "vrt-permissions" ], "Superpes15": [ "global-rollbacker", "global-renamer", "global-sysop", "vrt-permissions" ], "Supertoff": [ "vrt-permissions" ], "Superzerocool": [ "vrt-permissions" ], "SupremeUmanu": [ "editor" ], "Suruena": [ "editor" ], "Sutambe": [ "editor" ], "Sutton Publishing": [ "editor" ], "Sué González Hauck": [ "editor" ], "Svartava": [ "global-rollbacker", "global-renamer", "global-sysop", "editor" ], "SweetCanadianMullet": [ "editor" ], "Swift": [ "editor" ], "SyG": [ "editor" ], "Sylvesterchukwu04": [ "editor" ], "Sylvialim": [ "editor" ], "Sylviaread": [ "editor" ], "Synoman Barris": [ "global-rollbacker", "transwiki", "editor" ], "Syum90": [ "global-rollbacker", "editor" ], "Syunsyunminmin": [ "global-rollbacker", "global-renamer", "global-sysop", "editor" ], "T.seppelt": [ "editor" ], "TDang": [ "editor" ], "TTWIDEE": [ "editor" ], "Tahmid": [ "editor" ], "Taketa": [ "global-renamer" ], "Takipoint123": [ "vrt-permissions" ], "TakuyaMurata": [ "editor" ], "Tamzin": [ "global-renamer" ], "Tanbiruzzaman": [ "global-rollbacker", "global-renamer", "global-sysop", "editor", "vrt-permissions" ], "Tannertsf": [ "editor" ], "Taoheedah": [ "editor" ], "Tapsevarg": [ "editor" ], "TaronjaSatsuma": [ "vrt-permissions" ], "Taxman": [ "editor" ], "Tchoř": [ "global-renamer" ], "Tdkehoe": [ "editor" ], "Tdvorak": [ "editor" ], "Techman224": [ "editor" ], "Tegel": [ "editor", "steward" ], "Teles": [ "ombuds", "steward", "vrt-permissions" ], "Tem5psu": [ "editor" ], "Tempodivalse": [ "editor" ], "TenWhile6": [ "global-rollbacker", "global-renamer", "global-sysop", "editor" ], "Tenshi Hinanawi": [ "autoreview", "global-rollbacker" ], "Terence Kearey": [ "editor" ], "Ternarius": [ "global-renamer" ], "Ternera": [ "global-rollbacker", "global-renamer", "global-sysop", "editor" ], "Tesleemah": [ "editor" ], "Tevfik AKTUĞLU": [ "editor" ], "Tgregtregretgtr": [ "editor" ], "ThatBPengineer": [ "autoreview" ], "Thatonewikiguy": [ "editor" ], "The Squirrel Conspiracy": [ "vrt-permissions" ], "The labs": [ "editor" ], "TheGoodEndedHappily": [ "vrt-permissions" ], "ThePCKid": [ "editor" ], "TheSandDoctor": [ "global-renamer", "vrt-permissions" ], "Theknightwho": [ "editor" ], "Thenub314": [ "editor" ], "Theo Hughes": [ "editor" ], "Theornamentalist": [ "editor" ], "Thereen": [ "editor" ], "Thewinster": [ "editor" ], "Thierry Dugnolle": [ "editor" ], "Thinkglobalnow": [ "editor" ], "Thirunavukkarasye-Raveendran": [ "editor" ], "Thomas Simpson": [ "editor" ], "Thomas.haslwanter": [ "editor" ], "Thomas.lochmatter": [ "editor" ], "Tibetologist": [ "editor" ], "Tigerzeng": [ "global-rollbacker" ], "Tiled": [ "editor" ], "TimBorgNetzWerk": [ "editor" ], "Timothy Gu": [ "editor" ], "Timpo": [ "editor" ], "Tiptoety": [ "editor" ], "Tjyang": [ "editor" ], "Tlustulimu": [ "editor" ], "Tmvogel": [ "editor" ], "Tom Morris": [ "editor" ], "Tomato86": [ "editor" ], "TommyG": [ "vrt-permissions" ], "Tomt87": [ "editor" ], "Tomybrz": [ "editor" ], "Tonyvall": [ "autoreview" ], "Tp42": [ "editor" ], "Tracklayingninja": [ "editor" ], "Tradimus": [ "editor" ], "Tropicalkitty": [ "global-rollbacker", "editor" ], "TrulyShruti": [ "editor" ], "Ts12rAc": [ "global-rollbacker" ], "Tsarina CatarinaToo": [ "autoreview" ], "TunnelESON": [ "sysop" ], "Turbojet": [ "vrt-permissions" ], "Turkmen": [ "editor" ], "TwoThirty": [ "editor" ], "Tyoyafud": [ "editor" ], "Túrelio": [ "autoreview" ], "U$3rname008": [ "editor" ], "USSR-Slav": [ "global-rollbacker" ], "Uf.hun2201": [ "editor" ], "Uncitoyen": [ "global-rollbacker", "global-renamer" ], "Uncle G": [ "editor" ], "Unixxx": [ "editor" ], "User01938": [ "editor" ], "Username222": [ "editor" ], "Utcursch": [ "vrt-permissions" ], "Uziel302": [ "editor" ], "Uzume": [ "editor" ], "V0lkanic": [ "global-renamer" ], "VIGNERON": [ "steward" ], "Valery Starikov": [ "editor" ], "Van der Hoorn": [ "editor" ], "Varnent": [ "vrt-permissions" ], "Vdolar": [ "autoreview" ], "VectorVoyager": [ "editor" ], "Venzz": [ "vrt-permissions" ], "Verfassungsfreund": [ "editor" ], "Veritas Sapientiae": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "Vermont": [ "editor", "steward", "vrt-permissions" ], "Victor Stefan Stoica": [ "autoreview" ], "Victor Trevor": [ "autoreview" ], "Victoria.sandeman": [ "autoreview" ], "Vincent Vega": [ "global-renamer" ], "Vito Genovese": [ "editor" ], "Vituzzu": [ "editor" ], "Vladimir Solovjev": [ "global-renamer", "vrt-permissions" ], "Vogone": [ "global-rollbacker", "editor" ], "Vossman": [ "editor" ], "Vrinda": [ "editor" ], "VulcanWikiEdit": [ "editor" ], "Vwanweb": [ "editor" ], "WOSlinker": [ "autoreview" ], "Waihorace": [ "global-rollbacker" ], "Waldyrious": [ "editor" ], "WalshDay": [ "editor" ], "Wargo": [ "editor" ], "Wbjimmyd": [ "editor" ], "Wcoole": [ "editor" ], "WeelkyWikiReader": [ "editor" ], "Wekeepwhatwekill": [ "autoreview" ], "WereSpielChequers": [ "editor" ], "What no2000": [ "editor" ], "WhatamIdoing": [ "editor" ], "WhitePhosphorus": [ "global-rollbacker", "global-sysop" ], "Whiteknight": [ "editor" ], "Whoop whoop pull up": [ "editor" ], "Whym": [ "editor", "vrt-permissions" ], "Wiki13": [ "editor" ], "WikiBayer": [ "global-rollbacker", "global-sysop", "editor" ], "WikiFer": [ "vrt-permissions" ], "Wikimi-dhiann": [ "editor" ], "Wikiotics": [ "editor" ], "Wikiwau": [ "autoreview", "editor" ], "WillNess": [ "editor" ], "Willscrlt": [ "editor" ], "Wim b": [ "global-rollbacker", "global-sysop", "editor" ], "Wisden": [ "editor" ], "Withinfocus": [ "editor" ], "Wj32": [ "editor" ], "Wkee4ager": [ "editor" ], "Wobbit": [ "editor" ], "Wojciech Pędzich": [ "vrt-permissions" ], "Wooze": [ "global-rollbacker" ], "Wundermacht": [ "editor" ], "Wutsje": [ "global-rollbacker", "editor" ], "Ww2censor": [ "vrt-permissions" ], "Wüstenspringmaus": [ "global-rollbacker", "global-renamer" ], "XXBlackburnXx": [ "editor", "steward" ], "Xandradi": [ "editor" ], "Xania": [ "sysop", "checkuser" ], "Xaosflux": [ "editor", "steward" ], "XenonX3": [ "vrt-permissions" ], "Xerol": [ "editor" ], "Xeverything11": [ "editor", "uploader" ], "Xhungab": [ "editor" ], "Xinkai Wu": [ "editor" ], "Xixtas": [ "editor" ], "Xqt": [ "global-rollbacker" ], "Xxagile": [ "editor" ], "Xypron": [ "editor" ], "Xz64": [ "editor" ], "Y-S.Ko": [ "editor" ], "YMS": [ "editor" ], "Yahya": [ "steward", "vrt-permissions" ], "Yamla": [ "global-renamer" ], "Yann": [ "editor" ], "Yerpo": [ "global-renamer", "vrt-permissions" ], "Yikrazuul": [ "editor" ], "Ymblanter": [ "global-rollbacker" ], "Yndesai": [ "editor" ], "Youssefsan": [ "editor" ], "Ysangkok": [ "editor" ], "Yvelik": [ "uploader" ], "Yzmo": [ "editor" ], "ZI Jony": [ "editor" ], "Zabe": [ "global-rollbacker" ], "Zafer": [ "ombuds" ], "Zedshort": [ "editor" ], "ZeroOne": [ "editor" ], "Zetud": [ "global-rollbacker", "vrt-permissions" ], "Ziv": [ "editor" ], "Zoeannl": [ "editor" ], "Zollerriia": [ "editor" ], "Zoohouse": [ "editor" ], "Zoot": [ "editor" ], "Zsohl": [ "autoreview", "editor" ], "Zvsmith": [ "editor" ], "Zweighaft": [ "editor" ], "ZxxZxxZ": [ "editor" ], "~riley": [ "global-rollbacker", "editor" ], "Érico": [ "global-renamer" ], "Виктор Пинчук": [ "editor" ], "Воображение": [ "editor" ], "Всевидящий": [ "global-rollbacker" ], "Д.Ильин": [ "editor" ], "Л.П. Джепко": [ "editor" ], "יהודה שמחה ולדמן": [ "editor" ], "מקף": [ "global-rollbacker", "global-renamer" ], "د. فارس الجويلي": [ "global-renamer" ], "روتانا": [ "global-renamer" ], "علاء": [ "steward", "vrt-permissions" ], "فيصل": [ "global-renamer", "vrt-permissions" ], "सीमा1": [ "editor" ], "タチコマ robot": [ "editor" ], "ネイ": [ "global-renamer" ], "一隻北極熊": [ "editor" ], "人间百态": [ "global-rollbacker" ], "臺灣象象": [ "autoreview" ], "范": [ "vrt-permissions" ], "青子守歌": [ "vrt-permissions" ], "魔琴": [ "global-rollbacker" ], "ꠢꠣꠍꠘ ꠞꠣꠎꠣ": [ "editor" ], "기나ㅏㄴ": [ "global-rollbacker", "global-renamer" ] } r76v9ose125y5aoa7q2wpzoemkh7vpo 4656683 4656583 2026-08-07T18:49:20Z JJPMaster (bot) 3488561 Bot: Updating markAdmins data 4656683 json application/json { ".snoopy.": [ "global-rollbacker", "editor" ], "1234qwer1234qwer4": [ "editor", "steward" ], "157yagz5r48a5f1a1f": [ "editor" ], "1997kB": [ "global-rollbacker", "global-renamer", "editor" ], "1F616EMO": [ "global-renamer" ], "1exec1": [ "transwiki", "editor" ], "1sfoerster": [ "editor" ], "20041027 tatsu": [ "global-rollbacker" ], "2005-Fan": [ "transwiki", "editor", "uploader" ], "331dot": [ "global-renamer" ], "33rogers": [ "editor" ], "3MMPEYTON": [ "editor" ], "4PlayerChess": [ "autoreview" ], "4pillars": [ "editor" ], "511KeV": [ "global-rollbacker" ], "94rain": [ "global-rollbacker", "editor" ], "A R King": [ "editor" ], "A Sulaiman Z": [ "editor" ], "A.K.Karthikeyan": [ "editor" ], "A09": [ "steward" ], "AFBorchert": [ "vrt-permissions" ], "AIProf": [ "editor" ], "ALittleSlow": [ "autoreview" ], "AManWithNoPlan": [ "editor" ], "ATannedBurger": [ "global-renamer" ], "AVRS": [ "editor" ], "Aafi": [ "vrt-permissions" ], "Abenwagner": [ "editor" ], "Abigor": [ "editor" ], "Abitt002": [ "editor" ], "Abyssal": [ "editor" ], "Acagastya": [ "autoreview" ], "Acalamari": [ "global-renamer" ], "Acarologiste": [ "editor" ], "AcidBat": [ "editor" ], "Acrow005": [ "editor" ], "Actualist": [ "editor" ], "Adalvis": [ "editor" ], "Adart001": [ "editor" ], "Adavyd": [ "global-renamer" ], "Addihockey10": [ "editor" ], "Addihockey10 (automated)": [ "editor" ], "Adrignola": [ "editor" ], "AdventureWriter": [ "editor" ], "Aelxen": [ "global-renamer" ], "Aferg006": [ "editor" ], "Afett001": [ "editor" ], "Affe2011": [ "global-rollbacker" ], "Agnerf": [ "editor", "uploader" ], "Agpires": [ "editor" ], "Agricola": [ "editor" ], "Agusbou2015": [ "editor" ], "Ah3kal": [ "editor" ], "Ahecht": [ "global-renamer", "vrt-permissions" ], "Ahonc": [ "global-renamer", "vrt-permissions" ], "AiClassEland": [ "editor" ], "Ainz Ooal Gown": [ "editor" ], "Airpmb": [ "editor" ], "Ajraddatz": [ "editor", "steward" ], "Aka": [ "vrt-permissions" ], "Alanah.97": [ "autoreview" ], "Albertoleoncio": [ "steward", "vrt-permissions" ], "Albmont": [ "editor" ], "Alchimista": [ "vrt-permissions" ], "Aldnonymous": [ "editor" ], "Aledownload": [ "editor" ], "Alexlatham96": [ "editor" ], "Alextejthompson": [ "editor" ], "Alison": [ "global-rollbacker" ], "AllenZh": [ "editor" ], "Alphama": [ "global-renamer" ], "AlvaroMolina": [ "editor" ], "AmandaNP": [ "steward" ], "Ambrevar": [ "editor" ], "Amcgail": [ "editor" ], "Ameisenigel": [ "global-rollbacker", "global-sysop", "ombuds", "editor", "vrt-permissions" ], "AmieKim": [ "editor" ], "Amire80": [ "global-sysop" ], "Anachronist": [ "editor", "vrt-permissions" ], "Ancient9983": [ "editor" ], "Andrei Stroe": [ "vrt-permissions" ], "Andrew janke": [ "editor" ], "Andriy.v": [ "vrt-permissions" ], "Andyross": [ "editor" ], "Anil Shaligram": [ "editor" ], "Animajosser": [ "editor" ], "Anne Correia": [ "editor" ], "Anonim Şahıs": [ "editor" ], "Anonymity": [ "editor" ], "AnotherEditor144": [ "autoreview" ], "Antanana": [ "vrt-permissions" ], "Antandrus": [ "editor" ], "Anthere": [ "editor" ], "AntiCompositeNumber": [ "steward", "vrt-permissions" ], "Antonizoon": [ "editor" ], "Antonw": [ "editor" ], "Apfelmus": [ "editor" ], "Aphoneyclimber": [ "editor" ], "Apocheir": [ "editor" ], "Aqurs1": [ "global-rollbacker", "global-renamer", "global-sysop" ], "AramilFeraxa": [ "steward" ], "Arch dude": [ "editor" ], "Archolman": [ "editor" ], "Arcticocean": [ "ombuds" ], "ArdentPerf": [ "editor", "uploader" ], "Arlen22": [ "transwiki", "editor" ], "Armchair": [ "editor" ], "Arno-nl": [ "editor" ], "Arrow303": [ "vrt-permissions" ], "Arthurvogel": [ "editor" ], "Artoria2e5": [ "editor" ], "Arturoiochoam": [ "editor" ], "Arunreginald": [ "editor" ], "AshLin": [ "editor" ], "Atcovi": [ "sysop", "global-rollbacker" ], "Athrash": [ "editor" ], "Atiedebee": [ "editor" ], "Atlas.Spheres": [ "editor" ], "Atsme": [ "vrt-permissions" ], "Auremel": [ "editor" ], "Austncorp": [ "editor" ], "AuthorsAndContributorsBot": [ "autoreview" ], "Avicennasis": [ "editor" ], "Avraham": [ "global-renamer", "editor" ], "Awesome Princess": [ "editor" ], "Axpde": [ "editor" ], "Az1568": [ "global-rollbacker" ], "Az2008": [ "editor" ], "Azotochtli": [ "editor" ], "B.Korlah": [ "editor" ], "BD2412": [ "editor" ], "BORGATO Pierandrea": [ "editor" ], "BRPever": [ "global-rollbacker", "global-sysop" ], "BRUTE": [ "editor" ], "Backfromquadrangle": [ "editor" ], "Baiji": [ "global-rollbacker" ], "Bakasakali": [ "editor" ], "Balaji.md au": [ "editor" ], "BarkingFish": [ "editor" ], "Barras": [ "steward" ], "Base": [ "steward", "vrt-permissions" ], "Bastique": [ "editor" ], "Bautsch": [ "editor" ], "BeardMD": [ "editor" ], "Beetstra": [ "global-rollbacker" ], "BenTels": [ "editor" ], "Bencemac": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "Benjamin J. Burger": [ "editor" ], "Benjamin.doe": [ "editor" ], "Benrattray": [ "editor" ], "Benson Muite": [ "editor" ], "Bentbracke": [ "editor" ], "Bequw": [ "editor" ], "Bert Niehaus": [ "autoreview" ], "BethNaught": [ "editor" ], "Beuc": [ "editor" ], "Bhardwaj Anil": [ "autoreview" ], "BiT": [ "editor" ], "Bigdelboy": [ "transwiki" ], "Bignose~enwikibooks": [ "editor" ], "Billinghurst": [ "global-rollbacker", "editor" ], "Billymac00": [ "editor" ], "Biplab Anand": [ "global-rollbacker", "global-sysop" ], "Birdofadozentides": [ "editor" ], "BitterAsianMan": [ "editor" ], "Bluefoxicy": [ "editor" ], "Bluerasberry": [ "vrt-permissions" ], "BobChan2": [ "editor" ], "Bobby Cohn": [ "global-renamer" ], "Bodhisattwa": [ "vrt-permissions" ], "BoldLuis": [ "editor" ], "Borhan": [ "global-rollbacker", "vrt-permissions" ], "Boris1951zz": [ "editor" ], "Bpenn005": [ "editor" ], "Brewster239": [ "global-rollbacker" ], "Bridget": [ "global-rollbacker", "editor" ], "Brienna.Hall77": [ "editor" ], "Brim": [ "editor" ], "Brittanys": [ "editor" ], "Bronwynh": [ "editor" ], "Bsadowski1": [ "editor", "steward" ], "Buddpaul": [ "editor" ], "Bullercruz1": [ "editor" ], "Buncic": [ "editor" ], "Bunnypranav": [ "global-renamer" ], "BurakD53": [ "editor" ], "Burkep": [ "editor" ], "ByGrace": [ "editor" ], "Bykim2012": [ "editor" ], "C1203sc": [ "editor" ], "CJakes1": [ "editor" ], "CKWG - Ada Magica": [ "editor" ], "Cabayi": [ "global-renamer" ], "CaitlinCarbury": [ "autoreview" ], "CalciumTetraoxide": [ "editor" ], "CalendulaAsteraceae": [ "editor" ], "Caliburn": [ "editor" ], "CallumPoole": [ "editor" ], "Calvin.Andrus": [ "editor" ], "Cameron11598": [ "editor" ], "Camouflaged Mirage": [ "editor" ], "Captain-tucker": [ "vrt-permissions" ], "Carlo.milanesi": [ "editor" ], "Caro de Segeda": [ "editor" ], "CarsracBot": [ "editor" ], "Catermark": [ "editor" ], "Cecila123": [ "autoreview" ], "Cedar101": [ "editor" ], "Champion": [ "editor" ], "Chaojidage": [ "editor" ], "Chaojoker": [ "editor" ], "Chaotic Enby": [ "autoreview", "global-renamer" ], "Chapka": [ "editor" ], "Charidri": [ "editor" ], "Charleneabeana": [ "autoreview" ], "Charles Jeffrey Danoff": [ "editor" ], "CharlesHoffman": [ "editor" ], "Chazz": [ "editor" ], "Chelseafan528": [ "editor" ], "Cheryl2012": [ "editor" ], "Chescargot": [ "vrt-permissions" ], "Chi Sigma": [ "editor" ], "Chinmayee Mishra": [ "ombuds" ], "Chongkian": [ "editor" ], "Chowbok": [ "editor" ], "ChrisHodgesUK": [ "editor" ], "ChrisWallace": [ "editor" ], "Chriswaterguy": [ "editor" ], "Chuckhoffmann": [ "editor" ], "Church of emacs": [ "global-rollbacker" ], "Cic": [ "editor" ], "Ciell": [ "vrt-permissions" ], "Cilantrohead": [ "editor" ], "Cintilo": [ "editor" ], "Circuit dreamer": [ "editor" ], "Circuit-fantasist": [ "editor" ], "Civvì": [ "global-rollbacker", "global-renamer" ], "Ckwalker": [ "editor" ], "Clairerusselll": [ "autoreview" ], "Cloidl": [ "autoreview" ], "Cmsmcq": [ "editor" ], "Cnrowley": [ "editor" ], "CocoaZen": [ "editor" ], "CoconutOctopus": [ "global-renamer" ], "Codename Noreste": [ "sysop", "global-rollbacker", "interface-admin" ], "Codename Noroeste": [ "editor" ], "Codinghead": [ "editor" ], "CommonsDelinker": [ "autoreview" ], "Comp.arch": [ "editor" ], "Conan": [ "editor" ], "Cormullion": [ "editor" ], "Count Count": [ "steward" ], "Coupe": [ "editor" ], "Courcelles": [ "global-rollbacker", "editor" ], "CptViraj": [ "global-rollbacker", "global-renamer", "global-sysop" ], "Craignewland": [ "editor" ], "Craxd1": [ "editor" ], "CrazyEddy": [ "editor" ], "Cremastra": [ "editor" ], "Cremastra (JWB)": [ "autoreview" ], "Cromium": [ "editor" ], "Cromwellt": [ "editor" ], "Crystal East": [ "editor" ], "Cttcraig": [ "editor" ], "Cultures17": [ "editor" ], "Cultures33": [ "editor" ], "Cultures4": [ "editor" ], "Cultures92": [ "editor" ], "CunninghamJohn": [ "autoreview" ], "Curtaintoad": [ "editor" ], "Cyberpower678": [ "global-rollbacker" ], "Céréales Killer": [ "global-renamer" ], "D1n05aur5 4ever": [ "editor" ], "DARIO SEVERI": [ "autoreview", "global-rollbacker", "global-sysop" ], "DC Slagel": [ "editor" ], "DCB": [ "vrt-permissions" ], "DD 8630": [ "editor" ], "DGerman": [ "editor" ], "DVD206": [ "editor" ], "DZadventiste": [ "editor" ], "DaB.": [ "vrt-permissions" ], "DaGizza": [ "editor" ], "Dagana4": [ "autoreview" ], "Dallas1278": [ "editor" ], "Dan Koehl": [ "editor" ], "Dan Polansky": [ "editor" ], "Dan-aka-jack": [ "editor" ], "DanCherek": [ "autoreview" ], "Danarwaller": [ "editor" ], "DanielWhernchend": [ "editor" ], "Danielravennest": [ "editor" ], "Danilka5469": [ "editor" ], "Daniuu": [ "steward", "vrt-permissions" ], "DannyS712": [ "editor" ], "Darklama": [ "editor" ], "Darklilac": [ "editor" ], "Darrelljon": [ "editor" ], "DarwIn": [ "vrt-permissions" ], "Dave Braunschweig": [ "editor" ], "David L Davis": [ "editor" ], "DavidCary": [ "editor" ], "DavidLevinson": [ "editor" ], "Davidbena": [ "editor" ], "Dayshade": [ "editor" ], "Dchmelik": [ "editor" ], "Dcljr": [ "editor" ], "Dcondon": [ "editor" ], "Deepfriedokra": [ "global-renamer" ], "DejaVu": [ "global-rollbacker" ], "DennisDaniels": [ "editor" ], "Dennisblu": [ "uploader" ], "Denniss": [ "editor" ], "DerHexer": [ "editor", "steward", "vrt-permissions" ], "Derek Andrews": [ "editor" ], "Designermadsen": [ "editor" ], "Deu": [ "global-rollbacker" ], "Dexxor": [ "editor" ], "Dezedien": [ "vrt-permissions" ], "Diandramartin": [ "autoreview" ], "Didym": [ "vrt-permissions" ], "Dino Bronto Rex": [ "editor" ], "Dirk Hünniger": [ "editor" ], "Divinations": [ "global-rollbacker" ], "Djb": [ "editor" ], "Djbrown": [ "editor" ], "Dlrohrer2003": [ "editor" ], "Dmccreary": [ "editor" ], "Doc Taxon": [ "vrt-permissions" ], "Doctorxgc": [ "editor" ], "Dom walden": [ "editor" ], "Domdomegg": [ "editor" ], "DominikTurner": [ "autoreview" ], "DonaldKronos": [ "editor" ], "DoubleGrazing": [ "global-renamer" ], "Doubleotoo": [ "editor" ], "Downdate": [ "editor" ], "Dr-Taher": [ "global-renamer" ], "Dr.Unclear": [ "editor" ], "DreamRimmer": [ "global-renamer", "global-sysop" ], "Dreftymac": [ "editor" ], "Drpundir": [ "editor" ], "Drummingman": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "DuLithgow": [ "editor" ], "Dungodung": [ "vrt-permissions" ], "Duplode": [ "editor" ], "DustDFG": [ "editor" ], "Dyolf77": [ "vrt-permissions" ], "EDCU320RHT": [ "editor" ], "EDUC320 Sylvialiang": [ "editor" ], "EE JRW": [ "editor" ], "EMAD KAYYAM": [ "editor" ], "EPIC": [ "steward" ], "EarlGrey2005": [ "autoreview" ], "Ebe123": [ "editor" ], "Ecarew": [ "editor" ], "Edgar181": [ "editor" ], "Edit filter": [ "sysop" ], "EdoDodo": [ "editor" ], "Edornbush": [ "editor" ], "Edriiic": [ "editor" ], "Efex": [ "editor" ], "Efex3": [ "editor" ], "Effeietsanders": [ "editor", "vrt-permissions" ], "EggRoll97": [ "editor" ], "Egil": [ "editor" ], "Eihel": [ "global-rollbacker", "editor" ], "Ejs-80": [ "global-renamer" ], "Ekaroleski": [ "editor" ], "Elaurier": [ "editor" ], "Elcobbola": [ "vrt-permissions" ], "Electro": [ "editor" ], "ElfSnail123": [ "editor" ], "Eli bubo4ka": [ "editor" ], "Eliarani": [ "editor" ], "Elli": [ "global-renamer", "vrt-permissions" ], "Ellywa": [ "vrt-permissions" ], "Elmacenderesi": [ "vrt-permissions" ], "Elton": [ "editor", "steward" ], "Emha": [ "vrt-permissions" ], "EmilymDaniel": [ "autoreview" ], "Empire3131": [ "editor" ], "Encik Tekateki": [ "editor" ], "Enzomartinelli": [ "editor" ], "Eric Evers": [ "editor" ], "Erigena": [ "editor" ], "Erik Baas": [ "editor" ], "ErinNik": [ "editor" ], "Erinamukuta": [ "editor" ], "ErrantX": [ "editor" ], "EruannoVG": [ "editor" ], "Espen180": [ "editor" ], "Eta Carinae": [ "global-renamer" ], "Ethacke1": [ "editor" ], "Eumolpo": [ "editor" ], "Euphydryas": [ "global-renamer" ], "Eurodyne": [ "editor" ], "EvDawg93": [ "editor" ], "EvanCarroll": [ "editor" ], "Ewen": [ "editor" ], "Exusiai": [ "global-renamer" ], "Ezarate": [ "global-rollbacker", "vrt-permissions" ], "Fabartus": [ "editor", "uploader" ], "Faendalimas": [ "ombuds" ], "Fasten": [ "editor" ], "Faster than Thunder": [ "editor" ], "Fathoms Below": [ "global-renamer" ], "Fcorthay": [ "editor" ], "Fdena": [ "editor" ], "Federhalter": [ "editor" ], "Fehufanga": [ "global-rollbacker", "global-sysop" ], "Fekarp": [ "editor" ], "Fephisto": [ "editor" ], "Ferien": [ "global-rollbacker" ], "Fernando2812l": [ "editor" ], "Fernly": [ "editor" ], "Ffion B Thompson": [ "autoreview" ], "Fimatic": [ "editor" ], "FischX": [ "editor" ], "Fishpi": [ "editor" ], "Flattail": [ "editor" ], "FlightTime": [ "global-renamer" ], "Flolit": [ "editor" ], "Fluffernutter": [ "vrt-permissions" ], "FlyingAce": [ "global-rollbacker" ], "Fountain Pen": [ "editor" ], "Fr33kman": [ "editor" ], "FrancisFromGaspesie": [ "editor" ], "Frantsch": [ "autoreview" ], "Fredericknortje": [ "editor" ], "Fritzlein~enwikibooks": [ "editor" ], "Frozen Wind": [ "transwiki", "editor" ], "Ftaljaard": [ "editor" ], "Ftiercel": [ "editor" ], "Furrykef": [ "editor" ], "GKFX": [ "editor" ], "Galahad": [ "global-rollbacker" ], "Gampe": [ "vrt-permissions" ], "Ganímedes": [ "vrt-permissions" ], "Gary Dorman Wiggins": [ "editor", "uploader" ], "Garygaryj": [ "editor" ], "Gat lombard": [ "editor" ], "Gc211": [ "editor" ], "Geagea": [ "vrt-permissions" ], "Geekgirl": [ "editor" ], "GemmaCampbell": [ "autoreview" ], "Geoff Plourde": [ "editor" ], "Geofferybard": [ "transwiki", "editor" ], "GerbenRienk": [ "editor" ], "Gerges": [ "global-rollbacker", "global-renamer" ], "Germany Poul Ah": [ "editor" ], "Gertbuschmann": [ "editor" ], "Ggee0621": [ "editor" ], "Gifnk dlm 2020": [ "editor", "uploader" ], "Girdi": [ "editor" ], "Glaisher": [ "editor" ], "Glane23": [ "vrt-permissions" ], "Gleb713": [ "autoreview" ], "Glich": [ "editor" ], "Gllyons": [ "editor" ], "Gmasterman": [ "editor" ], "GoblinInventor": [ "editor" ], "Godsy": [ "autoreview" ], "Good afternoon": [ "editor" ], "GoreyCat": [ "editor" ], "GorgeUbuasha": [ "editor" ], "GorillaWarfare": [ "vrt-permissions" ], "Gott wisst": [ "editor" ], "Goulart": [ "editor" ], "Gpkp": [ "editor" ], "Gracebaysinger": [ "editor" ], "Graeme E. Smith": [ "editor" ], "Greatswrd": [ "editor" ], "GreenC": [ "editor" ], "Greenbreen": [ "editor" ], "Greenman": [ "editor" ], "GregXenon01": [ "editor" ], "Gretski247": [ "editor" ], "GreyCat": [ "editor" ], "Grin": [ "vrt-permissions" ], "Growl41": [ "editor" ], "Guaka": [ "editor" ], "Guanaco": [ "editor" ], "GuillermoHazebrouck": [ "editor" ], "Guus": [ "editor" ], "Guy vandegrift": [ "editor" ], "Guywan": [ "editor" ], "Gzuufy": [ "editor" ], "HJ Mitchell": [ "autoreview" ], "HLand": [ "editor" ], "HYanWong": [ "editor" ], "Ha98574": [ "editor" ], "Hagindaz": [ "editor" ], "HakanIST": [ "editor", "steward" ], "Hamish": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "Hanay": [ "vrt-permissions" ], "Hannes Röst": [ "editor" ], "Hans Adler": [ "editor" ], "Haoreima": [ "editor" ], "Happy-melon": [ "editor" ], "Harry Wood": [ "editor" ], "Harrybrowne1986": [ "editor" ], "Harv4": [ "editor" ], "Hasley": [ "editor" ], "Hazard-SJ": [ "global-rollbacker" ], "He7d3r": [ "editor" ], "HenkvD": [ "editor" ], "Herbythyme": [ "editor" ], "Hercule": [ "editor" ], "Herman darman": [ "editor" ], "HerrHartmuth": [ "editor" ], "Hethrir": [ "editor" ], "HgDeviasse": [ "editor" ], "Hippias": [ "editor" ], "Hliow": [ "autoreview" ], "Holder": [ "global-rollbacker", "global-sysop" ], "Holdoffhunger": [ "editor" ], "Hoo man": [ "editor", "steward" ], "HouseBlaster": [ "global-renamer" ], "Howard Beale": [ "editor" ], "Hpon": [ "editor" ], "Hrkalona": [ "autoreview" ], "Hskeet": [ "editor", "uploader" ], "Htm": [ "vrt-permissions" ], "Hugetim": [ "editor" ], "Humaira Ali": [ "editor" ], "Huntertur": [ "editor" ], "Hydriz": [ "global-rollbacker" ], "Ibidthewriter": [ "editor" ], "Ibrahim Sani Mustapha": [ "editor" ], "Ibrahim.ID": [ "global-renamer", "vrt-permissions" ], "Icetruck": [ "editor" ], "Icodense": [ "global-rollbacker", "global-sysop" ], "Idavidmiller": [ "editor" ], "Ideasman42": [ "editor" ], "Igna": [ "editor" ], "Ijon": [ "vrt-permissions" ], "Illusional": [ "editor" ], "Iluvatar": [ "global-rollbacker", "vrt-permissions" ], "Indiana": [ "editor" ], "Inductiveload": [ "editor" ], "Inertia6084": [ "autoreview" ], "Inferno986return": [ "editor" ], "Infinite0694": [ "global-rollbacker", "global-sysop" ], "Ingolemo": [ "editor" ], "Insignificantwrangler": [ "editor" ], "Internoob": [ "transwiki", "editor" ], "InverseHypercube": [ "editor" ], "Isenhand": [ "editor" ], "Ish ishwar": [ "editor" ], "Iste Praetor": [ "editor" ], "ItsNyoty": [ "vrt-permissions" ], "Itsmeyash31": [ "autoreview" ], "Itswikisam": [ "editor" ], "Itti": [ "global-renamer", "vrt-permissions" ], "Ixfd64": [ "editor" ], "J ansari": [ "global-rollbacker" ], "J.palacios.jean": [ "editor" ], "J36miles": [ "editor" ], "JBW": [ "global-renamer" ], "JCrue": [ "editor" ], "JJ12880": [ "editor" ], "JJMC89": [ "vrt-permissions" ], "JJPMaster": [ "sysop", "global-rollbacker", "global-renamer", "interface-admin", "vrt-permissions" ], "JJPMaster (test 1)": [ "autoreview" ], "JJohnson": [ "editor" ], "JJohnson1701": [ "editor" ], "JPPINTO": [ "editor" ], "Jack Frost": [ "vrt-permissions" ], "JackBot": [ "editor" ], "JackPotte": [ "sysop", "interface-admin" ], "Jackhand1": [ "autoreview" ], "Jacob J. Walker": [ "editor" ], "Jafeluv": [ "global-rollbacker", "editor" ], "Jake Park": [ "global-renamer" ], "Jakec": [ "editor" ], "JamesCrook": [ "editor" ], "JamesNZ": [ "editor" ], "Jamesofur": [ "global-rollbacker" ], "Jamesssss": [ "editor" ], "Jamzze": [ "editor" ], "Jan Myšák": [ "global-rollbacker" ], "Jan.duggan": [ "autoreview" ], "Janbery": [ "global-rollbacker", "vrt-permissions" ], "Janpha": [ "editor" ], "Janschejbal": [ "editor" ], "Jason.Cozens": [ "editor" ], "Jaspalkaler": [ "editor" ], "Jasper Deng": [ "global-rollbacker" ], "JavaHurricane": [ "global-rollbacker", "editor" ], "Javier Carro": [ "editor" ], "JavierCantero": [ "editor" ], "Jay Bolero": [ "editor" ], "Jazzmanian": [ "editor" ], "Jcb": [ "editor", "vrt-permissions" ], "Jcwf": [ "editor" ], "Jeff G.": [ "global-rollbacker", "editor" ], "Jeff1138": [ "editor" ], "Jellysandwich0": [ "editor" ], "JenVan": [ "editor" ], "JenniferPalacios": [ "editor" ], "Jenniferjkidd": [ "editor" ], "Jens Østergaard Petersen": [ "editor" ], "JeremyMcCracken": [ "editor" ], "Jeroenr": [ "editor" ], "Jerome Charles Potts": [ "editor" ], "Jerry vlntn": [ "editor" ], "Jesdisciple": [ "editor" ], "Jfmantis": [ "editor" ], "Jianhui67": [ "global-rollbacker", "editor" ], "Jianhui67 public": [ "editor" ], "Jim Ashby": [ "autoreview" ], "JimKillock": [ "editor" ], "Jimbotyson": [ "editor" ], "Jimmy Xu": [ "vrt-permissions" ], "Jkauf007": [ "editor" ], "Jmdeschamps": [ "uploader" ], "Jnanaranjan sahu": [ "ombuds" ], "Jnewh001": [ "editor" ], "Jobin RV": [ "editor" ], "Joewiz": [ "editor" ], "Johannes Bo": [ "editor" ], "Johannnes89": [ "steward" ], "John Cross": [ "editor" ], "JohnMarcelo": [ "editor" ], "Johnkn63": [ "editor" ], "Johnwhelan": [ "editor" ], "Jokes Free4Me": [ "editor" ], "Jomegat": [ "editor" ], "Jon Harald Søby": [ "vrt-permissions" ], "Jon Kolbert": [ "steward", "vrt-permissions" ], "Jonathan Webley": [ "editor" ], "Jordan Brown": [ "editor" ], "JorisvS": [ "editor" ], "Josve05a": [ "vrt-permissions" ], "Jrincayc": [ "editor" ], "Jsnaree": [ "editor" ], "Jtneill": [ "editor" ], "JuethoBot": [ "autoreview" ], "Jugandi": [ "editor" ], "Jules*": [ "global-renamer" ], "Juliancolton": [ "global-rollbacker", "editor" ], "Jumark27": [ "editor" ], "JustTheFacts33": [ "editor" ], "Justlettersandnumbers": [ "global-renamer", "vrt-permissions" ], "K6ka": [ "global-rollbacker", "global-renamer" ], "Kadı": [ "global-renamer", "vrt-permissions" ], "Kai Burghardt": [ "editor" ], "Kaltenmeyer": [ "editor" ], "Kambai Akau": [ "editor" ], "Kanjy": [ "global-rollbacker", "editor" ], "Kapooht": [ "editor" ], "Karl Wick": [ "editor" ], "Karosent": [ "editor" ], "Kashkhan": [ "editor" ], "Kathryn Mary Nicholson": [ "autoreview" ], "Katiemgeorge": [ "editor" ], "Katyauchter": [ "editor" ], "Kaushlendratripathi": [ "editor" ], "Kaw8yh": [ "editor" ], "Kayau": [ "transwiki", "editor" ], "Kellen": [ "editor" ], "Kelti": [ "editor" ], "Kiefer.Wolfowitz": [ "editor" ], "Killarnee": [ "editor" ], "King of Hearts": [ "vrt-permissions" ], "Kingaustin07": [ "editor" ], "Kingofnuthin": [ "editor" ], "Kirito": [ "global-rollbacker", "editor" ], "Kittycataclysm": [ "sysop" ], "Kj cheetham": [ "global-renamer" ], "Kkmurray": [ "editor" ], "Kl-robertson": [ "editor" ], "Klaas van Buiten": [ "editor" ], "Knittedbees": [ "transwiki", "editor" ], "Knoppson": [ "autoreview" ], "Koantum": [ "editor" ], "Koavf": [ "sysop", "global-rollbacker" ], "Kodos": [ "editor" ], "KonstantinaG07": [ "editor", "steward" ], "Kowey": [ "editor" ], "KrakatoaKatie": [ "vrt-permissions" ], "Krd": [ "vrt-permissions" ], "Krdbot": [ "vrt-permissions" ], "Kri": [ "editor" ], "Krinkle": [ "global-rollbacker" ], "Kropotkine 113": [ "vrt-permissions" ], "Kruusamägi": [ "vrt-permissions" ], "Ktucker": [ "editor" ], "Kwamikagami": [ "editor" ], "Kwhitefoot": [ "editor" ], "Kylu": [ "editor" ], "Kızıl": [ "global-renamer" ], "L10nM4st3r": [ "editor" ], "LABoyd2": [ "editor" ], "LR0725": [ "global-rollbacker", "global-sysop" ], "Ladislav": [ "editor" ], "Ladsgroup": [ "global-renamer" ], "Ladybug62": [ "editor" ], "Lagoset": [ "editor" ], "Larsnooden": [ "editor" ], "Laurianedani": [ "editor" ], "Lcraw005": [ "editor" ], "Ldo": [ "editor" ], "Leaderboard": [ "sysop", "global-renamer", "interface-admin" ], "Learnerktm": [ "editor" ], "Lechatjaune": [ "vrt-permissions" ], "Leighblackall": [ "editor" ], "Lengel46": [ "editor" ], "Lentokonefani": [ "global-renamer" ], "LeoChiukl": [ "editor" ], "Leonard64": [ "uploader" ], "Leonidlednev": [ "autoreview", "global-rollbacker" ], "Leovanderven": [ "editor" ], "Lesless": [ "vrt-permissions" ], "Leyo": [ "global-rollbacker" ], "Lgriot": [ "editor" ], "Liam987": [ "editor" ], "Liao": [ "editor" ], "Libperry": [ "editor" ], "Limiza": [ "editor" ], "Lionel Cristiano": [ "editor" ], "Litlok": [ "global-renamer" ], "Little Sunshine": [ "global-renamer" ], "Llakew": [ "editor" ], "LlamaAl": [ "editor" ], "Lobsteroh": [ "editor" ], "LodestarChariot2": [ "editor" ], "Lofty abyss": [ "global-rollbacker", "editor", "vrt-permissions" ], "Logictheo": [ "editor" ], "Lomita": [ "vrt-permissions" ], "Londonjackbooks": [ "editor" ], "Lovepeacejoy404": [ "editor" ], "Lp0 on fire": [ "autoreview", "global-rollbacker" ], "Lubaochuan": [ "editor" ], "Luckas Blade": [ "editor" ], "Lucystewpid": [ "autoreview" ], "Ludovic Brenta": [ "editor" ], "Ludovicocaldara": [ "editor", "uploader" ], "Lukas²³": [ "editor" ], "LukeCEL": [ "editor" ], "Lvova": [ "vrt-permissions" ], "Lwill031": [ "editor" ], "M7": [ "steward" ], "MARKELLOS": [ "vrt-permissions" ], "MBq": [ "global-renamer" ], "MF-Warburg": [ "global-rollbacker", "global-sysop", "editor" ], "MGA73": [ "vrt-permissions" ], "MIacono": [ "editor" ], "MNeuschaefer": [ "editor" ], "MS Sakib": [ "global-renamer", "vrt-permissions" ], "Mabdul": [ "transwiki", "editor", "uploader" ], "Madisonhen": [ "autoreview" ], "Magda.dagda": [ "editor" ], "Magnus Manske": [ "editor" ], "Mahagaja": [ "editor" ], "MaikoM93": [ "editor" ], "Maire": [ "global-renamer" ], "Malarz pl": [ "global-renamer" ], "Manchiu": [ "global-renamer" ], "MandoRachovitsa": [ "autoreview" ], "Mandy Hopkins": [ "editor" ], "ManuelGR": [ "editor" ], "MarcGarver": [ "sysop", "checkuser", "steward" ], "Marco Klunder": [ "editor" ], "MarcoAurelio": [ "editor" ], "Marcus Cyron": [ "vrt-permissions" ], "Mardus": [ "editor" ], "MarkJFernandes": [ "editor" ], "MarkTraceur": [ "editor" ], "Markcwm": [ "editor" ], "Markhobley": [ "editor" ], "MarsRover": [ "editor" ], "Marshman~enwikibooks": [ "editor" ], "Martin Kraus": [ "editor" ], "Martin Sauter": [ "editor" ], "Martin Urbanec": [ "editor", "steward", "vrt-permissions" ], "MartinPoulter": [ "editor" ], "Martinwguy2": [ "editor" ], "MarygoldRules": [ "editor" ], "Master tongue": [ "editor" ], "Masti": [ "steward", "vrt-permissions" ], "Math buff": [ "editor" ], "MathXplore": [ "global-rollbacker", "editor" ], "Mathildem16": [ "autoreview" ], "Mathmensch": [ "editor" ], "Mathmensch-Smalledits": [ "editor" ], "Mathmogeek": [ "editor" ], "Maths314": [ "editor" ], "Matiia": [ "editor" ], "Matrix": [ "autoreview", "vrt-permissions" ], "Matsievsky": [ "editor" ], "Mattb112885": [ "editor" ], "Mattbarton.exe": [ "editor" ], "Matttest": [ "autoreview" ], "Max Milas": [ "editor" ], "Maxim": [ "editor" ], "Maximillion Pegasus": [ "global-rollbacker", "editor" ], "Maxint2": [ "editor" ], "Mazbel": [ "global-rollbacker" ], "Mbch331": [ "vrt-permissions" ], "Mbrickn": [ "transwiki", "editor" ], "Mcdonnkm": [ "editor" ], "Mcld": [ "editor" ], "Mdkoch84": [ "editor" ], "Mdmckenzie": [ "editor" ], "MdsShakil": [ "steward", "vrt-permissions" ], "Mdupont": [ "editor" ], "Me Lendroz": [ "editor" ], "Meanmicio": [ "editor" ], "Mecanismo": [ "editor" ], "MediaKyle": [ "editor" ], "Meditation": [ "editor" ], "Meev0": [ "editor" ], "Mehman": [ "ombuds", "vrt-permissions" ], "Melos": [ "steward", "vrt-permissions" ], "MemicznyJanusz": [ "global-renamer" ], "Mendelivia~enwikibooks": [ "editor" ], "Meniktah": [ "editor" ], "Mercy": [ "global-rollbacker", "editor" ], "MerlLinkBot": [ "editor" ], "Mfield": [ "global-renamer" ], "Mh7kJ": [ "editor" ], "Michael Romanov": [ "editor" ], "MichaelFrey": [ "editor" ], "Michaelbluett": [ "editor", "uploader" ], "Mido": [ "vrt-permissions" ], "MihalOrela": [ "editor" ], "MiiCii": [ "editor" ], "Mike Hayes": [ "editor" ], "Mike.lifeguard": [ "editor" ], "Mild Bill Hiccup": [ "editor" ], "Mill3315": [ "editor" ], "Millbart": [ "vrt-permissions" ], "Mimarx": [ "editor" ], "Min1996": [ "autoreview" ], "Minorax": [ "global-rollbacker", "global-sysop", "editor" ], "Mirinano": [ "global-rollbacker" ], "Mithridates": [ "editor" ], "Mjbt": [ "editor" ], "Mjchael": [ "editor" ], "Mjkaye": [ "editor" ], "Mkline": [ "autoreview" ], "Mlipl001": [ "editor" ], "Moby-Dick4000": [ "editor" ], "Mohean": [ "editor" ], "Money-lover-12345": [ "editor" ], "Moonriddengirl": [ "autoreview", "vrt-permissions" ], "Mortense": [ "editor" ], "Mpfau": [ "editor" ], "Mr. Stradivarius": [ "editor" ], "MrAlanKoh": [ "editor" ], "MrJaroslavik": [ "global-rollbacker", "ombuds" ], "Mrajcok": [ "editor" ], "Mrjulesd": [ "editor" ], "Mrwojo": [ "editor" ], "Mschrag": [ "editor" ], "Msmithma": [ "editor" ], "MtPenguinMonster": [ "editor" ], "Mtarch11": [ "global-rollbacker", "global-sysop", "editor" ], "Musical Inquisit": [ "editor" ], "Mussklprozz": [ "vrt-permissions" ], "Mvolz": [ "editor" ], "Mwtoews": [ "editor" ], "Mxn": [ "editor" ], "Myklaw": [ "editor" ], "Mykola7": [ "steward" ], "Mys 721tx": [ "global-renamer", "vrt-permissions" ], "NDG": [ "global-rollbacker", "editor" ], "Nadzik": [ "global-rollbacker", "global-renamer" ], "NahidSultan": [ "vrt-permissions" ], "Nangkhan Magar": [ "editor" ], "Natuur12": [ "vrt-permissions" ], "Nbarth": [ "editor" ], "Nbro": [ "editor" ], "Nehaoua": [ "ombuds" ], "Neils51": [ "editor" ], "Nemoralis": [ "vrt-permissions" ], "Neojacob": [ "editor" ], "Neriah": [ "global-rollbacker", "global-renamer" ], "Nesbit": [ "editor" ], "Newlisp": [ "editor" ], "Nfgdayton": [ "editor" ], "NguoiDungKhongDinhDanh": [ "global-rollbacker", "editor" ], "NhacNy2412": [ "global-renamer" ], "Nick.anderegg": [ "editor" ], "NickPenguin": [ "editor" ], "NicoScribe": [ "editor" ], "Nicole Sharp": [ "editor" ], "Nieuwsgierige Gebruiker": [ "editor" ], "Nigos": [ "autoreview" ], "Nihonjoe": [ "global-renamer" ], "Nikai": [ "editor" ], "Ninjastrikers": [ "vrt-permissions" ], "NipplesMeCool": [ "editor" ], "Njardarlogar": [ "editor" ], "Nobody60": [ "editor" ], "Nolispanmo": [ "vrt-permissions" ], "Nomstuff": [ "autoreview" ], "Nonenmac": [ "editor" ], "Norton": [ "editor" ], "Npettiaux": [ "editor" ], "Nsaa": [ "vrt-permissions" ], "Nthep": [ "vrt-permissions" ], "NuclearWarfare": [ "global-rollbacker", "editor" ], "OMSMike": [ "editor" ], "Officer781": [ "editor" ], "Oleander": [ "editor" ], "Oliviacatherall": [ "autoreview" ], "Omphalographer": [ "editor" ], "OnBeyondZebrax": [ "editor" ], "Onsen": [ "editor" ], "Ontzak": [ "global-renamer" ], "Orderud": [ "editor" ], "OrenBochman": [ "editor" ], "Oshwah": [ "global-renamer" ], "Ottawahitech": [ "editor" ], "Owain.davies": [ "editor" ], "PAC": [ "editor" ], "PAC2": [ "editor" ], "PK 97": [ "editor" ], "PNW Raven": [ "editor" ], "Pac8612": [ "editor" ], "Paloi Sciurala": [ "global-rollbacker" ], "Panic2k4": [ "transwiki", "editor" ], "Pascal Pignard": [ "editor" ], "Pastbury": [ "editor" ], "Pathfinders": [ "editor" ], "Pathoschild": [ "editor" ], "Patrik": [ "editor" ], "PauSix": [ "editor" ], "Paul James": [ "editor" ], "Pavroo": [ "editor" ], "PbakerODU": [ "editor" ], "Pbrower2a": [ "editor" ], "Pearts": [ "editor" ], "Peeragogia": [ "editor" ], "Peri Coleman": [ "editor" ], "Perl~enwikibooks": [ "editor" ], "Peter1180": [ "editor" ], "PeterEasthope": [ "editor" ], "Peyton09": [ "editor" ], "Phan M. Nhat": [ "autoreview" ], "PhilKnight": [ "global-renamer" ], "Phoebe": [ "editor" ], "Phosgram": [ "editor" ], "Pi zero": [ "editor" ], "PieWriter": [ "editor" ], "Piotrus": [ "editor" ], "Pithikos": [ "editor" ], "Pittsburgh Poet": [ "editor" ], "Pjpearce": [ "editor" ], "Pkkao": [ "editor" ], "Planotse": [ "editor" ], "Platonides": [ "vrt-permissions" ], "Pluke": [ "editor" ], "PlyrStar93": [ "global-rollbacker", "editor" ], "Pminh141": [ "global-renamer" ], "Pmlineditor": [ "editor" ], "Pmw57": [ "editor" ], "Poetcsw": [ "editor" ], "PoizonMyst": [ "editor" ], "Pola 2607": [ "autoreview" ], "Polimerek": [ "vrt-permissions" ], "Polluks": [ "editor" ], "Pookiyama": [ "editor" ], "Popski": [ "editor" ], "Povigna": [ "editor" ], "Ppolar bear": [ "global-rollbacker", "global-renamer" ], "Pppery": [ "autoreview" ], "Prahlad balaji": [ "editor" ], "Pratyeka": [ "editor" ], "Praxidicae": [ "global-rollbacker", "global-sysop", "editor" ], "Primefac": [ "vrt-permissions" ], "Prince Kassad~enwikibooks": [ "editor" ], "Pronesto": [ "editor" ], "Prototyperspective": [ "autoreview" ], "Psoup": [ "editor" ], "Psr1909": [ "editor" ], "PullUpYourSocks": [ "editor" ], "PurpleBuffalo": [ "global-renamer" ], "PurplePieman": [ "editor" ], "Purplebackpack89": [ "editor" ], "Putukas01": [ "editor" ], "Qenalcu": [ "autoreview" ], "Quebecguy": [ "global-rollbacker" ], "QueerEcofeminist": [ "global-rollbacker", "global-renamer", "editor" ], "Quinlan83": [ "global-rollbacker", "editor" ], "Quintucket": [ "editor" ], "Qwerty number1": [ "editor" ], "Qwertyus": [ "editor" ], "Qədir": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "R. Henrik Nilsson": [ "editor" ], "RAdimer-WMF": [ "global-rollbacker" ], "RDBury": [ "editor" ], "RJHall": [ "editor" ], "Ra'ike": [ "vrt-permissions" ], "Rachboots": [ "editor" ], "Rachel": [ "editor" ], "Rachmat04": [ "global-renamer", "vrt-permissions" ], "RadiX": [ "editor", "steward", "vrt-permissions" ], "Raffaela Kunz": [ "editor" ], "Rahulkepapa": [ "editor" ], "Ramac": [ "editor" ], "Rambam rashi": [ "editor" ], "Randykitty": [ "autoreview", "global-rollbacker" ], "RatónMístico176": [ "editor" ], "Ravichandar84": [ "editor" ], "Rawheatley": [ "editor" ], "Ray Trygstad": [ "editor" ], "RayeChellMahela": [ "editor" ], "Raymond": [ "vrt-permissions" ], "Razr Nation": [ "editor" ], "Rchaswms01": [ "editor" ], "Rcragun": [ "editor", "uploader" ], "Readyokaygo": [ "editor" ], "Recent Runes": [ "editor" ], "Redlentil": [ "editor" ], "Refcanimm": [ "editor" ], "Regasterios": [ "vrt-permissions" ], "Reinhard Kraasch": [ "vrt-permissions" ], "RenaissanceMan2144": [ "autoreview" ], "Renamed user 242094acfb1a5b2f08e9e78f2e021a40": [ "editor" ], "Renamed user 5f91ca71739b07cfce8397eed758fe13": [ "editor", "uploader" ], "Renamed user f26394dcb19bd7bdad78f0d752896653": [ "editor" ], "Renvoy": [ "global-rollbacker", "global-sysop" ], "Reseletti": [ "editor" ], "Retropunk": [ "editor" ], "Reuben1508": [ "autoreview" ], "Revi C.": [ "global-rollbacker", "global-renamer", "ombuds", "editor", "vrt-permissions" ], "Reyk": [ "editor" ], "Rfc1394": [ "editor" ], "Rgdboer": [ "editor" ], "Rgreenone": [ "editor" ], "Rhole2001": [ "autoreview" ], "Rich Farmbrough": [ "editor" ], "Rickstambaugh": [ "editor" ], "Riggwelter": [ "vrt-permissions" ], "Risk": [ "editor" ], "Risteall": [ "editor" ], "Ritjesman": [ "editor" ], "RoMancer": [ "editor" ], "Robbiemorrison": [ "editor" ], "Robert Huber~enwikibooks": [ "editor" ], "Roberto Mura": [ "editor" ], "Robertsky": [ "global-renamer", "vrt-permissions" ], "RobinH": [ "editor" ], "Rodasmith": [ "editor" ], "Rodrigo": [ "editor" ], "Rodrigo.Argenton": [ "vrt-permissions" ], "Rogerborrell": [ "editor" ], "Rogerdpack": [ "editor" ], "RogueScholar": [ "editor" ], "Romainbehar": [ "editor" ], "RomaineBot": [ "vrt-permissions" ], "RonaldB": [ "vrt-permissions" ], "Rosser1954": [ "editor" ], "Rotlink": [ "editor" ], "RoySmith": [ "ombuds" ], "Rozzychan": [ "editor" ], "Rplano": [ "editor" ], "Rreagan007": [ "autoreview" ], "Rrgreen": [ "editor" ], "Rschen7754": [ "global-rollbacker", "editor" ], "RshieldsVA": [ "editor" ], "Rsjaffe": [ "global-renamer" ], "Rtaisis": [ "editor" ], "Ruakh": [ "editor" ], "Rudolpho~enwikibooks": [ "editor" ], "Runfellow": [ "editor" ], "Runner4lyfe": [ "editor" ], "RunningBlind": [ "editor" ], "Ruthven": [ "vrt-permissions" ], "Ruud Koot": [ "transwiki", "editor" ], "Rzuwig": [ "autoreview", "global-rollbacker" ], "S8321414": [ "global-renamer" ], "SB Johnny": [ "editor" ], "SCP-2000": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "SHB2000": [ "sysop", "steward" ], "SPM": [ "editor" ], "Sae1962": [ "editor" ], "Safuan12616": [ "editor" ], "SahniM": [ "editor" ], "Sakretsu": [ "steward" ], "Sakura emad": [ "global-rollbacker" ], "Salil Kumar Mukherjee": [ "editor" ], "Samat": [ "vrt-permissions" ], "Sammy2012": [ "editor" ], "Samuel.dellit": [ "editor" ], "Samuele2002": [ "global-rollbacker", "editor" ], "Samwilson": [ "editor" ], "SanBonne": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "Sandbergja": [ "editor" ], "Sannita": [ "vrt-permissions" ], "Sante Caserio~enwikibooks": [ "editor" ], "SarahFatimaK": [ "editor" ], "Sargoth": [ "vrt-permissions" ], "Saroj": [ "global-rollbacker" ], "Sascha Lill 95": [ "editor" ], "Satdeep Gill": [ "vrt-permissions" ], "Savh": [ "global-rollbacker", "editor" ], "Sbb1413": [ "editor" ], "Scention": [ "editor" ], "Schniggendiller": [ "steward" ], "SchreiberBike": [ "editor" ], "Scott.beckman": [ "editor" ], "Sebastian Wallroth": [ "vrt-permissions" ], "Seewolf": [ "global-rollbacker", "vrt-permissions" ], "Sekidoki": [ "vrt-permissions" ], "Selden": [ "editor" ], "Sennecaster": [ "vrt-permissions" ], "Serinap": [ "editor" ], "Seth Miller": [ "editor" ], "SevenSpheres": [ "editor" ], "Sfan00 IMG": [ "editor" ], "Sfoerster": [ "editor" ], "Sgarrigan": [ "editor" ], "Sgowal": [ "editor" ], "Shaitand": [ "editor" ], "ShakespeareFan00": [ "editor" ], "SharingNotes": [ "editor" ], "Shawntanchinyang": [ "editor" ], "Shdwninja8": [ "editor" ], "ShelleyAdams": [ "autoreview" ], "ShifaYT": [ "global-rollbacker" ], "Shii": [ "editor" ], "Shira the Mogul": [ "editor" ], "Shlomif": [ "editor" ], "ShuBraque": [ "editor" ], "Sidelight12": [ "editor" ], "Sidorkin": [ "editor" ], "Sidpatil": [ "editor" ], "Siebengang": [ "editor" ], "Sigma 7": [ "editor" ], "Simon Peter Hughes": [ "editor" ], "Sinus46": [ "editor" ], "Sir Beluga": [ "editor" ], "Sir Lestaty de Lioncourt": [ "vrt-permissions" ], "SixWingedSeraph": [ "editor" ], "Sj": [ "editor" ], "Sjc~enwikibooks": [ "editor" ], "Sjlegg": [ "editor" ], "Sjone101": [ "editor" ], "Sjö": [ "global-rollbacker" ], "Skymath": [ "editor" ], "Slava Ukraini Heroyam Slava 123": [ "editor", "uploader" ], "Slava Ukrajini Heroyam Slava": [ "editor" ], "Sluffs": [ "editor" ], "Smjg": [ "editor" ], "SnappyDragonPennyroyal": [ "editor" ], "SocialKnowledge": [ "editor" ], "SoftwareEngineerMoose": [ "autoreview" ], "Sonia": [ "editor" ], "Sophie Cheng": [ "editor" ], "Sotiale": [ "steward" ], "Soul windsurfer": [ "editor" ], "SouthParkFan65": [ "editor" ], "SoylentGreen": [ "editor" ], "Spamduck": [ "editor" ], "Spaynton": [ "editor" ], "Spender2001": [ "editor" ], "Speregrination": [ "editor" ], "Spiderworm": [ "editor" ], "Spoon!": [ "editor" ], "Squasher": [ "global-renamer" ], "Srhat": [ "editor" ], "Stang": [ "global-rollbacker", "editor", "vrt-permissions" ], "Stanglavine": [ "editor" ], "Steinsplitter": [ "global-renamer", "vrt-permissions" ], "StephT0704": [ "autoreview" ], "Stepheng3": [ "editor" ], "Stepro": [ "vrt-permissions" ], "Steve M": [ "editor" ], "Stilfehler": [ "editor" ], "Stockywood": [ "editor" ], "Storeye": [ "editor" ], "Strainu": [ "vrt-permissions" ], "Strange quark": [ "editor" ], "Stryn": [ "global-rollbacker", "editor" ], "Stïnger": [ "global-rollbacker", "editor" ], "Suchenwi": [ "editor" ], "Sumone10154": [ "editor" ], "SunCreator": [ "editor" ], "Sunny Cryolite": [ "global-rollbacker" ], "Sunshineconnelly": [ "editor" ], "SuperTyphoonNoru": [ "editor" ], "Superbass": [ "vrt-permissions" ], "Superpes15": [ "global-rollbacker", "global-renamer", "global-sysop", "vrt-permissions" ], "Supertoff": [ "vrt-permissions" ], "Superzerocool": [ "vrt-permissions" ], "SupremeUmanu": [ "editor" ], "Suruena": [ "editor" ], "Sutambe": [ "editor" ], "Sutton Publishing": [ "editor" ], "Sué González Hauck": [ "editor" ], "Svartava": [ "global-rollbacker", "global-renamer", "global-sysop", "editor" ], "SweetCanadianMullet": [ "editor" ], "Swift": [ "editor" ], "SyG": [ "editor" ], "Sylvesterchukwu04": [ "editor" ], "Sylvialim": [ "editor" ], "Sylviaread": [ "editor" ], "Synoman Barris": [ "global-rollbacker", "transwiki", "editor" ], "Syum90": [ "global-rollbacker", "editor" ], "Syunsyunminmin": [ "global-rollbacker", "global-renamer", "global-sysop", "editor" ], "T.seppelt": [ "editor" ], "TDang": [ "editor" ], "TTWIDEE": [ "editor" ], "Tahmid": [ "editor" ], "Taketa": [ "global-renamer" ], "Takipoint123": [ "vrt-permissions" ], "TakuyaMurata": [ "editor" ], "Tamzin": [ "global-renamer" ], "Tanbiruzzaman": [ "global-rollbacker", "global-renamer", "global-sysop", "editor", "vrt-permissions" ], "Tannertsf": [ "editor" ], "Taoheedah": [ "editor" ], "Tapsevarg": [ "editor" ], "TaronjaSatsuma": [ "vrt-permissions" ], "Taxman": [ "editor" ], "Tchoř": [ "global-renamer" ], "Tdkehoe": [ "editor" ], "Tdvorak": [ "editor" ], "Techman224": [ "editor" ], "Tegel": [ "editor", "steward" ], "Teles": [ "ombuds", "steward", "vrt-permissions" ], "Tem5psu": [ "editor" ], "Tempodivalse": [ "editor" ], "TenWhile6": [ "global-rollbacker", "global-renamer", "global-sysop", "editor" ], "Tenshi Hinanawi": [ "autoreview", "global-rollbacker" ], "Terence Kearey": [ "editor" ], "Ternarius": [ "global-renamer" ], "Ternera": [ "global-rollbacker", "global-renamer", "global-sysop", "editor" ], "Tesleemah": [ "editor" ], "Tevfik AKTUĞLU": [ "editor" ], "Tgregtregretgtr": [ "editor" ], "ThatBPengineer": [ "autoreview" ], "Thatonewikiguy": [ "editor" ], "The Squirrel Conspiracy": [ "vrt-permissions" ], "The labs": [ "editor" ], "TheGoodEndedHappily": [ "vrt-permissions" ], "ThePCKid": [ "editor" ], "TheSandDoctor": [ "global-renamer", "vrt-permissions" ], "Theknightwho": [ "editor" ], "Thenub314": [ "editor" ], "Theo Hughes": [ "editor" ], "Theornamentalist": [ "editor" ], "Thereen": [ "editor" ], "Thewinster": [ "editor" ], "Thierry Dugnolle": [ "editor" ], "Thinkglobalnow": [ "editor" ], "Thirunavukkarasye-Raveendran": [ "editor" ], "Thomas Simpson": [ "editor" ], "Thomas.haslwanter": [ "editor" ], "Thomas.lochmatter": [ "editor" ], "Tibetologist": [ "editor" ], "Tigerzeng": [ "global-rollbacker" ], "Tiled": [ "editor" ], "TimBorgNetzWerk": [ "editor" ], "Timothy Gu": [ "editor" ], "Timpo": [ "editor" ], "Tiptoety": [ "editor" ], "Tjyang": [ "editor" ], "Tlustulimu": [ "editor" ], "Tmvogel": [ "editor" ], "Tom Morris": [ "editor" ], "Tomato86": [ "editor" ], "TommyG": [ "vrt-permissions" ], "Tomt87": [ "editor" ], "Tomybrz": [ "editor" ], "Tonyvall": [ "autoreview" ], "Tp42": [ "editor" ], "Tracklayingninja": [ "editor" ], "Tradimus": [ "editor" ], "Tropicalkitty": [ "global-rollbacker", "editor" ], "TrulyShruti": [ "editor" ], "Ts12rAc": [ "global-rollbacker" ], "Tsarina CatarinaToo": [ "autoreview" ], "TunnelESON": [ "sysop" ], "Turbojet": [ "vrt-permissions" ], "Turkmen": [ "editor" ], "TwoThirty": [ "editor" ], "Tyoyafud": [ "editor" ], "Túrelio": [ "autoreview" ], "U$3rname008": [ "editor" ], "USSR-Slav": [ "global-rollbacker" ], "Uf.hun2201": [ "editor" ], "Uncitoyen": [ "global-rollbacker", "global-renamer" ], "Uncle G": [ "editor" ], "Unixxx": [ "editor" ], "User01938": [ "editor" ], "Username222": [ "editor" ], "Utcursch": [ "vrt-permissions" ], "Uziel302": [ "editor" ], "Uzume": [ "editor" ], "V0lkanic": [ "global-renamer" ], "VIGNERON": [ "steward" ], "Valery Starikov": [ "editor" ], "Van der Hoorn": [ "editor" ], "Varnent": [ "vrt-permissions" ], "Vdolar": [ "autoreview" ], "VectorVoyager": [ "editor" ], "Venzz": [ "vrt-permissions" ], "Verfassungsfreund": [ "editor" ], "Veritas Sapientiae": [ "global-rollbacker", "global-renamer", "vrt-permissions" ], "Vermont": [ "editor", "steward", "vrt-permissions" ], "Victor Stefan Stoica": [ "autoreview" ], "Victor Trevor": [ "autoreview" ], "Victoria.sandeman": [ "autoreview" ], "Vincent Vega": [ "global-renamer" ], "Vito Genovese": [ "editor" ], "Vituzzu": [ "editor" ], "Vladimir Solovjev": [ "global-renamer", "vrt-permissions" ], "Vogone": [ "global-rollbacker", "editor" ], "Vossman": [ "editor" ], "Vrinda": [ "editor" ], "VulcanWikiEdit": [ "editor" ], "Vwanweb": [ "editor" ], "WOSlinker": [ "autoreview" ], "Waihorace": [ "global-rollbacker" ], "Waldyrious": [ "editor" ], "WalshDay": [ "editor" ], "Wargo": [ "editor" ], "Wbjimmyd": [ "editor" ], "Wcoole": [ "editor" ], "WeelkyWikiReader": [ "editor" ], "Wekeepwhatwekill": [ "autoreview" ], "WereSpielChequers": [ "editor" ], "What no2000": [ "editor" ], "WhatamIdoing": [ "editor" ], "WhitePhosphorus": [ "global-rollbacker", "global-sysop" ], "Whiteknight": [ "editor" ], "Whoop whoop pull up": [ "editor" ], "Whym": [ "editor", "vrt-permissions" ], "Wiki13": [ "editor" ], "WikiBayer": [ "global-rollbacker", "global-sysop", "editor" ], "WikiFer": [ "vrt-permissions" ], "Wikimi-dhiann": [ "editor" ], "Wikiotics": [ "editor" ], "Wikiwau": [ "autoreview", "editor" ], "WillNess": [ "editor" ], "Willscrlt": [ "editor" ], "Wim b": [ "global-rollbacker", "global-sysop", "editor" ], "Wisden": [ "editor" ], "Withinfocus": [ "editor" ], "Wj32": [ "editor" ], "Wkee4ager": [ "editor" ], "Wobbit": [ "editor" ], "Wojciech Pędzich": [ "vrt-permissions" ], "Wooze": [ "global-rollbacker" ], "Wundermacht": [ "editor" ], "Wutsje": [ "global-rollbacker", "editor" ], "Ww2censor": [ "vrt-permissions" ], "Wüstenspringmaus": [ "global-rollbacker", "global-renamer" ], "XXBlackburnXx": [ "editor", "steward" ], "Xandradi": [ "editor" ], "Xania": [ "sysop", "checkuser" ], "Xaosflux": [ "editor", "steward" ], "XenonX3": [ "vrt-permissions" ], "Xerol": [ "editor" ], "Xeverything11": [ "editor", "uploader" ], "Xhungab": [ "editor" ], "Xinkai Wu": [ "editor" ], "Xixtas": [ "editor" ], "Xqt": [ "global-rollbacker" ], "Xxagile": [ "editor" ], "Xypron": [ "editor" ], "Xz64": [ "editor" ], "Y-S.Ko": [ "editor" ], "YMS": [ "editor" ], "Yahya": [ "steward", "vrt-permissions" ], "Yamla": [ "global-renamer" ], "Yann": [ "editor" ], "Yerpo": [ "global-renamer", "vrt-permissions" ], "Yikrazuul": [ "editor" ], "Ymblanter": [ "global-rollbacker" ], "Yndesai": [ "editor" ], "Youssefsan": [ "editor" ], "Ysangkok": [ "editor" ], "Yvelik": [ "uploader" ], "Yzmo": [ "editor" ], "ZI Jony": [ "editor" ], "Zabe": [ "global-rollbacker" ], "Zafer": [ "ombuds" ], "Zedshort": [ "editor" ], "ZeroOne": [ "editor" ], "Zetud": [ "global-rollbacker", "vrt-permissions" ], "Ziv": [ "editor" ], "Zoeannl": [ "editor" ], "Zollerriia": [ "editor" ], "Zoohouse": [ "editor" ], "Zoot": [ "editor" ], "Zsohl": [ "autoreview", "editor" ], "Zvsmith": [ "editor" ], "Zweighaft": [ "editor" ], "ZxxZxxZ": [ "editor" ], "~riley": [ "global-rollbacker", "editor" ], "Érico": [ "global-renamer" ], "Виктор Пинчук": [ "editor" ], "Воображение": [ "editor" ], "Всевидящий": [ "global-rollbacker" ], "Д.Ильин": [ "editor" ], "Л.П. Джепко": [ "editor" ], "יהודה שמחה ולדמן": [ "editor" ], "מקף": [ "global-rollbacker", "global-renamer" ], "د. فارس الجويلي": [ "global-renamer" ], "روتانا": [ "global-renamer" ], "علاء": [ "steward", "vrt-permissions" ], "فيصل": [ "global-renamer", "vrt-permissions" ], "सीमा1": [ "editor" ], "タチコマ robot": [ "editor" ], "ネイ": [ "global-renamer" ], "一隻北極熊": [ "editor" ], "人间百态": [ "global-rollbacker" ], "臺灣象象": [ "autoreview" ], "范": [ "vrt-permissions" ], "青子守歌": [ "vrt-permissions" ], "魔琴": [ "global-rollbacker" ], "ꠢꠣꠍꠘ ꠞꠣꠎꠣ": [ "editor" ], "기나ㅏㄴ": [ "global-rollbacker", "global-renamer" ] } gctwt8nby4uvaajgyagwicmqehk2a25 User:JustTheFacts33/sandbox2 2 474624 4656581 4656221 2026-08-07T13:38:18Z JustTheFacts33 3434282 /* Current production facilities */ 4656581 wikitext text/x-wiki {{user sandbox}} {{tmbox|type=notice|text=This is a sandbox page, a place for experimenting with Wikibooks.}} The following is a list of current, former, and confirmed future facilities of [[w:Ford Motor Company|Ford Motor Company]] for manufacturing automobiles and other components. Per regulations, the factory is encoded into each vehicle's [[w:VIN|VIN]] as character 11 for North American models. European models have the factory encoded into each vehicle's [[w:VIN|VIN]] as character 8 (except for the VW-built 3rd gen. Ford Tourneo Connect and Transit Connect, which have the plant code in position 11 as VW does for all of its models regardless of region). The River Rouge Complex manufactured most of the components of Ford vehicles, starting with the Model T. Much of the production was devoted to compiling "[[w:knock-down kit|knock-down kit]]s" that were then shipped in wooden crates to Branch Assembly locations across the United States by railroad and assembled locally, using local supplies as necessary.<ref name="MyLifeandWork">{{cite book|last=Ford|first=Henry|last2=Crowther|first2=Samuel|year=1922|title=My Life and Work|publisher=Garden City Publishing|pages=[https://archive.org/details/bub_gb_4K82efXzn10C/page/n87 81], 167|url=https://archive.org/details/bub_gb_4K82efXzn10C|quote=Ford 1922 My Life and Work|access-date=2010-06-08 }}</ref> A few of the original Branch Assembly locations still remain while most have been repurposed or have been demolished and the land reused. Knock-down kits were also shipped internationally until the River Rouge approach was duplicated in Europe and Asia. For US-built models, Ford switched from 2-letter plant codes to a 1-letter plant code in 1953. Mercury and Lincoln, however, kept using the 2-letter plant codes through 1957. Mercury and Lincoln switched to the 1-letter plant codes for 1958. Edsel, which was new for 1958, used the 1-letter plant codes from the outset. The 1956-1957 Continental Mark II, a product of the Continental Division, did not use a plant code as they were all built in the same plant. The 2-letter plant code in 1950-1952 Ford cars and 1950-1957 Mercurys and Lincolns was in position 3 & 4 of the serial number. The 1-letter plant code in 1953-1959 Ford cars, including the Ford Ranchero, and 1958-1959 Mercurys, Lincolns, and Edsels was in position 3 of the serial number. The 1-letter plant code in 1960-1980 Ford cars, including the Ford Ranchero, 1960-1980 Mercurys & Lincolns, and 1960 Edsels was in position 2 of the serial number. The 2-letter plant code in 1951-1952 Ford trucks was in position 5 & 6 of the serial number. The 1-letter plant code in 1953-1960 Ford trucks was in position 6 of the serial number. The 1-letter plant code in 1961-1980 Ford trucks, including Bronco and Econoline, was in position 5 of the serial number. Canadian-built models used a different system for VINs until 1966, when Ford of Canada adopted the same system as the US. In 1950-1959, Canadian-built cars, including the Ford Ranchero, had a plant code in the 5th position of the serial number. In 1948-1950, Canadian-built Ford and Mercury trucks had a plant code in the 5th position of the serial number. In 1951-1954, Canadian-built Ford and Mercury trucks had a plant code in the 7th position of the serial number. In 1955-1959, Canadian-built Ford and Mercury trucks had a plant code in the 9th position of the serial number. Mexican-built models often just had "MEX" inserted into the VIN instead of a plant code in the pre-standardized VIN era. European-built Fords have the source company code in the 7th position and the plant code in the 8th position beginning in 1981. From 1965-1980, the source company code was in the 1st position and the plant code was in the 2nd position. Since the letter for the plant code is sometimes used by more than one plant, the source company code immediately preceding the plant code is needed to determine which plant is being referred to. For a listing of Ford's proving grounds and test facilities see [[w:Ford Proving Grounds|Ford Proving Grounds]]. ==Current production facilities== {| class="wikitable sortable" style="font-size:90%" |- ! style="width:120px;"| VIN ! style="width:200px;"| Name ! style="width:100px;"| City/state ! style="width:100px;"| Country ! data-sort-type="isoDate" style="width:60px;" | Opened ! data-sort-type="number" style="width:80px;" | Employees ! style="width:220px;"| Products ! style="width:350px;" class="unsortable"| Comments |- valign="top" | | style="text-align:left;"| [[w:AutoAlliance Thailand|AutoAlliance Thailand]] | style="text-align:left;"| [[w:Pluak Daeng district|Pluak Daeng district]], [[w:Rayong|Rayong]] | style="text-align:left;"| [[w:Thailand|Thailand]] | style="text-align:center;"| 1998 | style="text-align:right;"| 5,400 | style="text-align:left;"| [[w:Ford Ranger (T6)|Ford Ranger (T6)]]<br /> [[w:Ford Everest|Ford Everest]]<br /> [[w:Mazda 2|Mazda 2]]<br / >[[w:Mazda 3|Mazda 3]]<br / >[[w:Mazda CX-3|Mazda CX-3]]<br />[[w:Mazda CX-30|Mazda CX-30]] | Joint venture 50% owned by Ford and 50% owned by Mazda. <br />Previously: [[w:Ford Ranger (international)#First generation (PE/PG/PH; 1998)|Ford Ranger (PE/PG/PH)]]<br />[[w:Ford Ranger (international)#Second generation (PJ/PK; 2006)|Ford Ranger (PJ/PK)]]<br /> [[w:Ford Fiesta (sixth generation)|Ford Fiesta]]<br />[[w:Ford Laser|Ford Laser]]<br /> [[w:Mazda Familia#Ninth generation (BJ; 1998–2003)|Mazda Protege]]<br />[[w:Mazda B series#UN|Mazda B-Series]]<br / >[[w:Mazda BT-50#First generation (UN; 2006)|Mazda BT-50 (UN)]] <br / >[[w:Mazda BT-50#Second generation (UP, UR; 2011)|Mazda BT-50 (T6)]] |- valign="top" | | style="text-align:left;"| [[w:Buffalo Stamping|Buffalo Stamping]] | style="text-align:left;"| [[w:Hamburg, New York|Hamburg, New York]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1950 | style="text-align:right;"| 843 | style="text-align:left;"| Body panels: Quarter Panels, Body Sides, Rear Floor Pan, Rear Doors, Roofs, front doors, hoods | Located at 3663 Lake Shore Rd. |- valign="top" | | style="text-align:left;"| [[w:Changan Ford|Changan Ford]] Chongqing Assembly | style="text-align:left;"| [[w:Chongqing|Chongqing]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| 2004 (Plant 1) <br /> 2012 (Plant 2) <br /> 2014 (Plant 3) | style="text-align:right;"| 5,000+ | style="text-align:left;"| [[w:Ford Escape#fourth|Ford Escape]] <br />[[w:Ford Mondeo Sport|Ford Mondeo Sport]]<br />[[w:Ford Focus|Ford Focus]]<br /> [[w:Ford Mondeo|Ford Mondeo]]<br />[[w:Ford Mustang Mach-E|Ford Mustang Mach-E]]<br />[[w:Lincoln Corsair|Lincoln Corsair]]<br />[[w:Lincoln Zephyr (China)|Lincoln Zephyr/Z]] | style="text-align:left;"| Joint Venture: Chongqing Changan Automobile Co., Ltd. (50%), Ford Motor Company (50%). <br />Complex includes three assembly plants. <br /> Previously: [[w:Ford EcoSport#Second generation (B515; 2012)|Ford EcoSport]]<br />[[w:Ford Escort (China)|Ford Escort]]<br />[[w:Ford Evos|Ford Evos]]<br />[[w:Ford Fiesta (fourth generation)|Ford Fiesta (Gen 4)]]<br />[[w:Ford Fiesta (fifth generation)|Ford Fiesta (Gen 5)]]<br />[[w:Ford Kuga#third|Ford Kuga]]<br /> [[w:Ford S-Max#First generation (2006)|Ford S-Max]]<br />[[w:Mazda3#First generation (BK; 2003)|Mazda 3]]<br />[[w:Volvo S40#Second generation (2004–2012)|Volvo S40]]<br />[[w:Volvo S80#S80L|Volvo S80L]] |- valign="top" | | style="text-align:left;"| [[w:Changan Ford|Changan Ford]] Chongqing Engine | style="text-align:left;"| [[w:Chongqing|Chongqing]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| 2013 | style="text-align:right;"| 1,310 | style="text-align:left;"| [[w:Ford EcoBoost engine#1.0 L Fox|Ford 1.0 L Ecoboost I3 engine]]<br />[[w:Ford Sigma engine|Ford 1.5 L Sigma I4 engine]]<br />[[w:Ford EcoBoost engine#Inline four-cylinder|Ford 1.5 L EcoBoost I4 engine]]<br /> | style="text-align:left;"| Joint Venture: Chongqing Changan Automobile Co., Ltd. (50%), Ford Motor Company (50%). |- valign="top" | | style="text-align:left;"| [[w:Changan Ford|Changan Ford]] Chongqing Transmission | style="text-align:left;"| [[w:Chongqing|Chongqing]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| 2014 | style="text-align:right;"| 1,480 | style="text-align:left;"| [[w:Ford 6F transmission|Ford 6F15 transmission]]<br />[[w:Ford 6F transmission|Ford 6F35 transmission]]<br /> | style="text-align:left;"| Joint Venture: Chongqing Changan Automobile Co., Ltd. (50%), Ford Motor Company (50%). |- valign="top" | style="text-align:center;"| J (NA) | style="text-align:left;"| [[w:Changan Ford|Changan Ford]] Hangzhou Assembly | style="text-align:left;"| [[w:Hangzhou|Hangzhou]], [[w:Zhejiang|Zhejiang]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| 2015 | style="text-align:right;"| | style="text-align:left;"| [[w:Ford Edge#Third generation (Edge L—CDX706; 2023)|Ford Edge L]]<br />[[w:Ford Explorer#Sixth generation (U625; 2020)|Ford Explorer]] <br />[[w:Lincoln Aviator#Second generation (U611; 2020)|Lincoln Aviator]]<br />[[w:Lincoln Nautilus|Lincoln Nautilus]] | style="text-align:left;"| Joint Venture: Chongqing Changan Automobile Co., Ltd. (50%), Ford Motor Company (50%). <br /> Previously: [[w:Ford Edge#Second generation (CD539; 2015)|Ford Edge Plus]]<br />[[w:Ford Taurus (China)|Ford Taurus]] |- valign="top" | | style="text-align:left;"| [[w:Changan Ford|Changan Ford]] <br> Harbin Assembly | style="text-align:left;"| [[w:Harbin|Harbin]], [[w:Heilongjiang|Heilongjiang]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| 2016 (Start of Ford production) | style="text-align:right;"| | style="text-align:left;"| Production suspended in Nov. 2019 | style="text-align:left;"| Plant formerly belonged to Harbin Hafei Automobile Group Co. Bought by Changan Ford in 2015. Joint Venture: Chongqing Changan Automobile Co., Ltd. (50%), Ford Motor Company (50%). <br /> Previously: [[w:Ford Focus (third generation)|Ford Focus]] (Gen 3)<br>[[w:Ford Focus (fourth generation)|Ford Focus]] (Gen 4) |- valign="top" | style="text-align:center;"| CHI/CH/G (NA) | style="text-align:left;"| [[w:Chicago Assembly|Chicago Assembly]] | style="text-align:left;"| [[w:Chicago|Chicago]], [[w:Illinois|Illinois]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1924 | style="text-align:right;"| 4,852 | style="text-align:left;"| [[w:Ford Explorer#Sixth generation (U625; 2020)|Ford Explorer (U625)]] (2020-)<br />[[w:Lincoln Aviator#Second generation (U611; 2020)|Lincoln Aviator (U611)]] (2020-) | style="text-align:left;"| Located at 12600 S Torrence Avenue.<br/>Replaced the previous location at 3915 Wabash Avenue.<br /> Built armored personnel carriers for US military during WWII. <br /> Final Taurus rolled off the assembly line March 1, 2019.<br />Previously: <br /> [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:Ford Model 48|Ford Model 48]]<br />[[w:1937 Ford|1937 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />[[w:1949 Ford|1949 Ford]]<br />[[w:1952 Ford|1952 Ford]]<br />[[w:1955 Ford|1955 Ford]]<br />[[w:1957 Ford|1957 Ford]]<br />[[w:Ford F-Series|Ford F-Series]] (1953-1964) <br /> [[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1965)<br />[[w:Ford Galaxie|Ford Galaxie]] (1959-1973)<br />[[w:Ford LTD (Americas)|Ford LTD (full-size)]] (1968, 1970-1972, 1974)<br />[[w:Ford Torino|Ford Torino]] (1974-1976)<br />[[w:Ford Elite|Ford Elite]] (1974-1976)<br /> [[w:Ford Thunderbird|Ford Thunderbird]] (1977-1980)<br />[[w:Ford Granada (North America)#Second generation (1981–1982)|Ford Granada]] (1981-1982)<br />[[w:Mercury Cougar#Fifth generation (1980–1982)|Mercury Cougar]] (non-XR-7 models only) (1981-1982)<br />[[w:Ford LTD (Americas)#Fourth generation (1983–1986)|Ford LTD (midsize)]] (1983-1986)<br />[[w:Mercury Marquis#Fourth generation (1983–1986)|Mercury Marquis]] (1983-1986)<br />[[w:Ford Taurus|Ford Taurus]] (1986–2019)<br />[[w:Mercury Sable|Mercury Sable]] (1986–2005, 2008-2009)<br />[[w:Ford Five Hundred|Ford Five Hundred]] (2005-2007)<br />[[w:Mercury Montego#Third generation (2005–2007)|Mercury Montego]] (2005-2007)<br />[[w:Lincoln MKS|Lincoln MKS]] (2009-2016)<br />[[w:Ford Freestyle|Ford Freestyle]] (2005-2007)<br />[[w:Ford Taurus X|Ford Taurus X]] (2008-2009)<br />[[w:Ford Explorer#Fifth generation (U502; 2011)|Ford Explorer (U502)]] (2011-2019) |- valign="top" | | style="text-align:left;"| Chicago Stamping | style="text-align:left;"| [[w:Chicago Heights, Illinois|Chicago Heights, Illinois]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1956 | style="text-align:right;"| 1,165 | | Located at 1000 E Lincoln Hwy, Chicago Heights, IL |- valign="top" | | style="text-align:left;"| [[w:Chihuahua Engine|Chihuahua Engine]] | style="text-align:left;"| [[w:Chihuahua, Chihuahua|Chihuahua, Chihuahua]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| 1983 | style="text-align:right;"| 2,430 | style="text-align:left;"| [[w:Mazda L engine|Ford Duratec 2.0/2.3/2.5 I4]] <br />[[w:Ford EcoBoost engine#1.5 L Dragon|Ford 1.5L Dragon EcoBoost I3]] <br /> [[w:Ford Power Stroke engine#6.7 Power Stroke|Ford 6.7L Scorpion Diesel V8]] | style="text-align:left;"| Began operations July 27, 1983. 1,902,600 Penta engines produced from 1983-1991. 2,340,464 Zeta engines produced from 1993-2004. Over 14 million total engines produced. Complex includes 3 engine plants. Plant 1, opened in 1983, builds 4-cylinder engines. Plant 2, opened in 2010, builds diesel V8 engines. Plant 3, opened in 2018, builds the Dragon 3-cylinder. <br /> Previously: [[w:Ford HSC engine|Ford HSC/Penta engine]]<br />[[w:Ford Zeta engine|Ford Zeta engine]]<br />[[w:Ford 4.4 Turbo Diesel|4.4L Diesel V8]] (for Land Rover) |- valign="top" | | style="text-align:left;"| [[w:Cleveland Engine|Cleveland Engine]] #1 | style="text-align:left;"| [[w:Brook Park, Ohio|Brook Park, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1951 | style="text-align:right;"| 1,834 | style="text-align:left;"| [[w:Ford EcoBoost engine#2.0 L (2010–2015)|Ford 2.0/2.3 EcoBoost I4]]<br /> [[w:Ford EcoBoost engine#3.5 L (first generation)|Ford 3.5&nbsp;L EcoBoost V6]]<br />[[w:Ford Cyclone engine|Ford 3.5/3.7 Cyclone V6 (for RWD vehicles)]] | style="text-align:left;"| Located at 17601 Brookpark Rd. Idled from May 2007 to May 2009.<br />Previously: [[w:Lincoln Y-block V8 engine|Lincoln Y-block V8 engine]]<br />[[w:Ford small block engine|Ford 221/260/289/302 Windsor V8]]<br />[[w:Ford Duratec V6 engine#3.0 L|Ford 3.0L Duratec V6]] |- valign="top" | style="text-align:center;"| A (EU) [when following G] [includes Mercury Capri] /<br> E (NA) <br> [Merkur Scorpio] | style="text-align:left;"| [[w:Cologne Body & Assembly|Cologne Body & Assembly]] | style="text-align:left;"| [[w:Cologne|Cologne]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| 1931 | style="text-align:right;"| 4,090 | style="text-align:left;"| [[w:Ford Explorer EV|Ford Explorer EV]] (VW MEB-based) <br /> [[w:Ford Capri EV|Ford Capri EV]] (VW MEB-based) | Previously: [[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:Ford Model B (1932)|Ford Model B]]<br />[[w:Ford Rheinland|Ford Rheinland]]<br />[[w:Ford Köln|Ford Köln]]<br />[[w:Ford Eifel|Ford Eifel]]<br />[[w:Ford Taunus|Ford Taunus]]<br /> [[w:Ford Transit#Taunus Transit (1953)|Ford Taunus Transit]]<br />[[w:Ford Capri|Ford Capri]]<br />[[w:Mercury Capri#First generation (1970–1978)|Mercury Capri]] (1970-1974, 1976-1977)<br />[[w:Ford Consul#Ford Consul (Granada Mark I based) (1972–1975)|Ford Consul]]<br />[[w:Ford Granada (Europe)|Ford Granada]]<br />[[w:Ford Sierra|Ford Sierra]]<br />[[w:Ford Mondeo (first generation)|Ford Mondeo]]<br />[[w:Ford Scorpio|Ford Scorpio]]<br />[[w:Merkur Scorpio|Merkur Scorpio]] (1988-1989)<br />[[w:Ford Fiesta|Ford Fiesta]] <br /> [[w:Ford Fusion (Europe)|Ford Fusion]]<br />[[w:Ford Puma (sport compact)|Ford Puma]]<br />[[w:Ford Courier#Europe (1991–2002)|Ford Courier]]<br />[[w:de:Ford Modell V8-51|Ford Model V8-51]]<br />[[w:de:Ford V-3000-Serie|Ford V-3000/Ford B 3000 series]]<br />[[w:Ford Rhein|Ford Rhein]]<br />[[w:Ford Ruhr|Ford Ruhr]]<br />[[w:Ford FK|Ford FK]] |- valign="top" | | style="text-align:left;"| Cologne Engine | style="text-align:left;"| [[w:Cologne|Cologne]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| 1962 | style="text-align:right;"| 810 | style="text-align:left;"| [[w:Ford EcoBoost engine#1.0 L Fox|1.0 litre EcoBoost I3]] <br /> [[w:Aston Martin V12 engine|Aston Martin V12 engine]] | style="text-align:left;"| Aston Martin engines are built at the [[w:Aston Martin Engine Plant|Aston Martin Engine Plant]], a special section of the plant which is separated from the rest of the plant.<br> Previously: <br /> [[w:Ford Taunus V4 engine|Ford Taunus V4 engine]]<br />[[w:Ford Cologne V6 engine|Ford Cologne V6 engine]]<br />[[w:Jaguar AJ-V8 engine#Aston Martin 4.3/4.7|Aston Martin 4.3/4.7 V8]] |- valign="top" | | style="text-align:left;"| Cologne Tool & Die | style="text-align:left;"| [[w:Cologne|Cologne]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| 1963 | style="text-align:right;"| 1,140 | style="text-align:left;"| Tooling, dies, fixtures, jigs, die repair | |- valign="top" | | style="text-align:left;"| Cologne Transmission | style="text-align:left;"| [[w:Cologne|Cologne]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| 1935 | style="text-align:right;"| 1,280 | style="text-align:left;"| [[w:Ford MTX-75 transmission|Ford MTX-75 transmission]]<br /> [[w:Ford MTX-75 transmission|Ford VXT-75 transmission]]<br />Ford VMT6 transmission<br />[[w:Volvo Cars#Manual transmissions|Volvo M56/M58/M66 transmission]]<br />Ford MMT6 transmission | Formerly part of the [[w:Getrag Ford Transmission|Getrag Ford Transmission]] joint venture. Returned to 100% Ford ownership in 2021. |- valign="top" | | style="text-align:left;"| Cortako Cologne GmbH | style="text-align:left;"| [[w:Cologne|Cologne]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| 1961 | style="text-align:right;"| 410 | style="text-align:left;"| Forging of steel parts for engines, transmissions, and chassis | Originally known as Cologne Forge & Die Cast Plant. Previously known as Tekfor Cologne GmbH from 2003 to 2011, a 50/50 joint venture between Ford and Neumayer Tekfor GmbH. Also briefly known as Cologne Precision Forge GmbH. Bought back by Ford in 2011 and now 100% owned by Ford. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Coscharis Motors Assembly Ltd. | style="text-align:left;"| [[w:Lagos|Lagos]] | style="text-align:left;"| [[w:Nigeria|Nigeria]] | style="text-align:center;"| | style="text-align:right;"| | style="text-align:left;"| [[w:Ford Ranger (T6)|Ford Ranger]] | style="text-align:left;"| Plant owned by Coscharis Motors Assembly Ltd. Built under contract for Ford. |- valign="top" | style="text-align:center;"| M (NA) | style="text-align:left;"| [[w:Cuautitlán Assembly|Cuautitlán Assembly]] | style="text-align:left;"| [[w:Cuautitlán Izcalli|Cuautitlán Izcalli]], [[w:Mexico State|Mexico State]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| 1964 | style="text-align:right;"| 1,000 | style="text-align:left;"| [[w:Ford Mustang Mach-E|Ford Mustang Mach-E]] (2021-) | Truck assembly began in 1970 while car production began in 1980. <br /> Previously made:<br /> [[w:Ford F-Series|Ford F-Series]] (1992-2010) <br> (US: F-250 '97, F-350 '97,<br> F-Super Duty chassis cab '97,<br> F-150 Reg. Cab '00-'02,<br> Mexico: includes F-150 & Lobo)<br />[[w:Ford F-Series (medium-duty truck)#Sixth generation (1980–1999)|Ford F-800]] (US: 1999) <br />[[w:Ford F-Series (medium-duty truck)#Seventh generation (2000–2015)|Ford F-650/F-750]] (2000-2003) <br /> [[w:Ford Fiesta (sixth generation)|Ford Fiesta]] (2011-2019)<br />[[w:Ford Contour|Ford Contour]] (1995-2000)<br />[[w:Mercury Mystique|Mercury Mystique]] (1995-2000)<br />For Mexico only:<br>[[w:Ford Ikon#First generation (1999–2011)|Ford Fiesta Ikon]] (2001-2009)<br />[[w:Ford Topaz|Ford Topaz]]<br />[[w:Mercury Topaz|Ford Ghia]]<br />[[w:Ford LTD (Americas)#Third generation (1979–1982)|Ford LTD]] (Mexico: 1980-1981)<br />[[w:Ford Grand Marquis|Ford Grand Marquis]] (Mexico: 1982-84)<br />[[w:Mercury Sable|Ford Taurus]]<br />[[w:Ford Thunderbird|Ford Thunderbird]]<br />[[w:Mercury Cougar|Ford Cougar]]<br />[[w:Ford Mustang (third generation)|Ford Mustang]] Gen 3 (1979-1984) |- valign="top" | | style="text-align:left;"| [[w:Ford Dagenham|Dagenham Engine]] | style="text-align:left;"| [[w:Dagenham|Dagenham]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| 1931 | style="text-align:right;"| 2,000 | style="text-align:left;"| [[w:Ford EcoBlue engine|Ford EcoBlue engine]] (Panther)<br /> [[w:Ford AJD-V6/PSA DT17#Lion V6|Ford 2.7/3.0 Lion Diesel V6]] |Previously: [[w:Ford I4 DOHC engine|Ford I4 DOHC engine]]<br />[[w:Ford Endura-D engine|Ford Endura-D engine]] (Lynx)<br />[[w:Ford Duratorq engine#ZSD ("Puma")|Ford Puma I4 diesel engine]]<br />[[w:Ford Essex V4 engine|Ford Essex V4 engine]]<br />[[w:Ford Essex V6 engine (UK)|Ford Essex V6 engine (UK)]]<br />[[w:Ford LT engine|Ford LT engine]]<br />[[w:Ford York engine|Ford York engine]]<br />[[w:Ford Dorset/Dover engine|Ford Dorset/Dover engine]] <br /> [[w:Ford AJD-V6/PSA DT17#Lion V8|Ford 3.6L Diesel V8]] <br /> [[w:Ford DLD engine|Ford DLD engine]] (Tiger) |- valign="top" | style="text-align:center;"| W (NA) | style="text-align:left;"| [[w:Ford River Rouge Complex|Ford Rouge Electric Vehicle Center]] | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 2021 | style="text-align:right;"| 2,200 | style="text-align:left;"| | style="text-align:left;"| Part of the River Rouge Complex. <br> Previously: [[w:Ford F-150 Lightning|Ford F-150 Lightning EV]] (2022-2025) |- valign="top" | | style="text-align:left;"| Dearborn Diversified Manufacturing Plant | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1942 | style="text-align:right;"| 773 | style="text-align:left;"| Axles, suspension parts. Frames for F-Series trucks. | style="text-align:left;"| Part of the River Rouge Complex. |- valign="top" | | style="text-align:left;"| [[w:Ford River Rouge Complex|Dearborn Engine]] | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1941 | style="text-align:right;"| 445 | style="text-align:left;"| [[w:Mazda L engine#2.0 L (LF-DE, LF-VE, LF-VD)|Ford Duratec 20]]<br />[[w:Mazda L engine#2.3L (L3-VE, L3-NS, L3-DE)|Ford Duratec 23]]<br />[[w:Mazda L engine#2.5 L (L5-VE)|Ford Duratec 25]] <br />[[w:Ford Modular engine#Carnivore|Ford 5.2L Carnivore V8]] <br>(F-150 Raptor R)<br />[[w:Ford Modular engine#Predator|Ford 5.2L Predator V8]] (Mustang GTD,<br> Dark Horse SC)<br />Engine components | style="text-align:left;"| Part of the River Rouge Complex. Carnivore & Predator engines are produced on a new Niche Engine line at the Dearborn Engine Plant which replaced the Niche Engine line at the now closed Romeo Engine Plant. <br /> Previously: [[w:Ford FE engine|Ford FE engine]]<br />[[w:Ford CVH engine|Ford CVH engine]] |- valign="top" | | style="text-align:left;"| [[w:Ford River Rouge Complex|Dearborn Stamping]] | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1939 | style="text-align:right;"|1,658 | style="text-align:left;"| Body stampings | Part of the River Rouge Complex. |- valign="top" | | style="text-align:left;"| Dearborn Tool & Die | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1938 | style="text-align:right;"| 271 | style="text-align:left;"| Tooling | style="text-align:left;"| Part of the River Rouge Complex. |- valign="top" | style="text-align:center;"| F (NA) | style="text-align:left;"| [[w:Dearborn Truck|Dearborn Truck]] | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 2004 | style="text-align:right;"| 6,131 | style="text-align:left;"| [[w:Ford F-Series (fourteenth generation)|Ford F-150]] (2021-) | style="text-align:left;"| Part of the River Rouge Complex. Located at 3001 Miller Rd. Replaced the nearby Dearborn Assembly Plant for MY2005. Built the 40 millionth Ford <br> F-Series in Jan. 2022, which was an <br> F-150 Tremor.<br />Previously: <br />[[w:Ford F-Series (eleventh generation)|Ford F-Series (eleventh generation)]] (2005-2008 F-150)<br />[[w:Ford F-Series (twelfth generation)|Ford F-Series (twelfth generation)]] (2009-2014 F-150)<br />[[w:Ford F-Series (thirteenth generation)|Ford F-Series (thirteenth generation)]] (2015-2020 F-150)<br />[[w:Lincoln Mark LT|Lincoln Mark LT]] (2006-2008) |- valign="top" | style="text-align:center;"| 0 (NA) | style="text-align:left;"| Detroit Chassis LLC | style="text-align:left;"| [[w:Detroit, Michigan|Detroit, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 2000 | | style="text-align:left;"| Ford F-53 Motorhome Chassis (2000-)<br/>Ford F-59 Commercial Chassis (2000-) | Located at 6501 Lynch Rd. Replaced production at IMMSA in Mexico. Plant owned by Detroit Chassis LLC. Produced under contract for Ford. <br /> Previously: [[w:Think Global#TH!NK Neighbor|Ford TH!NK Neighbor]] |- valign="top" | | style="text-align:left;"| [[w:Essex Engine|Essex Engine]] | style="text-align:left;"| [[w:Windsor, Ontario|Windsor, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| 1981 | style="text-align:right;"| 930 | style="text-align:left;"| [[w:Ford Modular engine#5.0 L Coyote|Ford 5.0L Coyote V8]]<br />Engine components | style="text-align:left;"|Idled in November 2007, reopened February 2010. Previously: <br />[[w:Ford Essex V6 engine (Canadian)|Ford Essex V6 engine (Canadian)]] 3.8/3.9/4.2L <br />[[w:Ford Modular engine|Ford 5.4L 3-valve Modular V8]]<br/>[[w:Ford Modular engine# Boss 302 (Road Runner) variant|Ford 5.0L Road Runner V8]] |- valign="top" | style="text-align:center;"| 5 (NA) | style="text-align:left;"| [[w:Flat Rock Assembly Plant|Flat Rock Assembly Plant]] | style="text-align:left;"| [[w:Flat Rock, Michigan|Flat Rock, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1987 | style="text-align:right;"| 1,826 | style="text-align:left;"| [[w:Ford Mustang (seventh generation)|Ford Mustang (Gen 7)]] (2024-) | style="text-align:left;"| Built at site of closed Ford Michigan Casting Center (1972-1981) , which cast various parts for Ford including V8 engine blocks and heads for Ford [[w:Ford 335 engine|335]], [[w:Ford 385 engine|385]], & [[w:Ford FE engine|FE/FT series]] engines as well as transmission, axle, & steering gear housings and gear cases. Opened as a Mazda plant (Mazda Motor Manufacturing USA) in 1987. Became AutoAlliance International from 1992 to 2012 after Ford bought 50% of the plant from Mazda. Became Flat Rock Assembly Plant in 2012 when Mazda ended production and Ford took full management control of the plant. <br /> Previously: <br />[[w:Ford Mustang (sixth generation)|Ford Mustang (Gen 6)]] (2015-2023)<br /> [[w:Ford Mustang (fifth generation)|Ford Mustang (Gen 5)]] (2005-2014)<br /> [[w:Lincoln Continental#Tenth generation (2017–2020)|Lincoln Continental]] (2017-2020)<br />[[w:Ford Fusion (Americas)|Ford Fusion]] (2014-2016)<br />[[w:Mercury Cougar#Eighth generation (1999–2002)|Mercury Cougar]] (1999-2002)<br />[[w:Ford Probe|Ford Probe]] (1989-1997)<br />[[w:Mazda 6|Mazda 6]] (2003-2013)<br />[[w:Mazda 626|Mazda 626]] (1990-2002)<br />[[w:Mazda MX-6|Mazda MX-6]] (1988-1997) |- valign="top" | style="text-align:center;"| 2 (NA) | style="text-align:left;"| [[w:Ford Lio Ho|Ford Lio Ho Assembly]] | style="text-align:left;"| [[w:Zhongli District|Zhongli District]], [[w:Taoyuan, Taiwan|Taoyuan]] | style="text-align:left;"| [[w:Taiwan|Taiwan]] | style="text-align:center;"| 1973 | style="text-align:right;"| 800 | style="text-align:left;"| [[w:Ford Focus|Ford Focus]]<br /> Ford Focus Active <br /> [[w:Ford Kuga|Ford Kuga]]<br /> [[w:Ford Territory (China)#Second generation (CX743MCA; 2022)|Ford Territory]] | Joint venture 70% owned by Ford and 30% owned by Lio Ho Group. <br /> Previously: [[w:Ford Laser#Ford Tierra|Ford Activa]]<br />[[w:Ford Aztec|Ford Aztec]]<br />[[w:Ford Cortina|Ford Cortina]]<br />[[w:Ford Econovan|Ford Econovan]]<br />[[w:Ford Escape|Ford Escape]]<br />[[w:Ford Escort (Europe)|Ford Escort (Europe)]]<br />[[w:Ford Escort (China)|Ford Escort (Chinese)]]<br />[[w:Ford Festiva|Ford Festiva]]<br />Ford Fiera<br />[[w:Ford Fiesta (sixth generation)|Ford Fiesta]]<br />[[w:Ford Granada (Europe)|Ford Granada]]<br />[[w:Ford Ixion|Ford Ixion]]<br />[[w:Ford i-Max|Ford i-Max]]<br />[[w:Ford Laser|Ford Laser]]<br />[[w:Ford Liata|Ford Liata]]<br />[[w:Ford Mondeo|Ford Mondeo]]<br />[[w:Ford Pronto|Ford Pronto]]<br />[[w:Ford Telstar|Ford Telstar]]<br />[[w:Ford Tierra|Ford Tierra]] <br /> [[w:Mercury Tracer#First generation (1987–1989)|Mercury Tracer]] (Canadian market)<br />[[w:Mazda 3|Mazda 3]]<br />[[w:Mazda Familia|Mazda 323 Protege]]<br />[[w:Mazda Premacy|Mazda Premacy]]<br />[[w:Mazda 5|Mazda 5]]<br />[[w:Mazda E-Series|Mazda E-Series]]<br />[[w:Mazda Tribute|Mazda Tribute]] |- valign="top" | | style="text-align:left;"| [[w:Ford Lio Ho|Ford Lio Ho Engine]] | style="text-align:left;"| [[w:Zhongli District|Zhongli District]], [[w:Taoyuan, Taiwan|Taoyuan]] | style="text-align:left;"| [[w:Taiwan|Taiwan]] | style="text-align:center;"| | style="text-align:right;"| 90 | style="text-align:left;"| [[w:Mazda L engine|Mazda L engine]] (1.8, 2.0, 2.3) | Joint venture 70% owned by Ford and 30% owned by Lio Ho Group. <br /> Previously: <br /> [[w:Ford Zeta engine|Ford Zeta engine]]<br />[[w:Mazda Z engine#Z6/M|Mazda 1.6 ZM-DE I4]]<br />[[w:Mazda F engine|Mazda F engine]] (1.8, 2.0)<br /> [[w:Suzuki F engine#Four-cylinder|Suzuki 1.0 I4]] (for Ford Pronto) |- valign="top" | style="text-align:center;"| J (EU) [when following M] (for Ford),<br> S (for VW) | style="text-align:left;"| [[w:Ford Motor Company of Southern Africa|Ford Motor Company of Southern Africa]] Silverton Assembly Plant | style="text-align:left;"| [[w:Silverton, Pretoria|Silverton]] | style="text-align:left;"| [[w:South Africa|South Africa]] | style="text-align:center;"| 1967 | style="text-align:right;"| 4,650 | style="text-align:left;"| [[w:Ford Ranger (international)|Ford Ranger]]<br /> [[w:Ford Everest|Ford Everest]]<br />[[w:Volkswagen Amarok#Second generation (2022)|VW Amarok]] | Silverton plant was originally a Chrysler of South Africa plant from 1961 to 1976. In 1976, it merged with a unit of mining company Anglo-American to form Sigma Motor Corp., which Chrysler retained 25% ownership of. Chrysler sold its 25% stake to Anglo-American in 1983. Sigma was restructured into Amcar Motor Holdings Ltd. in 1984. In 1985, Amcar merged with Ford South Africa to form SAMCOR (South African Motor Corporation). Sigma had already assembled Mazda & Mitsubishi vehicles previously and SAMCOR continued to do so. In 1988, Ford divested from South Africa & sold its stake in SAMCOR. SAMCOR continued to build Ford vehicles as well as Mazdas & Mitsubishis. In 1994, Ford bought a 45% stake in SAMCOR and it bought the remaining 55% in 1998. It then renamed the company Ford Motor Company of Southern Africa in 2000. <br /> Previously: [[w:Ford Laser#South Africa|Ford Laser]]<br />[[w:Ford Laser#South Africa|Ford Meteor]]<br />[[w:Ford Tonic|Ford Tonic]]<br />[[w:Ford_Laser#South_Africa|Ford Tracer]]<br />[[w:Mazda 323|Mazda 323]]<br />[[w:Mazda Familia|Mazda Etude]]<br />[[w:Mazda Familia#Export markets 2|Mazda Sting]]<br />[[w:Sao Penza|Sao Penza]]<br />[[w:Mazda Familia#Lantis/Astina/323F|Mazda 323 Astina]]<br />[[w:Ford Focus (second generation, Europe)|Ford Focus]]<br />[[w:Mazda 3|Mazda 3]]<br />[[w:Ford Bantam|Ford Bantam]]<br />[[w:Mazda Rustler|Mazda Rustler]]<br />[[w:Mitsubishi Delica#Second generation (1979)|Ford Husky]]<br />[[w:Mitsubishi Delica#Second generation (1979)|Mitsubishi Starwagon]]<br />[[w:Ford Fiesta (fourth generation)|Ford Fiesta]]<br />[[w:Ford Fiesta (fourth generation)#Mazda 121|Mazda 121 Soho]]<br />[[w:Ford Ikon#First generation (1999–2011)|Ford Ikon]]<br />[[w:Ford Sierra|Ford Sierra]]<br />[[w:Ford Sapphire|Ford Sapphire]]<br />[[w:Ford Telstar|Ford Telstar]]<br />[[w:Mazda 626|Mazda 626]]<br />[[w:Mazda MX-6|Mazda MX-6]]<br />[[w:Ford Mondeo (first generation)|Ford Mondeo]]<br />[[w:Ford Courier#Third generation (1985–1998)|Ford Courier]]<br />[[w:Mazda B-Series|Mazda B-Series]]<br />[[w:Mazda Drifter|Mazda Drifter]]<br />[[w:Mazda BT-50|Mazda BT-50]] Gen 1 & Gen 2<br />[[w:Ford Spectron|Ford Spectron]]<br />[[w:Mazda Bongo|Mazda Marathon]]<br /> [[w:Mitsubishi Fuso Canter#Fourth generation|Mitsubishi Canter]]<br />[[w:Land Rover Defender|Land Rover Defender]] <br/>[[w:Volvo S40|Volvo S40/V40]] |- valign="top" | | style="text-align:left;"| [[w:Ford Motor Company of Southern Africa|Ford Motor Company of Southern Africa]] Struandale Engine Plant | style="text-align:left;"| Struandale, [[w:Port Elizabeth|Port Elizabeth]] | style="text-align:left;"| [[w:South Africa|South Africa]] | style="text-align:center;"| 1964 | style="text-align:right;"| 850 | style="text-align:left;"| [[w:Ford EcoBlue engine|Ford 2.0L Panther EcoBlue single-turbodiesel & twin-turbodiesel I4]]<br />[[w:Ford Power Stroke engine#3.0 Power Stroke|Ford 3.0 Lion turbodiesel V6]]<br />[[w:Ford Duratorq engine#ZSD ("Puma")|Ford 2.2/3.2 Puma diesel engine]]<br />Machining of engine components | Previously: [[w:Ford Kent engine#Crossflow|Ford Kent Crossflow I4 engine]]<br />[[w:Ford CVH engine#CVH-PTE|Ford 1.4L CVH-PTE engine]]<br />[[w:Ford Zeta engine|Ford 1.6L EFI Zetec I4]]<br /> [[w:Ford Sigma engine#Zetec RoCam|Ford Zetec RoCam engine]]<br />[[w:Ford Essex V6 engine (UK)|Ford Essex V6 engine (UK)]] |- valign="top" | style="text-align:center;"|T (EU) [when following T],<br> T (NA) ('10-'13 Transit Connect) | style="text-align:left;"| [[w:Otosan|Ford Otosan Assembly - Gölcük]] | style="text-align:left;"| [[w:Gölcük, Kocaeli|Gölcük, Kocaeli]] | style="text-align:left;"| [[w:Turkey|Turkey]] | style="text-align:center;"| 2001 | style="text-align:right;"| 7,530 | style="text-align:left;"| [[w:Ford Transit#Fourth generation (2014)|Ford Transit]] (Gen 4) | style="text-align:left;"| Ford Otosan is 41% owned by Ford, 41% owned by Koç Holding and 18% publicly traded in Turkey. Transit Connect started shipping to the US in fall of 2009. <br /> Previously: <br />[[w:Ford Transit#Third generation (2000)|Ford Transit]] (Gen 3)<br /> [[w:Ford Transit Connect#First generation (2002)|Ford Transit Connect]] (Gen 1)<br />[[w:Ford Transit Connect#First generation (2002)|Ford Tourneo Connect]] (Gen 1)<br /> [[w:Ford Transit Custom# First generation (2012)|Ford Transit Custom]] (Gen 1)<br />[[w:Ford Transit Custom# First generation (2012)|Ford Tourneo Custom]] (Gen 1) |- valign="top" | style="text-align:center;"| A (EU) [when following T] (for Ford),<br> K (for VW) | style="text-align:left;"| [[w:Otosan|Ford Otosan Assembly - Yeniköy]] | style="text-align:left;"| [[w:tr:Yeniköy Merkez, Başiskele|Yeniköy Merkez]], [[w:Başiskele|Başiskele]], [[w:Kocaeli Province|Kocaeli]] | style="text-align:left;"| [[w:Turkey|Turkey]] | style="text-align:center;"| 2014 | style="text-align:right;"| | style="text-align:left;"| [[w:Ford Transit Custom#Second generation (2023)|Ford Transit Custom]] (Gen 2)<br /> [[w:Ford Transit Custom#Second generation (2023)|Ford Tourneo Custom]] (Gen 2) <br /> [[w:Volkswagen Transporter (T7)|Volkswagen Transporter/Caravelle (T7)]] | style="text-align:left;"| Ford Otosan is 41% owned by Ford, 41% owned by Koç Holding and 18% publicly traded in Turkey. <br /> Previously: [[w:Ford Transit Courier#First generation (2014)| Ford Transit Courier]] (Gen 1) <br /> [[w:Ford Transit Courier#First generation (2014)|Ford Tourneo Courier]] (Gen 1) |- valign="top" |style="text-align:center;"| P (EU) [when following T] | style="text-align:left;"| [[w:Otosan|Ford Otosan Truck Assembly & Engine Plant]] | style="text-align:left;"| [[w:Inonu, Eskisehir|Inonu, Eskisehir]] | style="text-align:left;"| [[w:Turkey|Turkey]] | style="text-align:center;"| 1982 | style="text-align:right;"| 350 | style="text-align:left;"| [[w:Ford EcoBlue engine|Ford 2.0L "Panther" EcoBlue diesel I4]]<br /> [[w:Ford Cargo|Ford F-Line]] truck<br />[[w:Ford F-MAX|Ford F-MAX]]<br />[[w:Ford Ecotorq engine|Ford 9.0L/12.7L Ecotorq diesel I6]]<br />Ford EcoTorq transmission<br /> Rear Axle for Ford Transit | Ford Otosan is 41% owned by Ford, 41% owned by Koç Holding and 18% publicly traded in Turkey. <br /> Previously: <br /> [[w:Ford D series|Ford D series]]<br /> [[w:Ford Cargo|Ford Cargo]] truck<br />[[w:Ford Zeta engine|Ford 1.6 Zetec I4]]<br />[[w:Ford York engine|Ford 2.5 DI diesel I4]]<br />[[w:Ford Duratorq engine#ZSD ("Puma")|Ford Puma I4/I5 diesel engine]]<br />[[w:Ford Dorset/Dover engine|Ford 6.0/6.2 diesel inline-6]]<br />[[w:Ford Ecotorq engine|7.3L Ecotorq diesel I6]]<br />[[w:Ford MT75 transmission|Ford MT75 transmission]] for Transit |- valign="top" | style="text-align:center;"| R (EU) [when following E] | style="text-align:left;"| [[w:Ford Romania|Ford Romania/<br>Ford Otosan Romania]]<br> Craiova Assembly & Engine Plant | style="text-align:left;"| [[w:Craiova|Craiova]] | style="text-align:left;"| [[w:Romania|Romania]] | style="text-align:center;"| 2009 | style="text-align:right;"| 4,000 | style="text-align:left;"| [[w:Ford Puma (crossover)|Ford Puma]] (2020-)<br />[[w:Ford Puma Gen-E|Ford Puma Gen-E]] EV (2025-)<br />[[w:Ford Transit Courier#Second generation (2023)|Ford Transit Courier/Tourneo Courier]] (Gen 2) (2023-)<br /> [[w:Ford EcoBoost engine#Inline three-cylinder|Ford 1.0 Fox EcoBoost I3]] | Plant was originally Oltcit, a 64/36 joint venture between Romania and Citroen established in 1976. In 1991, Citroen withdrew and the car brand became Oltena while the company became Automobile Craiova. In 1994, it established a 49/51 joint venture with Daewoo called Rodae Automobile which was renamed Daewoo Automobile Romania in 1997. Engine and transmission plants were added in 1997. Following Daewoo’s collapse in 2000, the Romanian government bought out Daewoo’s 51% stake in 2006. Ford bought a 72.4% stake in Automobile Craiova in 2008, which was renamed Ford Romania. Ford increased its stake to 95.63% in 2009. In 2022, Ford transferred ownership of the Craiova plant to its Turkish joint venture Ford Otosan. <br /> Previously:<br> [[w:Ford Transit Connect#First generation (2002)|Ford Transit Connect]] (Gen 1) (2010-2012)<br /> [[w:Ford B-Max|Ford B-Max]] (2012-2017) <br /> [[w:Ford EcoSport#Second generation (B515; 2012)|Ford EcoSport]] (2018-2022) <br /> [[w:Ford EcoBoost engine#Inline four-cylinder|Ford 1.5 Sigma EcoBoost I4]] |- valign="top" | | style="text-align:left;"| [[w:Ford Thailand Manufacturing|Ford Thailand Manufacturing]] | style="text-align:left;"| [[w:Pluak Daeng district|Pluak Daeng district]], [[w:Rayong|Rayong]] | style="text-align:left;"| [[w:Thailand|Thailand]] | style="text-align:center;"| 2012 | style="text-align:right;"| 3,000 | style="text-align:left;"| [[w:Ford Ranger (T6)|Ford Ranger (T6)]] | Previously: [[w:Ford EcoSport#Second generation (B515; 2012)|Ford EcoSport]]<br /> [[w:Ford Focus (third generation)|Ford Focus]]<br /> [[w:Ford Fiesta (sixth generation)|Ford Fiesta]] |- valign="top" | | style="text-align:left;"| [[w:Ford Vietnam|Hai Duong Assembly, Ford Vietnam, Ltd.]] | style="text-align:left;"| [[w:Hai Duong|Hai Duong]] | style="text-align:left;"| [[w:Vietnam|Vietnam]] | style="text-align:center;"| 1995 | style="text-align:right;"| 1,250 | style="text-align:left;"| [[w:Ford Transit#Transit T8 (2023-present)|Ford Transit]] (Gen 4-based)<br /> [[w:Ford Ranger (T6)|Ford Ranger (T6)]]<br /> [[w:Ford Territory (China)#Second generation (CX743MCA; 2022)|Ford Territory]] | Joint venture 75% owned by Ford and 25% owned by Song Cong Diesel Company. <br />Previously: [[w:Ford Laser|Ford Laser]]<br />[[w:Ford Econovan|Ford Econovan]]<br /> [[w:Ford Tourneo|Ford Tourneo]]<br /> [[w:Ford Ranger (international)|Ford Ranger]]<br /> [[w:Ford Escape|Ford Escape]]<br /> [[w:Ford Mondeo|Ford Mondeo]]<br /> [[w:Ford Fiesta (sixth generation)|Ford Fiesta]]<br />[[w:Ford Focus|Ford Focus]]<br />[[w:Ford EcoSport#Second generation (B515; 2012)|Ford Ecosport]]<br />[[w:Ford Everest|Ford Everest]] <br /> [[w:Ford Transit#2021 Ford Transit Pro|Ford Transit]] (Gen 3-based) |- valign="top" | | style="text-align:left;"| [[w:Halewood Transmission|Halewood Transmission]] | style="text-align:left;"| [[w:Halewood|Halewood]], [[w:Merseyside|Merseyside]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| 1964 | style="text-align:right;"| 450 | style="text-align:left;"| [[w:Ford MT75 transmission|Ford MT75 transmission]]<br />Ford MT82 transmission<br /> [[w:Ford BC-series transmission#iB5 Version|Ford IB5 transmission]]<br />Ford iB6 transmission<br />PTO Transmissions | Formerly part of the [[w:Getrag Ford Transmission|Getrag Ford Transmission]] joint venture. Returned to 100% Ford ownership in 2021. |- valign="top" | style="text-align:center;"| R (NA) | style="text-align:left;"| [[w:Hermosillo Stamping and Assembly|Hermosillo Stamping and Assembly]] | style="text-align:left;"| [[w:Hermosillo|Hermosillo]], [[w:Sonora|Sonora]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| 1986 | style="text-align:right;"| 2,870 | style="text-align:left;"| [[w:Ford Bronco Sport|Ford Bronco Sport]] (2021-)<br />[[w:Ford Maverick (2022)|Ford Maverick pickup]] (2022-) | Hermosillo produced its 7 millionth vehicle, a blue Ford Bronco Sport, in June 2024.<br /> Previously: [[w:Ford Fusion (Americas)|Ford Fusion]] (2006-2020)<br />[[w:Mercury Milan|Mercury Milan]] (2006-2011)<br />[[w:Lincoln MKZ|Lincoln Zephyr]] (2006)<br />[[w:Lincoln MKZ|Lincoln MKZ]] (2007-2020)<br />[[w:Ford Focus (North America)|Ford Focus]] (hatchback) (2000-2005)<br />[[w:Ford Escort (North America)|Ford Escort]] (1991-2002)<br />[[w:Ford Escort (North America)#ZX2|Ford Escort ZX2]] (1998-2003)<br />[[w:Mercury Tracer|Mercury Tracer]] (1988-1999) |- valign="top" | | style="text-align:left;"| Irapuato Electric Powertrain Center (formerly Irapuato Transmission Plant) | style="text-align:left;"| [[w:Irapuato|Irapuato]], [[w:Guanajuato|Guanajuato]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| | style="text-align:right;"| 700 | style="text-align:left;"| E-motor and <br> E-transaxle (1T50LP) <br> for Mustang Mach-E | Formerly Getrag Americas, a joint venture between [[w:Getrag|Getrag]] and the [[w:Getrag Ford Transmission|Getrag Ford Transmission]] joint venture. Became 100% owned by Ford in 2016 and launched conventional automatic transmission production in July 2017. Previously built the [[w:Ford PowerShift transmission|Ford PowerShift transmission]] (6DCT250 DPS6) <br /> [[w:Ford 6F transmission|Ford 6F15 transmission]]<br />[[w:Ford 8F transmission|Ford 8F24 transmission]]. |- valign="top" | | style="text-align:left;"| [[w:Jiangling Motors|Jiangling Motors Corp., Ltd.]] (JMC Fushan Assembly Plant) | style="text-align:left;"| Xiaolan Economic Development Zone, [[w:Nanchang|Nanchang]], [[w:Jiangxi|Jiangxi]] | style="text-align:left;"| China | style="text-align:center;"| | style="text-align:right;"| 1,725 | style="text-align:left;"| [[w:Ford Equator|Ford Equator]]<br />[[w:Ford Equator Sport|Ford Equator Sport]]<br />[[w:Ford Territory (China)|Ford Territory]] <br> [[w:Ford Bronco New Energy|Ford Bronco New Energy EV/EREV]] <br /> JMC models | style="text-align:left;"| Partnership with [[w:Jiangling Motors Corporation Group#Jiangling Motor Holding and Jiangling Investment|Jiangling Investment Co., Ltd.]] Jiangling Motors is 32% owned by Ford. <br /> |- valign="top" | | style="text-align:left;"| [[w:Jiangling Motors|Jiangling Motors Corp., Ltd.]] (JMC Xiaolan Assembly Plant) | style="text-align:left;"| Xiaolan Economic Development Zone, [[w:Nanchang|Nanchang]], [[w:Jiangxi|Jiangxi]] | style="text-align:left;"| China | style="text-align:center;"| 1997 | style="text-align:right;"| 1,660 | style="text-align:left;"| [[w:Ford Transit#Transit T8 (2023-present)|Ford Transit T8]]<br />[[w:Ford Transit Custom|Ford Transit]]<br />[[w:Ford Transit Custom|Ford Tourneo]] <br />[[w:Ford Ranger (T6)#Second generation (P703/RA; 2022)|Ford Ranger (T6)]]<br /> [[w:Ford Bronco#Sixth generation (U725; 2021)|Ford Bronco (U725)]] <br /> JMC models | style="text-align:left;"| Partnership with [[w:Jiangling Motors Corporation Group#Jiangling Motor Holding and Jiangling Investment|Jiangling Investment Co., Ltd.]] Jiangling Motors is 32% owned by Ford. <br /> Previously: <br />[[w:Ford Transit#Chinese production|Ford Transit & Transit Classic]] <br /> [[w:Ford Transit#2021 Ford Transit Pro|Ford Transit Pro]]<br />[[w:Ford Everest#Second generation (U375/UA; 2015)|Ford Everest]] |- valign="top" | | style="text-align:left;"| [[w:Jiangling Motors|Jiangling Motors Corp., Ltd.]] (JMC Xiaolan Engine Plant) | style="text-align:left;"| Xiaolan Economic Development Zone, [[w:Nanchang|Nanchang]], [[w:Jiangxi|Jiangxi]] | style="text-align:left;"| China | style="text-align:center;"| 2015 | style="text-align:right;"| | style="text-align:left;"| [[w:Ford EcoBoost engine#2.0 L (2010–2015)|Ford 2.0 L EcoBoost I4]]<br />JMC 1.5/1.8 GTDi engines<br /> | style="text-align:left;"| Partnership with [[w:Jiangling Motors Corporation Group#Jiangling Motor Holding and Jiangling Investment|Jiangling Investment Co., Ltd.]] Jiangling Motors is 32% owned by Ford. |- valign="top" | style="text-align:center;"| K (NA) | style="text-align:left;"| [[W:Kansas City Assembly|Kansas City Assembly]] | style="text-align:left;"| [[W:Claycomo, Missouri|Claycomo, Missouri]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1951 <br><br> 1957 (Vehicle production) | style="text-align:right;"| 9,468 | style="text-align:left;"| [[w:Ford F-Series (fourteenth generation)|Ford F-150]] (2021-)<br /> [[w:Ford Transit#Fourth generation (2014)|Ford Transit]] (2015-) | style="text-align:left;"| Original location at 1025 Winchester Ave. was first Ford factory in the USA built outside the Detroit area, lasted from 1912–1956. Replaced by Claycomo plant at 8121 US 69, which began to produce civilian vehicles on January 7, 1957 beginning with the Ford F-100 pickup. The Claycomo plant only produced for the military (including wings for B-46 bombers) from when it opened in 1951-1956, when it converted to civilian production.<br />Previously:<br /> [[w:Ford F-Series (third generation)|Ford F-Series (third generation)]]<br> (1957-1960)<br />[[w:Ford F-Series (fourth generation)|Ford F-Series (fourth generation)]]<br> (1961-1966)<br />[[w:Ford F-Series (fifth generation)|Ford F-Series (fifth generation)]]<br> (1967-1972)<br />[[w:Ford F-Series (sixth generation)|Ford F-Series (sixth generation)]]<br> (1973-1979)<br />[[w:Ford F-Series (seventh generation)|Ford F-Series (seventh generation)]] (1980-1986)<br />[[w:Ford F-Series (eighth generation)|Ford F-Series (eighth generation)]]<br> (1987-1991)<br />[[w:Ford F-Series (ninth generation)|Ford F-Series (ninth generation)]]<br> (1992-1996)<br />[[w:Ford F-Series (tenth generation)|Ford F-Series (tenth generation)]] [PN96]<br> (1997-2003 F-150, 1997-1999 F-250)<br />[[w:Ford F-Series (eleventh generation)|Ford F-Series (eleventh generation)]] (2004-2008 F-150)<br />[[w:Ford F-Series (twelfth generation)|Ford F-Series (twelfth generation)]] (2009-2014 F-150)<br />[[w:Ford F-Series (thirteenth generation)|Ford F-Series (thirteenth generation)]] (2015-2020 F-150)<br />[[w:Ford Galaxie|Ford Galaxie]] (1959) <br />[[w:Ford Falcon (North America)|Ford Falcon (compact)]] (1960-1962, 1964, 1966-1970)<br />[[w:Mercury Comet#First generation (1960–1963)|Comet]] (1960-1961)<br /> [[w:Mercury Comet|Mercury Comet]] (1962)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane]] (1962-1969)<br />[[w:Ford Torino|Ford Torino]] (1968-1969)<br />[[w:Ford Ranchero|Ford Ranchero]] (1957-1962, 1966-1969)<br /> [[w:Mercury Meteor#Intermediate (1962–1963)|Mercury Meteor]] (1962-1963)<br />[[w:Ford Maverick (1970–1977)|Ford Maverick]] (1970-1977)<br />[[w:Mercury Comet#Fifth generation (1971–1977)|Mercury Comet]] (1971-1977)<br />[[w:Ford Fairmont|Ford Fairmont]] (1978-1983)<br />[[w:Mercury Zephyr|Mercury Zephyr]] (1978-1983)<br />[[w:Ford Tempo|Ford Tempo]] (1984-1994)<br />[[w:Mercury Topaz|Mercury Topaz]] (1984-1994)<br />[[w:Ford Contour|Ford Contour]] (1995-2000)<br />[[w:Mercury Mystique|Mercury Mystique]] (1995-2000)<br />[[w:Ford Escape|Ford Escape]] (2001-2012)<br />[[w:Mercury Mariner|Mercury Mariner]] (2005-2011)<br />[[w:Mazda Tribute|Mazda Tribute]] (2001-2011)<br />[[w:Lincoln Blackwood|Lincoln Blackwood]] (2002) |- valign="top" | style="text-align:center;"| E (NA) for pickups & SUVs<br /> or <br /> V (NA) for med. & heavy trucks & bus chassis | style="text-align:left;"| [[w:Kentucky Truck Assembly|Kentucky Truck Assembly]] | style="text-align:left;"| [[w:Louisville, Kentucky|Louisville, Kentucky]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1969 | style="text-align:right;"| 9,251 | style="text-align:left;"| VIN code E:<br> [[w:Ford Super Duty|Ford Super Duty]] (1999-)<br /> [[w:Ford Expedition|Ford Expedition]] (2009-) <br /> [[w:Lincoln Navigator|Lincoln Navigator]] (2009-) | Located at 3001 Chamberlain Lane. <br /> Previously:<br> VIN code V:<br> [[w:Ford B series|Ford B series]] (1970-1998)<br />[[w:Ford C series|Ford C series]] (1970-1990)<br />Ford W series<br />Ford CL series<br />[[w:Ford Cargo|Ford Cargo]] (1991-1997)<br />[[w:Ford L series|Ford L series/Louisville/Aeromax]]<br> (1970-1998) <br /> [[w:Ford F-Series (medium-duty truck)#Fifth generation (1967–1979)|Ford F-Series (medium-duty truck)]] (1970–1979) <br /> [[w:Ford F-Series (medium-duty truck)#Sixth generation (1980–1999)|Ford F-Series (medium-duty truck)]] (1980–1998)<br />VIN code E:<br> [[w:Ford F-Series (ninth generation)|Ford F-Series (ninth generation)]] - <br> (F-250: 1995-1997/F-350: 1994-1997/<br> F-Super Duty: 1994-1997)<br />[[w:Ford Excursion|Ford Excursion]] (2000-2005) |- valign="top" | | style="text-align:left;"| [[w:Lima Engine|Lima Engine]] | style="text-align:left;"| [[w:Lima, Ohio|Lima, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1957 | style="text-align:right;"| 1,457 | style="text-align:left;"| [[w:Ford EcoBoost engine#2.7 L Nano (first generation)|Ford 2.7/3.0 Nano EcoBoost V6]]<br />[[w:Ford Cyclone engine|Ford 3.3 Cyclone V6]]<br />[[w:Ford Cyclone engine|Ford 3.5/3.7 Cyclone V6 (for FWD vehicles)]] | Previously: [[w:Ford MEL engine|Ford MEL engine]]<br />[[w:Ford 385 engine|Ford 385 engine]]<br />[[w:Ford straight-six engine#Third generation|Ford Thriftpower (Falcon) Six]]<br />[[w:Ford Pinto engine#Lima OHC (LL)|Ford Lima/Pinto I4]]<br />[[w:Ford HSC engine|Ford HSC I4]]<br />[[w:Ford Vulcan engine|Ford Vulcan V6]]<br /> [[w:Jaguar AJ-V8 engine#3.9 L|Jaguar AJ30/AJ35 - Ford 3.9L V8]] |- valign="top" | | style="text-align:left;"| [[w:Livonia Transmission|Livonia Transmission]] | style="text-align:left;"| [[w:Livonia, Michigan|Livonia, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1952 | style="text-align:right;"| 3,075 | style="text-align:left;"| [[w:Ford 6R transmission|Ford 6R transmission]]<br />[[w:Ford-GM 10-speed automatic transmission|Ford 10R60/10R80 transmission]]<br />[[w:Ford 8F transmission|Ford 8F35/8F40 transmission]] <br /> Service components | |- valign="top" | style="text-align:center;"| U (NA) | style="text-align:left;"| [[w:Louisville Assembly Plant|Louisville Assembly Plant]] | style="text-align:left;"| [[w:Louisville, Kentucky|Louisville, Kentucky]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1955 | style="text-align:right;"| 3,483 | style="text-align:left;"| [[w:Ford Escape|Ford Escape]] (2013-2026)<br />[[w:Lincoln Corsair|Lincoln Corsair]] (2020-2026) <br> [[w:Ford Fathom|Ford Fathom]] (2028-) | Original location opened in 1913. Ford then moved in 1916 and again in 1925. Current location at 2000 Fern Valley Rd. first opened on April 18, 1955. It produced both cars and trucks. The majority of Edsels were produced here.[https://www.edsel.com/registry/index.html] Passenger car production ended on June 12, 1981 when the last Ford LTD was produced at Louisville.[https://www.google.com/books/edition/The_Encyclopedia_of_Louisville/pXbYITw4ZesC?hl=en&gbpv=1&bsq=ford%20motor] The plant was then converted to build the Ranger pickup and the related Bronco II SUV. Ranger production began on January 18, 1982. The plant was upgraded and expanded to build Explorer, which launched in 1990 and replaced the Bronco II. Explorer was joined by the Mercury Mountaineer in April 1996. Ranger production ended in April 1999 but the Explorer Sport Trac pickup was built here beginning in 2000. The plant was idled in December 2010 and then reopened on April 4, 2012 to build the Ford Escape crossover which was followed by the Escape-based Lincoln MKC, later replaced by the Corsair. Escape and Corsair production ended in mid-December 2025 and the factory was then idled. <br />Previously: [[w:Lincoln MKC|Lincoln MKC]] (2015-2019)<br />[[w:Ford Explorer|Ford Explorer]] (1991-2010)<br />[[w:Mercury Mountaineer|Mercury Mountaineer]] (1997-2010)<br />[[w:Mazda Navajo|Mazda Navajo]] (1991-1994)<br />[[w:Ford Explorer#3-door / Explorer Sport|Ford Explorer Sport]] (2001-2003)<br />[[w:Ford Explorer Sport Trac|Ford Explorer Sport Trac]] (2001-2010)<br />[[w:Ford Bronco II|Ford Bronco II]] (1984-1990)<br />[[w:Ford Ranger (Americas)|Ford Ranger]] (1983-1999)<br /> [[w:Ford F-Series (medium-duty truck)#Third generation (1957–1960)|Ford F-Series (medium-duty truck)]] (1958)<br /> [[w:Ford F-Series (medium-duty truck)#Fifth generation (1967–1979)|Ford F-Series (medium-duty truck)]] (1967-1969)<br />[[w:Ford F-Series|Ford F-Series]] (1955-1957, 1973-1982)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1966, 1970-1981)<br />[[w:Edsel Pacer|Edsel Pacer]] (1958)<br />[[w:Edsel Ranger|Edsel Ranger]] (1958-1960)<br />[[w:Edsel Corsair#1959|Edsel Corsair]] (1959)<br />[[w:Edsel Roundup|Edsel Roundup]] (1958)<br />[[w:Edsel Villager|Edsel Villager]] (1958-1960)<br />[[w:Edsel Bermuda|Edsel Bermuda]] (1958)<br />[[w:Ford Custom|Ford Custom]] (1970)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane]] (1955-1958, 1960-1961)<br />[[w:Ford Ranchero|Ford Ranchero]] (1957)<br />[[w:Ford Galaxie|Ford Galaxie]] (1959-1971)<br />[[w:Ford 300|Ford 300]] (1963)<br />Heavy trucks were produced on a separate line from early 1958 until Kentucky Truck Plant opened in 1969. Includes [[w:Ford B series|Ford B series]] bus, [[w:Ford C series|Ford C series]], [[w:Ford H series|Ford H series]], Ford W series, and [[w:Ford L series#Background|Ford N-Series]] (1963-69). In addition to cars, F-Series light trucks were built from 1973-1981. Louisville Assembly was then converted to build the Ranger compact pickup, production of which began on January 18, 1982. |- valign="top" | style="text-align:center;"| L (NA) (1964-) | style="text-align:left;"| [[w:Michigan Assembly Plant|Michigan Assembly Plant]] <br> Previously: Michigan Truck Plant | style="text-align:left;"| [[w:Wayne, Michigan|Wayne, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1957 | style="text-align:right;"| 5,126 | style="text-align:Left;"| [[w:Ford Ranger (T6)#Second generation (P703/RA; 2022)|Ford Ranger (T6-P703)]] (2024-)<br /> [[w:Ford Bronco#Sixth generation (U725; 2021)|Ford Bronco (U725)]] (2021-) | style="text-align:left;"| Located at 38303 Michigan Ave. Opened in 1957 to build station wagons as the Michigan Station Wagon Plant. Due to a sales slump, the plant was idled in 1959 until 1964. The plant was reopened and converted to build <br> F-Series trucks in 1964, becoming the Michigan Truck Plant. Was original production location for the [[w:Ford Bronco|Ford Bronco]] in 1966. In 1997, F-Series production ended so the plant could focus on the Expedition and Navigator full-size SUVs. In December 2008, Expedition and Navigator production ended and would move to the Kentucky Truck plant during 2009. In 2011, the Michigan Truck Plant was combined with the Wayne Stamping & Assembly Plant, which were then renamed the [[w:Michigan Assembly Plant|Michigan Assembly Plant]]. The plant was converted to build small cars, beginning with the 2012 Focus, followed by the 2013 C-Max. Car production ended in May 2018 and the plant was converted back to building trucks, beginning with the 2019 Ranger, followed by the 2021 Bronco.<br> Previously:<br />[[w:Ford Ranger (T6)#North American version (2019–2023)|Ford Ranger (T6-P375)]] (2019-2023)<br />[[w:Ford Focus (North America)|Ford Focus]] (2012-2018)<br />[[w:Ford C-Max#Second generation (2011)|Ford C-Max]] (2013-2018)<br /> [[w:Ford Bronco|Ford Bronco]] (1966-1996)<br />[[w:Ford Expedition|Ford Expedition]] (1997-2009)<br />[[w:Lincoln Navigator|Lincoln Navigator]] (1998-2009)<br />[[w:Ford F-Series|Ford F-Series]] (1964-1997)<br />[[w:Ford F-Series (ninth generation)#SVT Lightning|Ford F-150 Lightning]] (1993-1995)<br /> [[w:Mercury Colony Park|Mercury Colony Park]] |- valign="top" | style="text-align:center;"| H (NA) | style="text-align:left;"| [[w:Multimatic|Multimatic]] <br> Markham Assembly | style="text-align:left;"| [[w:Markham, Ontario|Markham, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| 2016-2022, 2025- (Ford production) | | [[w:Ford Mustang (seventh generation)#Mustang GTD|Ford Mustang GTD]] (2025-) | Plant owned by [[w:Multimatic|Multimatic]] Inc.<br /> Previously:<br />[[w:Ford GT#Second generation (2016–2022)|Ford GT]] (2017-2022) |- valign="top" | style="text-align:center;"| S (NA) (for Pilot Plant),<br> No plant code for Mark II | style="text-align:left;"| [[w:Ford Pilot Plant|New Model Programs Development Center]] | style="text-align:left;"| [[w:Allen Park, Michigan|Allen Park, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1956 | | style="text-align:left;"| Commonly known as "Pilot Plant" | style="text-align:left;"| Located at 17000 Oakwood Boulevard. Originally Allen Park Body & Assembly to build the 1956-1957 [[w:Continental Mark II|Continental Mark II]]. Then was Edsel Division headquarters until 1959. Later became the New Model Programs Development Center, where new models and their manufacturing processes are developed and tested. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:fr:Nordex S.A.|Nordex S.A.]] | style="text-align:left;"| [[w:Montevideo|Montevideo]] | style="text-align:left;"| [[w:Uruguay|Uruguay]] | style="text-align:center;"| 2021 (Ford production) | style="text-align:right;"| | style="text-align:left;"| [[w:Ford Transit#Fourth generation (2014)|Ford Transit]] | style="text-align:left;"| Plant owned by Nordex S.A. Built under contract for Ford for South American markets. |- valign="top" | style="text-align:center;"| K (1954-1959)<br>/<br> No plant codes used (1960-1965)<br>/<br> B (NA) (1966-present) | style="text-align:left;"| [[w:Oakville Assembly|Oakville Assembly]] | style="text-align:left;"| [[w:Oakville, Ontario|Oakville, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| 1953 | style="text-align:right;"| 3,600 | style="text-align:left;"| [[w:Ford Super Duty|Ford Super Duty]] (2027-) | style="text-align:left;"| Truck production moved to the neighboring Ontario Truck plant when it opened in 1965. After Ontario Truck closed in 2004, it was absorbed into the Oakville Assembly plant. Ford Edge production ended in May 2024 and Oakville Assembly was idled.<br /> Previously: <br />[[w:1952 Ford|1952 Ford]]<br />[[w:1955 Ford|1955 Ford]]<br />[[w:1957 Ford|1957 Ford]]<br />[[w:Ford Galaxie|Ford Galaxie]] (1967-1968, 1971)<br />[[w:Meteor (automobile)|Meteor cars]]<br />[[w:Ford Ranchero#First generation (1957–1959)|Meteor Ranchero]] (1957-1958)<br />[[w:Monarch (marque)|Monarch cars]]<br />[[w:Edsel Citation|Edsel Citation]] (1958)<br />[[w:Edsel Corsair|Edsel Corsair]] (1958-1959)<br />[[w:Edsel Pacer|Edsel Pacer]] (1958)<br />[[w:Edsel Ranger|Edsel Ranger]] (1958-1959)<br />[[w:Ford Falcon (North America)|Ford Falcon (compact)]] (1960-1968)<br />[[w:Frontenac (marque)|Frontenac]] (1960)<br />[[w:Mercury Comet|Mercury Comet]]<br />[[w:Ford Falcon (Americas)#Intermediate Falcon (1970½)|Ford Falcon (intermediate)]] (1970 1/2)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane]] (1970)<br />[[w:Ford Torino|Ford Torino]] (1970, 1972-1974)<br />[[w:Ford Custom#Custom and Custom 500 (1964-1981)|Ford Custom/Custom 500]] (1966-1967)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1969-1970, 1972, 1975-1982)<br />[[w:Ford LTD Crown Victoria|Ford LTD Crown Victoria]] (1983)<br />[[w:Mercury Montclair|Mercury Montclair]] (1966-1967)<br />[[w:Mercury Monterey|Mercury Monterey]] (1971)<br />[[w:Mercury Marquis|Mercury Marquis]] (1972, 1976-1977)<br />[[w:Mercury Park Lane|Mercury Park Lane]] (1968)<br />[[w:Ford Escort (North America)|Ford Escort]] (1984-1987)<br />[[w:Mercury Lynx|Mercury Lynx]] (1984-1987)<br />[[w:Ford Tempo|Ford Tempo]] (1984-1994)<br />[[w:Mercury Topaz|Mercury Topaz]] (1984-1994)<br />[[w:Ford Windstar|Ford Windstar]] (1995-2003)<br />[[w:Ford Freestar|Ford Freestar]] (2004-2007)<br />[[w:Ford Windstar#Mercury Monterey|Mercury Monterey]] (2004-2007)<br /> [[w:Ford Flex|Ford Flex]] (2009-2019)<br /> [[w:Lincoln MKT|Lincoln MKT]] (2010-2019)<br />[[w:Ford Edge|Ford Edge]] (2007-2024)<br />[[w:Lincoln MKX|Lincoln MKX]] (2007-2018) <br />[[w:Lincoln Nautilus#First generation (U540; 2019)|Lincoln Nautilus]] (2019-2023)<br />[[w:Ford E-Series|Ford Econoline]] (1961-1981)<br />[[w:Ford E-Series#First generation (1961–1967)|Mercury Econoline]] (1961-1965)<br />[[w:Ford F-Series|Ford F-Series]] (1954-1965)<br />[[w:Mercury M-Series|Mercury M-Series]] (1954-1965) |- valign="top" | style="text-align:center;"| D (NA) | style="text-align:left;"| [[w:Ohio Assembly|Ohio Assembly]] | style="text-align:left;"| [[w:Avon Lake, Ohio|Avon Lake, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1974 | style="text-align:right;"| 1,802 | style="text-align:left;"| [[w:Ford E-Series|Ford E-Series]]<br> (Body assembly: 1975-,<br> Final assembly: 2006-)<br> (Van thru 2014,<br> Cutaway thru present day)<br /> [[w:Ford F-Series (medium duty truck)#Eighth generation (2016–present)|Ford F-650/750]] (2016-)<br /> [[w:Ford Super Duty|Ford Super Duty <br /> F-350/450/550 Chassis Cab]] (2017-)<br /> [[w:Ford Super Duty|Ford Super Duty <br /> F-600 Chassis Cab]] (2020-) | style="text-align:left;"| Was previously a Fruehauf truck trailer plant.<br />Previously: [[w:Ford Escape|Ford Escape]] (2004-2005)<br />[[w:Mercury Mariner|Mercury Mariner]] (2005-2006)<br />[[w:Mercury Villager|Mercury Villager]] (1993-2002)<br />[[w:Nissan Quest|Nissan Quest]] (1993-2002) |- valign="top" | style="text-align:center;"| B (SA) | style="text-align:left;"| [[w:Pacheco Stamping and Assembly|Pacheco Stamping and Assembly]] | style="text-align:left;"| [[w:General Pacheco|General Pacheco]], [[w:Buenos Aires Province|Buenos Aires Province]] | style="text-align:left;"| [[w:Argentina|Argentina]] | style="text-align:center;"| 1961 | style="text-align:right;"| 3,823 | style="text-align:left;"| [[w:Ford Ranger (T6)|Ford Ranger (T6)]] | style="text-align:left;"| Part of [[w:Autolatina|Autolatina]] venture with VW from 1987 to 1996. Ford kept this side of the Pacheco plant when Autolatina dissolved while VW got the other side of the plant, which it still operates. This plant has made both cars and trucks. <br /> Formerly:<br /> [[w:Ford F-Series|Ford F-100/F-150]]<br />[[w:Ford F-Series|Ford F-250/F-350/F-3500/F-400/F-4000/F-500]]<br />[[w:Ford F-Series (medium duty truck)|Ford F-600/F-6000/F-700/F-7000]]<br />[[w:Ford B-Series|Ford B-Series]] (B-600/B-700/B-7000)<br /> [[w:Ford Falcon (Argentina)|Ford Falcon]] (1962 to 1991)<br />[[w:Ford Ranchero#Argentine Ranchero|Ford Ranchero]]<br /> [[w:Ford Taunus TC#Argentina|Ford Taunus]]<br /> [[w:Ford Sierra|Ford Sierra]]<br /> [[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Verona#Second generation (1993–1996)|Ford Verona]]<br />[[w:Ford Orion|Ford Orion]]<br /> [[w:Ford Fairlane (Americas)#Ford Fairlane in Argentina|Ford Fairlane]]<br />[[w:Ford Focus|Ford Focus]]<br />[[w:Ford Cargo|Ford Cargo]]<br />[[w:Ford Ranger (Americas)|Ford Ranger (US design)]]<br />[[w:Ford straight-six engine|Ford 170/187/188/221 inline-6]]<br />[[w:Ford Y-block engine#292|Ford 292 Y-block V8]]<br />[[w:Ford Duratorq engine#ZSD ("Puma")|Ford 2.2/3.2 Puma diesel engine]]<br />[[w:Volkswagen Pointer|VW Pointer]] |- valign="top" | | style="text-align:left;"| Rawsonville Components | style="text-align:left;"| [[w:Ypsilanti, Michigan|Ypsilanti, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1956 | style="text-align:right;"| 788 | style="text-align:left;"| Integrated Air/Fuel Modules<br /> Air Induction Systems<br> Transmission Oil Pumps<br />HEV and PHEV Batteries<br /> Fuel Pumps<br /> Carbon Canisters<br />Ignition Coils<br />Transmission components for Van Dyke Transmission Plant | style="text-align:left;"| Located at 10300 Textile Road. Spun off as part of [[w:Visteon|Visteon]] in 2000. Taken back by Ford in 2005 as part of [[w:Automotive Components Holdings|Automotive Components Holdings]] LLC. Sold to parent Ford in 2009. |- valign="top" | style="text-align:center;"| L (N. American-style VIN position) | style="text-align:left;"| RMA Automotive Cambodia | style="text-align:left;"| [[w:Krakor district|Krakor district]], [[w:Pursat province|Pursat province]] | style="text-align:left;"| [[w:Cambodia|Cambodia]] | style="text-align:center;"| 2022 | style="text-align:right;"| | style="text-align:left;"| [[w:Ford Ranger (T6)|Ford Ranger (T6)]]<br />[[w:Ford Everest|Ford Everest]] <br /> [[w:Ford Territory (China)#Second generation (CX743MCA; 2022)|Ford Territory]] [https://cambodianess.com/article/rma-cambodia-plc-officially-launches-new-ford-production-line-and-ford-sub-assembly-plant-in-pursat-province] | style="text-align:left;"| Plant belongs to RMA Group, Ford's distributor in Cambodia. Builds vehicles under license from Ford. |- valign="top" | style="text-align:center;"| C (EU) [when following G] [includes <br> US-mkt. '78-'80 Ford Fiesta] <br>/<br> 4 (NA) ['16-'18 US-mkt. <br> Focus RS] | style="text-align:left;"| [[w:Saarlouis Body & Assembly|Saarlouis Body & Assembly]] | style="text-align:left;"| [[w:Saarlouis|Saarlouis]], [[w:Saarland|Saarland]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| 1968 (components), 1970 (vehicle prod.) | style="text-align:right;"| 1,276 | style="text-align:left;"| | style="text-align:left;"| Plant was built on the site of the former Roderberg airfield. First opened as a components plant in 1968, supplying other Ford plants and also supplying Renault with body panels. This production ended once Ford Escort production began in 1970. The first Escort body shell was completed on October 20, 1969. Began vehicle production with the Escort on January 16, 1970. Saarlouis shared Escort production with Ford's Halewood, UK plant. About 150,000 Capris were built at Saarlouis from 1971-1975, including the 1 millionth Capri built, an RS2600 completed on August 29, 1973. Fiesta began production at Saarlouis on May 11, 1976 and ended in 1980. Over 700,000 Fiestas were built in Saarlouis. Escort was replaced by the Focus in 1998. Saarlouis produced over 6.5 million Escorts from 1970-1998. Focus began production on August 10, 1998. All Focus RS & RS500 models were made in Saarlouis. In June 2013, the Ford Focus Electric began production in Saarlouis. It was the first fully electric Ford in Europe and the first fully electric car to be produced in Germany. Production ended by April 2017. C-Max production began in Saarlouis in November 2003. C-Max production shifted to Valencia, Spain in 2010 but returned to Saarlouis in 2014. C-Max production ended in June 2019 and was discontinued. About 1.2 million <br> C-Max vehicles were built at Saarlouis. Last Focus ST produced September 26, 2025. Last Focus, a white 5-d hatchback, was produced on November 14, 2025. That was the end of vehicle production at Saarlouis. In 1980, Saarlouis built its 2 millionth vehicle, a Fiesta 3-d. In February 1990, Saarlouis produced its 5 millionth vehicle, a 4th gen. Escort. In July 2005, Saarlouis produced its 10 millionth vehicle, a blue Focus wagon. On November 19, 2007, Saarlouis produced its 11 millionth vehicle, a silver C-Max. On August 26, 2010, the 12 millionth vehicle, a white Focus 5-d hatchback, was produced. On June 16, 2016, the 14 millionth vehicle, a red Focus 5-d hatchback, was produced. In December 2019, Saarlouis produced its 15 millionth vehicle, a red Focus ST 5-d. About 15.6 million vehicles were produced in total at Saarlouis.<br /> Previously: [[w:Ford Escort (Europe)|Ford Escort]] (1970-1998)<br />[[w:Ford Orion|Ford Orion]] (1983-1993)<br />[[w:Ford Capri|Ford Capri]] (1971-1975)<br />[[w:Ford Fiesta|Ford Fiesta]] (1976-1980)<br />[[w:Ford Focus|Ford Focus]] (1998-2025)<br />[[w:Ford C-Max|Ford C-Max]] (2003-2010, 2015-2019)<br />[[w:Ford Kuga#First generation (C394; 2008)|Ford Kuga]] (Gen 1: 2008-2012) |- valign="top" | | [[w:Ford India|Sanand Engine Plant]] | [[w:Sanand|Sanand]], [[w:Gujarat|Gujarat]] | [[w:India|India]] | style="text-align:center;"| 2015 | | [[w:Ford EcoBlue engine|Ford EcoBlue/Panther 2.0L Diesel I4 engine]] | Although the Sanand property including the assembly plant was sold to [[w:Tata Motors|Tata Motors]] in 2022, the engine plant buildings and property were leased back from Tata by Ford India so that the engine plant could continue building diesel engines for export to Thailand, Vietnam, and Argentina. <br /> Previously: [[w:List of Ford engines#1.2 L Dragon|1.2/1.5 Ti-VCT Dragon I3]] |- valign="top" | | style="text-align:left;"| [[w:Sharonville Transmission|Sharonville Transmission]] | style="text-align:left;"| [[w:Sharonville, Ohio|Sharonville, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1958 | style="text-align:right;"| 2,003 | style="text-align:left;"| Ford 6R140 transmission<br /> [[w:Ford-GM 10-speed automatic transmission|Ford 10R80/10R140 transmission]]<br /> Gears for 6R80/140, 6F35/50/55, & 8F57 transmissions <br /> | Located at 3000 E Sharon Rd. <br /> Previously: [[w:Ford 4R70W transmission|Ford 4R70W transmission]]<br /> [[w:Ford C6 transmission#4R100|Ford 4R100 transmission]]<br /> Ford 5R110W transmission<br /> [[w:Ford C3 transmission#5R44E/5R55E/N/S/W|Ford 5R55S transmission]]<br /> [[w:Ford CD4E transmission|Ford CD4E transmission]]<br /> Ford FN transmission |- valign="top" | | tyle="text-align:left;"| Sterling Axle | style="text-align:left;"| [[w:Sterling Heights, Michigan|Sterling Heights, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1956 | style="text-align:right;"| 2,391 | style="text-align:left;"| Front axles<br /> Rear axles<br /> Rear drive units | style="text-align:left;"| Located at 39000 Mound Rd. Spun off as part of [[w:Visteon|Visteon]] in 2000; taken back by Ford in 2005 as part of [[w:Automotive Components Holdings|Automotive Components Holdings]] LLC. |- valign="top" | style="text-align:center;"| P (EU) [when following W] /<br> 1 (NA) ('14-'23 Transit Connect) | style="text-align:left;"| [[w:Ford Valencia Body and Assembly|Ford Valencia Body and Assembly]] | style="text-align:left;"| [[w:Almussafes|Almussafes]], [[w:Province of Valencia|Valencia]] | style="text-align:left;"| [[w:Spain|Spain]] | style="text-align:center;"| 1976 | style="text-align:right;"| 5,400 | style="text-align:left;"| [[w:Ford Kuga#Third generation (C482; 2019)|Ford Kuga]] (Gen 3) | Previously: [[w:Ford C-Max#Second generation (2011)|Ford C-Max]]<br />[[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Fiesta|Ford Fiesta]]<br />[[w:Ford Focus|Ford Focus]]<br />[[w:Ford Galaxy#Third generation (CD390; 2015)|Ford Galaxy]]<br />[[w:Ford Ka#First generation (BE146; 1996)|Ford Ka]]<br />[[w:Ford Kuga#Second generation (C520; 2012)|Ford Kuga]] (Gen 2)<br />[[w:Ford Mondeo (fourth generation)|Ford Mondeo]]<br />[[w:Ford Orion|Ford Orion]] <br /> [[w:Ford S-Max#Second generation (CD539; 2015)|Ford S-Max]] <br /> [[w:Ford Transit Connect#Second generation (2012)|Ford Transit Connect]]<br /> [[w:Ford Transit Connect#Second generation (2012)|Ford Tourneo Connect]]<br />[[w:Mazda2#First generation (DY; 2002)|Mazda 2]] |- valign="top" | | style="text-align:left;"| Valencia Engine | style="text-align:left;"| [[w:Almussafes|Almussafes]], [[w:Province of Valencia|Valencia]] | style="text-align:left;"| [[w:Spain|Spain]] | style="text-align:center;"| 1976 | style="text-align:right;"| 1,000 | style="text-align:left;"| [[w:Mazda L engine|Ford Duratec HE 1.8/2.0]]<br /> [[w:Ford EcoBoost engine#2.0 L (2010–2015)|Ford Ecoboost 2.0L]]<br />[[w:Ford EcoBoost engine#2.3 L|Ford Ecoboost 2.3L]] | Previously: [[w:Ford Kent engine#Valencia|Ford Kent/Valencia engine]] |- valign="top" | | style="text-align:left;"| Van Dyke Electric Powertrain Center | style="text-align:left;"| [[w:Sterling Heights, Michigan|Sterling Heights, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1968 | style="text-align:right;"| 1,444 | style="text-align:left;"| [[w:Ford 6F transmission|Ford 6F35/6F55]]<br /> Ford HF35/HF45 transmission for hybrids & PHEVs<br />Ford 8F57 transmission<br />Electric motors (eMotor) for hybrids & EVs<br />Electric vehicle transmissions | Located at 41111 Van Dyke Ave. Formerly known as Van Dyke Transmission Plant.<br />Originally made suspension parts. Began making transmissions in 1993.<br /> Previously: [[w:Ford AX4N transmission|Ford AX4N transmission]]<br /> Ford FN transmission |- valign="top" | style="text-align:center;"| X (for VW & for Ford) | style="text-align:left;"| Volkswagen Poznań | style="text-align:left;"| [[w:Poznań|Poznań]] | style="text-align:left;"| [[w:Poland|Poland]] | style="text-align:center;"| | | [[w:Ford Transit Connect#Third generation (2021)|Ford Tourneo Connect]]<br />[[w:Ford Transit Connect#Third generation (2021)|Ford Transit Connect]]<br />[[w:Volkswagen Caddy#Fourth generation (Typ SB; 2020)|VW Caddy]]<br /> | Plant owned by [[W:Volkswagen|Volkswagen]]. Production for Ford began in 2022. <br> Previously: [[w:Volkswagen Transporter (T6)|VW Transporter (T6)]] |- valign="top" | | style="text-align:left;"| Windsor Engine Plant | style="text-align:left;"| [[w:Windsor, Ontario|Windsor, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| 1923 | style="text-align:right;"| 1,850 | style="text-align:left;"| [[w:Ford Godzilla engine|Ford 6.8/7.3L Godzilla V8]] | Main Windsor Engine Plant closed but the Windsor Annex Engine Plant, located on the south end of the Windsor Engine Plant property off Seminole Street, is still open. <br> Previously: [[w:Ford small block engine|Ford 255/289/302/351 Windsor V8]]<br />[[w:Ford Modular engine|Ford Modular engine]]: 4.6/5.4L V8 & 6.8L V10 |- valign="top" | | style="text-align:left;"| Woodhaven Forging | style="text-align:left;"| [[w:Woodhaven, Michigan|Woodhaven, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1995 | style="text-align:right;"| 86 | style="text-align:left;"| Crankshaft forgings for 2.7/3.0 Nano EcoBoost V6, 3.5 Cyclone V6, & 3.5 EcoBoost V6 | Located at 24189 Allen Rd. |- valign="top" | | style="text-align:left;"| Woodhaven Stamping | style="text-align:left;"| [[w:Woodhaven, Michigan|Woodhaven, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1964 | style="text-align:right;"| 499 | style="text-align:left;"| Body panels | Located at 20900 West Rd. |} ==Future production facilities== {| class="wikitable sortable" style="font-size:90%" |- ! style="width:120px;"| VIN ! style="width:200px;"| Name ! style="width:100px;"| City/state ! style="width:100px;"| Country ! style="width:120px;" class="unsortable"| Status ! style="width:150px;"| Employees ! style="width:200px;"| Products ! style="width:300px;" class="unsortable"| Comments |- valign="top" | | style="text-align:left;"| [[w:Blue Oval City|Tennessee Truck Plant]] | style="text-align:left;"| [[w:Stanton, Tennessee|Stanton, Tennessee]] | style="text-align:left;"| U.S. | style="background:lightyellow; text-align:center;"| Announced | style="text-align:right;"| ~6,000 | style="text-align:left;"| Ford gas-powered pickup | Was scheduled to start EV production in 2028, following delays. As of December 2025, plant is renamed Tennessee Truck Plant and production of a gas-powered truck is scheduled to start in 2029. Battery manufacturing onsite would have been part of BlueOval SK, a joint venture with SK On, a subsidiary of [[w:SK Innovation|SK Innovation]].<ref name=BlueOval>{{cite news|url=https://www.detroitnews.com/story/business/autos/ford/2021/09/27/ford-four-new-plants-tennessee-kentucky-electric-vehicles/5879885001/|title=Ford, partner to spend $11.4B on four new plants in Tennessee, Kentucky to support EVs|first1=Jordyn|last1=Grzelewski|first2=Riley|last2=Beggin|newspaper=The Detroit News|date=September 27, 2021|accessdate=September 27, 2021}}</ref> However, as of December 2025, the venture is being dissolved. Ford will keep the Kentucky battery plants while SK On will keep the Tennessee battery plant. |- valign="top" | | style="text-align:left;"| BlueOval SK Battery Park | style="text-align:left;"| [[w:Glendale, Kentucky|Glendale, Kentucky]] | style="text-align:left;"| U.S. | style="background:lightyellow; text-align:center;"| Announced | style="text-align:right;"| ~5,000 | style="text-align:left;"| Batteries for F-150 Lightning & E-Transit | Consists of 2 battery plants. Both were originally scheduled to start production in 2025. Plant 1 began commercial production on August 19, 2025 but Plant 2 has been delayed to 2027. Part of BlueOval SK, a joint venture between Ford Motor Company and SK On, a subsidiary of SK Innovation.<ref name=BlueOval/> As of December 2025, the venture is being dissolved. Ford will keep the Kentucky battery plants while SK On will keep the Tennessee battery plant. The Glendale plant is now making battery packs for Ford Energy, a new Ford subsidiary making battery energy storage systems for data centers, utilities, and large industrial and commercial customers in the U.S. |} ==Former production facilities== {| class="wikitable sortable" style="font-size:90%" |- ! style="width:120px;"| VIN ! style="width:220px;"| Name ! style="width:100px;"| City/State ! style="width:100px;"| Country ! style="width:100px;" class="unsortable"| Years ! style="width:250px;"| Products ! style="width:350px;" class="unsortable"| Comments | |- valign="top" | style="text-align:center;"| F (EU) [serial# starts with BF] | style="text-align:left;"| Advanced Vehicle Operations (AVO) "Aveley plant" | style="text-align:left;"| [[w:South Ockendon|South Ockendon]], [[w:Essex|Essex]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Vehicle production from Nov. 1970 - Early 1975 | style="text-align:left;"| [[w:Ford Escort (Europe)#First generation (1967)|Ford Escort]] Mexico, RS1600, & RS2000 models | Was located on Arisdale Avenue in South Ockendon. Plant was set up to build special, high performance Escort models that needed extra work to build, which the Halewood plant was struggling to do. Escort two-door bodyshells, already painted, trimmed, and built to strengthened Type 49 specification, were shipped in directly from the Halewood plant that built mainstream Escorts. Once at the AVO plant, the bodies were placed on an overhead carousel which ran around the factory. As the cars moved around, the engine, transmission, and suspension were fitted from below. When auto sales declined following the 1973 Energy Crisis, spare capacity opened up at the mainstream Escort plants and a dedicated plant for performance versions was no longer needed and the AVO plant closed in early 1975. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Alexandria Assembly | style="text-align:left;"| [[w:Alexandria|Alexandria]] | style="text-align:left;"| [[w:Egypt|Egypt]] | style="text-align:center;"| 1950-1966 | style="text-align:left;"| Ford trucks including [[w:Thames Trader|Thames Trader]] trucks | Opened in 1950. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Ali Automobiles | style="text-align:left;"| [[w:Karachi|Karachi]] | style="text-align:left;"| [[w:Pakistan|Pakistan]] | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Anglia|Ford Anglia]], [[w:Ford Cortina|Ford Cortina]], [[w:Ford Transit#Taunus Transit (1953)|Ford Kombi]], [[w:Ford F-Series second generation|Ford F-Series pickups]] | Ford production ended. Ali Automobiles was nationalized in 1972, becoming Awami Autos. Today, Awami is partnered with Suzuki in the Pak Suzuki joint venture. |- valign="top" | style="text-align:center;"| N (EU) [when following C] | style="text-align:left;"| Amsterdam Assembly | style="text-align:left;"| [[w:Amsterdam|Amsterdam]] | style="text-align:left;"| [[w:Netherlands|Netherlands]] | style="text-align:center;"| 1932-1981 | style="text-align:left;"| [[w:Ford Transit|Ford Transit]], [[w:Ford Transcontinental|Ford Transcontinental]], [[w:Ford D Series|Ford D-Series]],<br> Ford N-Series (EU) | Assembled a wide range of Ford products primarily for the local market from Sept. 1932–Nov. 1981. Began with the [[w:1932 Ford|1932 Ford]]. Car assembly (latterly [[w:Ford Anglia|Ford Anglia]], [[w:Ford Corsair|Ford Corsair]], [[w:Ford Cortina|Ford Cortina]], [[w:Ford Zephyr|Ford Zephyr]], [[w:Ford Zodiac|Ford Zodiac]], [[w:Ford Escort (Europe)|Ford Escort]], [[w:Ford Vedette|Ford Vedette]], and [[w:Ford Taunus|Ford Taunus]]) ended 1978. Also, [[w:Ford Mustang (first generation)|Ford Mustang]], [[w:Ford Custom 500|Ford Custom 500]] |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Antwerp Assembly | style="text-align:left;"| [[w:Antwerp|Antwerp]] | style="text-align:left;"| [[w:Belgium|Belgium]] | style="text-align:center;"| 1922-1964 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:Ford Model Y|Ford Model Y]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:1949 Ford|1949 Ford]]<br />[[w:Ford Taunus P3|Ford Taunus P3]]<br />[[w:Ford Taunus P4|Ford Taunus P4]]<br />[[w:Ford Falcon (North America)|Ford Falcon]]<br />[[w:Ford Fairlane (Americas)|Ford Fairlane]]<br />[[w:Edsel|Edsel]] (CKD)<br />[[w:Ford F-Series|Ford F-Series]] | Original plant was on Rue Dubois from 1922 to 1926. Ford then moved to the Hoboken District of Antwerp in 1926 until they moved to a plant near the Bassin Canal in 1931. Replaced by the Genk plant that opened in 1964, however tractors were then made at Antwerp for some time after car & truck production ended. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford France|Asnières-sur-Seine Assembly]] | style="text-align:left;"| [[w:Asnières-sur-Seine|Asnières-sur-Seine]] | style="text-align:left;"| [[w:France|France]] | style="text-align:center;"| Sold | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:Ford Model Y|Ford Model Y]] (Ford 6CV) | Ford sold the plant to Société Immobilière Industrielle d'Asnières or SIIDA on April 30, 1941. SIIDA leased it to the LAFFLY company (New Machine Tool Company) on October 30, 1941. [[w:Citroën|Citroën]] then bought most of the shares in LAFFLY in 1948 and the lease was transferred from LAFFLY to [[w:Citroën|Citroën]] in 1949, which then began to move in and set up production. A hydraulics building for the manufacture of the hydropneumatic suspension of the DS was built in 1953. [[w:Citroën|Citroën]] manufactured machined parts and hydraulic components for its hydropneumatic suspension system (also supplied to [[w:Rolls-Royce Motors|Rolls-Royce Motors]]) at Asnières as well as steering components and connecting rods & camshafts after Nanterre was closed. SIIDA was taken over by Citroën on September 2, 1968. In 2000, the Asnières site became a joint venture between [[w:Siemens|Siemens Automotive]] and [[w:PSA Group|PSA Group]] (Siemens 52% -PSA 48%) called Siemens Automotive Hydraulics SA (SAH). In 2007, when [[w:Continental AG|Continental AG]] took over [[w:Siemens VDO|Siemens VDO]], SAH became CAAF (Continental Automotive Asnières France) and PSA sold off its stake in the joint venture. Continental closed the Asnières plant in 2009. Most of the site was demolished between 2011 and 2013. |- valign="top" | style="text-align:center;"| G | style="text-align:left;"| Aston Martin Gaydon Assembly | style="text-align:left;"| [[w:Gaydon|Gaydon, Warwickshire]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| | style="text-align:left;"| [[w:Aston Martin DB9|Aston Martin DB9]]<br />[[w:Aston Martin Vantage (2005)|Aston Martin V8 Vantage/V12 Vantage]]<br />[[w:Aston Martin DBS V12|Aston Martin DBS V12]] | style="text-align:left;"| Sold along with [[w:Aston Martin|Aston Martin]]. |- valign="top" | style="text-align:center;"| T (DBS-based V8 & Lagonda sedan), <br /> B (Virage & Vanquish) | style="text-align:left;"| Aston Martin Newport Pagnell Assembly | style="text-align:left;"| [[w:Newport Pagnell|Newport Pagnell]], [[w:Buckinghamshire|Buckinghamshire]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Sold | style="text-align:left;"| [[w:Aston Martin Vanquish#First generation (2001–2007)|Aston Martin V12 Vanquish]]<br />[[w:Aston Martin Virage|Aston Martin Virage]] 1st generation <br />[[w:Aston Martin V8|Aston Martin V8]]<br />[[w:Aston Martin Lagonda|Aston Martin Lagonda sedan]] <br />[[w:Aston Martin V8 engine|Aston Martin V8 engine]] | style="text-align:left;"| Sold along with [[w:Aston Martin|Aston Martin]]. |- valign="top" | style="text-align:center;"| AT/A (NA) | style="text-align:left;"| [[w:Atlanta Assembly|Atlanta Assembly]] | style="text-align:left;"| [[w:Hapeville, Georgia|Hapeville, Georgia]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1947-2006 | style="text-align:left;"| [[w:Ford Taurus|Ford Taurus]] (1986-2007)<br /> [[w:Mercury Sable|Mercury Sable]] (1986-2005) | Began F-Series production December 3, 1947. Demolished. Site now occupied by the headquarters of Porsche North America.<ref>{{cite web|title=Porsche breaks ground in Hapeville on new North American HQ|url=http://www.cbsatlanta.com/story/20194429/porsche-breaks-ground-in-hapeville-on-new-north-american-hq|publisher=CBS Atlanta}}</ref> <br />Previously: <br /> [[w:Ford F-Series|Ford F-Series]] (1951-1956, 1958, 1960)<br />[[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1967)<br />[[w:Ford Galaxie|Ford Galaxie]] (1959-1961, 1963-1967)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1966, 1969, 1979-1980)<br />[[w:Mercury Marquis|Mercury Marquis]]<br />[[w:Ford Falcon (North America)|Ford Falcon (compact)]] (1961-1964)<br />[[w:Ford Falcon (North America)#Intermediate Falcon (1970½)|Ford Falcon (intermediate)]] (1970 1/2)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane]] (1962-1963, 1965-1970)<br />[[w:Ford Torino|Ford Torino]] (1968-1976)<br />[[w:Ford Ranchero|Ford Ranchero]] (1969-1977)<br />[[w:Mercury Montego|Mercury Montego]]<br />[[w:Mercury Cougar#Third generation (1974–1976)|Mercury Cougar]] (1974-1976)<br />[[w:Ford LTD II|Ford LTD II]] (1977-1978)<br />[[w:Mercury Cougar#Fourth generation (1977–1979)|Mercury Cougar XR-7]] (1977)<br />[[w:Ford Fairmont|Ford Fairmont]] (1981-1982)<br />[[w:Mercury Zephyr|Mercury Zephyr]] (1981-1982)<br />[[w:Ford Granada (North America)#Second generation (1981–1982)|Ford Granada]] (1981-1982)<br />[[w:Mercury Cougar#Fifth generation (1980–1982)|Mercury Cougar]] (non-XR-7 models only) (1981-1982)<br />[[w:Ford Thunderbird (ninth generation)|Ford Thunderbird (Gen 9)]] (1983-1985)<br />[[w:Mercury Cougar#Sixth generation (1983–1988)|Mercury Cougar]] (1984-1985) |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Auckland Operations | style="text-align:left;"| [[w:Wiri|Wiri]] | style="text-align:left;"| [[w:New Zealand|New Zealand]] | style="text-align:center;"| 1973-1997 | style="text-align:left;"| [[w:Ford Laser|Ford Laser]]<br />[[w:Ford Telstar|Ford Telstar]]<br />[[w:Ford Falcon (Australia)|Ford Falcon]]<br /> [[w:Mazda 323|Mazda 323]]<br /> [[w:Mazda 626|Mazda 626]] | style="text-align:left;"| Opened in 1973 as Wiri Assembly (also included transmission & chassis component plants), name changed in 1983 to Auckland Operations, became a joint venture with Mazda called Vehicles Assemblers of New Zealand (VANZ) in 1987, closed in 1997. |- valign="top" | style="text-align:center;"| S (EU) [when following P] (for Ford),<br> V (for VW & Seat) | style="text-align:left;"| [[w:Autoeuropa|Autoeuropa]] | style="text-align:left;"| [[w:Palmela|Palmela]] | style="text-align:left;"| [[w:Portugal|Portugal]] | style="text-align:center;"| Sold to [[w:Volkswagen|Volkswagen]] in 1999, Ford production ended in 2006 | [[w:Ford Galaxy#First generation (V191; 1995)|Ford Galaxy (1995–2006)]]<br />[[w:Volkswagen Sharan|Volkswagen Sharan]]<br />[[w:SEAT Alhambra|SEAT Alhambra]] | Autoeuropa was a 50/50 joint venture between Ford & VW created in 1991. Production began in 1995. Ford sold its half of the plant to VW in 1999 but the Ford Galaxy continued to be built at the plant until the first generation ended production in 2006. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Automotive Industries|Automotive Industries]], Ltd. (AIL) | style="text-align:left;"| [[w:Nazareth Illit|Nazareth Illit]] | style="text-align:left;"| [[w:Israel|Israel]] | style="text-align:center;"| 1968-1985? | style="text-align:left;"| [[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Transit|Ford Transit]]<br />[[w:Ford D Series|Ford D Series]]<br />[[w:Ford L-Series|Ford L-9000]] | Car production began in 1968 in conjunction with Ford's local distributor, Israeli Automobile Corp. Truck production began in 1973. Ford Escort production ended in 1981. Truck production may have continued to c.1985. |- valign="top" | | style="text-align:left;"| [[w:Avtotor|Avtotor]] | style="text-align:left;"| [[w:Kaliningrad|Kaliningrad]] | style="text-align:left;"| [[w:Russia|Russia]] | style="text-align:center;"| Suspended | style="text-align:left;"| [[w:Ford Cargo|Ford Cargo]] truck<br />[[w:Ford F-MAX|Ford F-MAX]] | Produced trucks under contract for Ford Otosan. Production began with the Cargo in 2015; the F-Max was added in 2019. |- valign="top" | style="text-align:center;"| P (EU) [when following C] | style="text-align:left;"| Azambuja Assembly | style="text-align:left;"| [[w:Azambuja|Azambuja]] | style="text-align:left;"| [[w:Portugal|Portugal]] | style="text-align:center;"| Closed in 2000 | style="text-align:left;"| [[w:Ford Anglia|Ford Anglia]]<br /> [[w:Ford Cortina|Ford Cortina]]<br />[[w:Ford Escort (Europe)|Ford Escort]]<br /> [[w:Ford Granada (Europe)|Ford Granada]]<br />[[w:Ford P100#Sierra-based model|Ford P100]]<br />[[w:Ford Taunus P4|Ford Taunus P4]] (12M)<br />[[w:Ford Transit#Taunus Transit (1953)|Ford Taunus Transit]]<br />[[w:Ford Thames 400E|Ford Thames 400E]]<br />[[w:Ford Transit|Ford Transit]]<br />[[w:Thames Trader|Thames Trader]] | |- valign="top" | style="text-align:center;"| G (EU) [when following W] (Ford Maverick made by Nissan) | style="text-align:left;"| Barcelona Assembly | style="text-align:left;"| [[w:Barcelona|Barcelona]] | style="text-align:left;"| [[w:Spain|Spain]] | style="text-align:center;"| 1923-1954 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model Y|Ford Model Y]], [[w:Ford Model C Ten|Ford Model C Ten]] | Became Motor Iberica SA after nationalization in 1954. Built Ford's [[w:Thames Trader|Thames Trader]] trucks under license which were sold under the [[w:Ebro trucks|Ebro]] name. Later taken over in stages by Nissan from 1979 to 1987 when it became [[w:Nissan Motor Ibérica|Nissan Motor Ibérica]] SA. Under Nissan, the [[w:Nissan Terrano II|Ford Maverick]] SUV was built in the Barcelona plant under an OEM agreement. |- valign="top" | style="text-align:left;"| | style="text-align:left;"| [[w:Ford Motor Argentina|Barracas Assembly]] | style="text-align:left;"| [[w:Barracas, Buenos Aires|Barracas]], [[w:Buenos Aires|Buenos Aires]] | style="text-align:left;"| [[w:Argentina|Argentina]] | style="text-align:center;"| 1916-1922 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| First Ford assembly plant in Latin America and the second outside North America after Britain. Replaced by the La Boca plant in 1922. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Basildon | style="text-align:left;"| [[w:Basildon|Basildon]], [[w:Essex|Essex]] | style="text-align:left;"| [[w:England|England]], [[w:UK|U.K.]] | style="text-align:center;"| 1964-1991 | style="text-align:left;"| Ford tractor range | style="text-align:left;"| Sold with New Holland tractor business |- valign="top" | | style="text-align:left;"| [[w:Batavia Transmission|Batavia Transmission]] | style="text-align:left;"| [[w:Batavia, Ohio|Batavia, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1980-2008 | style="text-align:left;"| [[w:Ford CD4E transmission|Ford CD4E transmission]]<br /> [[w:Ford ATX transmission|Ford ATX transmission]]<br />[[w:Batavia Transmission#Partnership|CFT23 & CFT30 CVT transmissions]] produced as part of ZF Batavia joint venture with [[w:ZF Friedrichshafen|ZF Friedrichshafen]] | ZF Batavia joint venture was created in 1999 and was 49% owned by Ford and 51% owned by [[w:ZF Friedrichshafen|ZF Friedrichshafen]]. Jointly developed CVT production began in late 2003. Ford bought out ZF in 2005 and the plant became Batavia Transmissions LLC, owned 100% by Ford. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Germany|Berlin Assembly]] | style="text-align:left;"| [[w:Berlin|Berlin]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| Closed 1931 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model TT|Ford Model TT]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]] | Replaced by Cologne plant. |- valign="top" | | style="text-align:left;"| Ford Aquitaine Industries Bordeaux Automatic Transmission Plant | style="text-align:left;"| [[w:Blanquefort, Gironde|Blanquefort]] | style="text-align:left;"| [[w:France|France]] | style="text-align:center;"| 1973-2019 | style="text-align:left;"| [[w:Ford C3 transmission|Ford C3/A4LD/A4LDE/4R44E/4R55E/5R44E/5R55E/5R55S/5R55W 3-, 4-, & 5-speed automatic transmissions]]<br />[[w:Ford 6F transmission|Ford 6F35 6-speed automatic transmission]]<br />Components | Sold to HZ Holding in 2009 but the deal collapsed and Ford bought the plant back in 2011. Closed in September 2019. Demolished in 2021. |- valign="top" | style="text-align:center;"| K (for DB7) | style="text-align:left;"| Bloxham Assembly | style="text-align:left;"| [[w:Bloxham|Bloxham]], [[w:Oxfordshire|Oxfordshire]] | style="text-align:left;"| [[w:England|England]], [[w:UK|U.K.]] | style="text-align:center;"| Closed 2003 | style="text-align:left;"| [[w:Aston Martin DB7|Aston Martin DB7]]<br />[[w:Jaguar XJ220|Jaguar XJ220]] | style="text-align:left;"| Originally a JaguarSport plant. After XJ220 production ended, plant was transferred to Aston Martin to build the DB7. Closed with the end of DB7 production in 2003. Aston Martin has since been sold by Ford in 2007. |- valign="top" | style="text-align:center;"| V (NA) | style="text-align:left;"| [[w:International Motors#Blue Diamond Truck|Blue Diamond Truck]] | style="text-align:left;"| [[w:General Escobedo|General Escobedo, Nuevo León]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"|Joint venture ended in 2015 | style="text-align:left;"|[[w:Ford F-Series (medium duty truck)#Seventh generation (2000-2015)|Ford F-650]] (2004-2015)<br />[[w:Ford F-Series (medium duty truck)#Seventh generation (2000-2015)|Ford F-750]] (2004-2015)<br /> [[w:Ford LCF|Ford LCF]] (2006-2009) | style="text-align:left;"| Commercial truck joint venture with Navistar until 2015 when Ford production moved back to USA and plant was returned to Navistar. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford India|Bombay Assembly]] | style="text-align:left;"| [[w:Bombay|Bombay]] | style="text-align:left;"| [[w:India|India]] | style="text-align:center;"| 1926-1954 | style="text-align:left;"| | Ford's original Indian plant. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford France|Bordeaux Assembly]] | style="text-align:left;"| [[w:Bordeaux|Bordeaux]] | style="text-align:left;"| [[w:France|France]] | style="text-align:center;"| Closed 1925 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | Replaced by Asnières-sur-Seine plant. |- valign="top" | | style="text-align:left;"| [[w:Bridgend Engine|Bridgend Engine]] | style="text-align:left;"| [[w:Bridgend|Bridgend]] | style="text-align:left;"| [[w:Wales|Wales]], [[w:UK|U.K.]] | style="text-align:center;"| Closed September 2020 | style="text-align:left;"| [[w:Ford CVH engine|Ford CVH engine]]<br />[[w:Ford Sigma engine|Ford Sigma engine]]<br />[[w:Ford EcoBoost engine#Inline four-cylinder|Ford 1.5/1.6 Sigma EcoBoost I4]]<br />[[w:Ford Zeta engine|Ford Zeta engine]]<br />[[w:Ford EcoBoost engine#1.5 L Dragon|Ford 1.5L Dragon EcoBoost I3]]<br /> [[w:Jaguar AJ-V8 engine|Jaguar AJ-V8 engine]] 4.0/4.2/4.4L<br />[[w:Jaguar AJ-V8 engine#V6|Jaguar AJ126 3.0L V6]]<br />[[w:Jaguar AJ-V8 engine#AJ-V8 Gen III|Jaguar AJ133 5.0L V8]]<br /> [[w:Volvo SI6 engine|Volvo SI6 engine]] | |- valign="top" | style="text-align:center;"| JG (AU) /<br> G (AU) /<br> 8 (NA) | style="text-align:left;"| [[w:Broadmeadows Assembly Plant|Broadmeadows Assembly Plant]] (Broadmeadows Car Assembly) (Plant 1) | style="text-align:left;"| [[w:Campbellfield|Campbellfield]], [[w:Victoria (Australia)|Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| 1959-2016<ref name="abc_4707960">{{cite news|title=Ford Australia to close Broadmeadows and Geelong plants, 1,200 jobs to go|url=http://www.abc.net.au/news/2013-05-23/ford-to-close-geelong-and-broadmeadows-plants/4707960|work=abc.net.au|access-date=25 May 2013}}</ref> | style="text-align:left;"| [[w:Ford Consul|Ford Consul]]<br />[[w:Ford Zephyr|Ford Zephyr]]<br />[[w:Ford Zodiac|Ford Zodiac]]<br />[[w:Ford Anglia#Anglia 105E (1959–1968)|Ford Anglia 105E]]<br />[[w:Ford Prefect|Ford Prefect]]<br />[[w:Ford Cortina|Ford Cortina]] TC-TF<br />[[w:Ford Telstar#First generation (AR, AS; 1982–1987)|Ford Telstar]]<br />[[w:Ford Falcon (Australia)|Ford Falcon]]<br /> Ford Falcon Ute<br /> [[w:Nissan Ute|Nissan Ute]] (XFN)<br />Ford Falcon Panel Van<br />[[w:Ford Fairlane (Australia)|Ford Fairlane]]<br />[[w:Ford LTD (Australia)|Ford LTD]]<br /> [[w:Ford Territory (Australia)|Ford Territory]]<br /> [[w:Ford Capri (Australia)|Ford Capri Convertible]]<br />[[w:Mercury Capri#Third generation (1991–1994)|Mercury Capri convertible]] (1991–1994)<br />[[w:1957 Ford|1959-1961 Ford Custom 300/Fairlane 500/Ranch Wagon]]<br />[[w:Ford Galaxie#Australian production|Ford Galaxie (1969-1972) (conversion to right hand drive)]] | Plant opened August 1959. Closed Oct 7th 2016. |- valign="top" | style="text-align:center;"| JL (AU) /<br> L (AU) | style="text-align:left;"| Broadmeadows Commercial Vehicle Plant (Assembly Plant 2) | style="text-align:left;"| [[w:Campbellfield|Campbellfield]],[[w:Victoria (Australia)|Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| 1971-1992 | style="text-align:left;"| [[w:Ford F-Series|Ford F-Series]] (F-100/F-150/F-250/F-350)<br />[[w:Ford F-Series (medium duty truck)|Ford F-Series medium duty]] (F-500/F-600/F-700/F-750/F-800/F-8000)<br />[[w:Ford L-Series|Ford L-Series/Louisville/Aeromax]]<br />[[w:Ford Transit#First generation (1965)|Ford Transit]]<br />[[w:Ford Bronco#Australian assembly|Ford Bronco]] | |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Cadiz Assembly | style="text-align:left;"| [[w:Cadiz|Cadiz]] | style="text-align:left;"| [[w:Spain|Spain]] | style="text-align:center;"| 1920-1923 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | Replaced by Barcelona plant. |- | style="text-align:center;"| 8 (SA) | style="text-align:left;"| [[w:Ford Brasil|Camaçari Plant]] | style="text-align:left;"| [[w:Camaçari, Bahia|Camaçari, Bahia]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| 2001-2021<ref name="camacari">{{cite web |title=Ford Advances South America Restructuring; Will Cease Manufacturing in Brazil, Serve Customers With New Lineup {{!}} Ford Media Center |url=https://media.ford.com/content/fordmedia/fna/us/en/news/2021/01/11/ford-advances-south-america-restructuring.html |website=media.ford.com |access-date=6 June 2022 |date=11 January 2021}}</ref><ref>{{cite web|title=Rui diz que negociação para atrair nova montadora de veículos para Camaçari está avançada|url=https://destaque1.com/rui-diz-que-negociacao-para-atrair-nova-montadora-de-veiculos-para-camacari-esta-avancada/|website=destaque1.com|access-date=30 May 2022|date=24 May 2022}}</ref> | [[w:Ford Ka|Ford Ka]]<br /> [[w:Ford Ka|Ford Ka+]]<br /> [[w:Ford EcoSport|Ford EcoSport]]<br /> [[w:List of Ford engines#1.0 L Fox|Fox 1.0L I3 Engine]] | [[w:Ford Fiesta (fifth generation)|Ford Fiesta & Fiesta Rocam]]<br />[[w:Ford Courier#Brazil (1998–2013)|Ford Courier]] |- valign="top" | | style="text-align:left;"| Canton Forge Plant | style="text-align:left;"| [[w:Canton, Ohio|Canton, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed 1988 | | Located on Georgetown Road NE. |- | | Casablanca Automotive Plant | [[w:Casablanca, Chile|Casablanca, Chile]] | [[w:Chile|Chile]] | style="text-align:center;" | 1969-1971<ref>{{Cite web |last=U |first=Juan Ignacio Alamos |date=2011-12-06 |title=AUTOS CHILENOS: PLANTA FORD CASABLANCA (1971) |url=https://autoschilenos.blogspot.com/2011/12/planta-ford-casablanca-1971.html |access-date=2022-08-04 |website=AUTOS CHILENOS}}</ref><ref>{{Cite web |title=Reuters Archive Licensing |url=https://reuters.screenocean.com/record/1076777 |access-date=2022-08-04 |website=Reuters Archive Licensing |language=en}}</ref> | [[w:Ford Falcon (North America)|Ford Falcon]], [[w:Ford F-Series|Ford F-series]], [[w:Ford F-Series (medium duty truck)#Fifth generation (1967-1979)|Ford F-600]] | Nationalized by the Chilean government.<ref>{{Cite book |last=Trowbridge |first=Alexander B. |title=Overseas Business Reports, US Department of Commerce |date=February 1968 |publisher=US Government Printing Office |edition=OBR 68-3 |location=Washington, D.C. |pages=18 |language=English}}</ref><ref name=":1">{{Cite web |title=EyN: Henry Ford II regresa a Chile |url=http://www.economiaynegocios.cl/noticias/noticias.asp?id=541850 |access-date=2022-08-04 |website=www.economiaynegocios.cl}}</ref> |- valign="top" | | style="text-align:left;"| [[w:Changan Ford Mazda|Changan Ford Mazda Automobile Co.]] | style="text-align:left;"| [[w:Nanjing|Nanjing]], [[w:Jiangsu|Jiangsu]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| -2012 | style="text-align:left;"| [[w:Ford Fiesta (sixth generation)|Ford Fiesta]]<br />[[w:Mazda2#DE|Mazda 2]]<br />[[w:Mazda 3|Mazda 3]] | style="text-align:left;"| Joint venture: Chongqing Changan Automobile Co., Ltd. (50%). Ford Motor Company (35%), Mazda Motor Company (15%). JV was divided in 2012 into [[w:Changan Ford|Changan Ford]] and [[w:Changan Mazda|Changan Mazda]]. Changan Mazda took the Nanjing plant while Changan Ford kept the other plants. |- valign="top" | | style="text-align:left;"| [[w:Changan Ford Mazda Engine|Changan Ford Mazda Engine Co.]] | style="text-align:left;"| [[w:Nanjing|Nanjing]], [[w:Jiangsu|Jiangsu]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| -2019 | style="text-align:left;"| [[w:Ford Sigma engine|Ford Sigma engine]]<br />[[w:Mazda L engine|Mazda L engine]]<br />[[w:Mazda Z engine|Mazda BZ series 1.3/1.6 engine]]<br />[[w:Skyactiv#Skyactiv-G|Mazda Skyactiv-G 1.5/2.0/2.5]] | style="text-align:left;"| Joint venture: Chongqing Changan Automobile Co., Ltd. (50%), Ford Motor Company (25%), Mazda Motor Company (25%). Ford sold its stake to Mazda in 2019. Now known as Changan Mazda Engine Co., Ltd. owned 50% by Mazda & 50% by Changan. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Charles McEnearney & Co. Ltd. | style="text-align:left;"| Tumpuna Road, [[w:Arima|Arima]] | style="text-align:left;"| [[w:Trinidad and Tobago|Trinidad and Tobago]] | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Cortina|Ford Cortina]], [[w:Ford Laser|Ford Laser]] | Ford production ended & factory closed in 1990's. |- valign="top" | | [[w:Ford India|Chennai Engine Plant]] | [[w:Maraimalai Nagar|Maraimalai Nagar]], [[w:Tamil Nadu|Tamil Nadu]] | [[w:India|India]] | style="text-align:center;"| 2010–2022 <ref name=":0">{{cite web|date=2021-09-09|title=Ford to stop making cars in India|url=https://www.reuters.com/business/autos-transportation/ford-motor-cease-local-production-india-shut-down-both-plants-sources-2021-09-09/|access-date=2021-09-09|website=Reuters|language=en}}</ref> | [[w:Ford DLD engine#DLD-415|Ford DLD engine]] (DLD-415/DV5)<br /> [[w:Ford Sigma engine|Ford Sigma engine]] | |- valign="top" | C (NA)<br>/<br> R (EU) [when following M] | [[w:Ford India|Chennai Vehicle Assembly Plant]] | [[w:Maraimalai Nagar|Maraimalai Nagar]], [[w:Tamil Nadu|Tamil Nadu]] | [[w:India|India]] | style="text-align:center;"| Opened in 1999 <br> Closed in 2022<ref name=":0"/> | [[w:Ford Endeavour|Ford Endeavour]]<br /> [[w:Ford Fiesta|Ford Fiesta]] 5th & 6th generations<br /> [[w:Ford Figo#First generation (B517; 2010)|Ford Figo]]<br /> [[w:Ford EcoSport#Second generation (B515; 2012)|Ford EcoSport]]<br />[[w:Ford Ikon|Ford Ikon]]<br />[[w:Ford Fusion (Europe)|Ford Fusion]] | |- valign="top" | style="text-align:center;"| N (NA) | style="text-align:left;"| Chicago SHO Center | style="text-align:left;"| [[w:Chicago|Chicago]], [[w:Illinois|Illinois]] | style="text-align:left;"| U.S. | style="text-align:center;"| 2021-2023 | style="text-align:left;"| [[w:Ford Explorer#Sixth generation (U625; 2020)|Ford Explorer]] (2021-2023)<br />[[w:Lincoln Aviator#Second generation (U611; 2020)|Lincoln Aviator]] (2021-2023) | style="text-align:left;"| 12429 S Burley Ave in Chicago. Located about 1.2 miles away from Ford's Chicago Assembly Plant. |- valign="top" | | style="text-align:left;"| Cleveland Aluminum Casting Plant | style="text-align:left;"| [[w:Brook Park, Ohio|Brook Park, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Opened in 2000,<br> Closed in 2003 | style="text-align:left;"| Aluminum engine blocks for 2.3L Duratec 23 I4 | |- valign="top" | | style="text-align:left;"| Cleveland Casting | style="text-align:left;"| [[w:Brook Park, Ohio|Brook Park, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Opened in 1952,<br>Closed in 2010 | style="text-align:left;"| Iron engine blocks, heads, crankshafts, and main bearing caps | style="text-align:left;"|Located at 5600 Henry Ford Blvd. (Engle Rd.), immediately to the south of Cleveland Engine Plant 1. Construction 1950, operational 1952 to 2010.<ref>{{cite web|title=Ford foundry in Brook Park to close after 58 years of service|url=http://www.cleveland.com/business/index.ssf/2010/10/ford_foundry_in_brook_park_to.html|website=Cleveland.com|access-date=9 February 2018|date=23 October 2010}}</ref> Demolished 2011.<ref>{{cite web|title=Ford begins plans to demolish shuttered Cleveland Casting Plant|url=http://www.crainscleveland.com/article/20110627/FREE/306279972/ford-begins-plans-to-demolish-shuttered-cleveland-casting-plant|website=Cleveland Business|access-date=9 February 2018|date=27 June 2011}}</ref> |- valign="top" | | style="text-align:left;"| [[w:Cleveland Engine|Cleveland Engine]] #2 | style="text-align:left;"| [[w:Brook Park, Ohio|Brook Park, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Opened in 1955,<br>Closed in 2012 | style="text-align:left;"| [[w:Ford Duratec V6 engine#2.5 L|Ford 2.5L Duratec V6]]<br />[[w:Ford Duratec V6 engine#3.0 L|Ford 3.0L Duratec V6]]<br />[[w:Jaguar AJ-V6 engine|Jaguar AJ-V6 engine]] | style="text-align:left;"| Located at 18300 Five Points Rd., south of Cleveland Engine Plant 1 and the Cleveland Casting Plant. Opened in 1955. Partially demolished and converted into Forward Innovation Center West. Source of the [[w:Ford 351 Cleveland|Ford 351 Cleveland]] V8 & the [[w:Ford 335 engine#400|Cleveland-based 400 V8]] and the closely related [[w:Ford 335 engine#351M|400 Cleveland-based 351M V8]]. Also, [[w:Ford Y-block engine|Ford Y-block engine]] & [[w:Ford Super Duty engine|Ford Super Duty engine]]. |- valign="top" | | style="text-align:left;"| [[w:Compañía Colombiana Automotriz|Compañía Colombiana Automotriz]] (Mazda) | style="text-align:left;"| [[w:Bogotá|Bogotá]] | style="text-align:left;"| [[w:Colombia|Colombia]] | style="text-align:center;"| Ford production ended. Mazda closed the factory in 2014. | style="text-align:left;"| [[w:Ford Laser#Latin America|Ford Laser]]<br />[[w:Mazda 323|Mazda 323]]<br />[[w:Ford Ranger (international)|Ford Ranger]]<br />[[w:Mazda B series|Mazda B series]]<br />[[w:Mazda BT-50#First generation (UN; 2006)|Mazda BT-50]] | style="text-align:left;"| Plant owned by Mazda. |- valign="top" | style="text-align:center;"| E (EU) [when following C] | style="text-align:left;"| [[w:Henry Ford & Sons Ltd|Henry Ford & Sons Ltd]] | style="text-align:left;"| Marina, [[w:Cork (city)|Cork]] | style="text-align:left;"| [[w:Munster|Munster]], [[w:Republic of Ireland|Ireland]] | style="text-align:center;"| Closed (1984) | style="text-align:left;"| [[w:Fordson|Fordson]] tractor (1919-1922, 1929-1932) and car assembly, including [[w:Ford Escort (Europe)|Ford Escort]] and [[w:Ford Cortina|Ford Cortina]] in the 1970s finally ending with the [[w:Ford Sierra|Ford Sierra]] in 1980s.<ref>{{cite web|title=The history of Ford in Ireland|url=http://www.ford.ie/AboutFord/CompanyInformation/HistoryOfFord|work=Ford|access-date=10 July 2012}}</ref> Also [[w:Ford Transit|Ford Transit]], [[w:Ford A series|Ford A-series]], and [[w:Ford D Series|Ford D-Series]]. Also [[w:Ford Model T|Ford Model T]] (1923-1927), [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:Ford Model Y|Ford Model Y]], [[w:Ford Anglia|Ford Anglia]], [[w:Ford Corsair|Ford Corsair]], [[w:Ford Consul|Ford Consul]], [[w:Ford Prefect|Ford Prefect]], and [[w:Ford Zephyr|Ford Zephyr]]. | style="text-align:left;"| Founded in 1917 with production from 1919 to 1984. Produced Model T components beginning in 1921 before complete cars began to be assembled (Model T in 1923). Supplied components to the Manchester, England Model T plant. |- valign="top" | | style="text-align:left;"| Croydon Stamping | style="text-align:left;"| [[w:Croydon|Croydon]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (2003) | style="text-align:left;"| Parts - Small metal stampings and assemblies | Opened in 1949 as Briggs Motor Bodies & purchased by Ford in 1957. Expanded in 1989. Site completely vacated in 2005. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Cuautitlán Engine | style="text-align:left;"| [[w:Cuautitlán Izcalli|Cuautitln Izcalli]], [[w:Mexico State|Mexico State]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| Closed | style="text-align:left;"| Opened in 1964. Included a foundry and machining plant. <br /> [[w:Ford small block engine#289|Ford 289 V8]]<br />[[w:Ford small block engine#302|Ford 302 V8]]<br />[[w:Ford small block engine#351W|Ford 351 Windsor V8]] | |- valign="top" | style="text-align:center;"| A (EU) [when following B] | style="text-align:left;"| [[w:Ford Dagenham assembly plant|Dagenham Assembly]] | style="text-align:left;"| [[w:Dagenham|Dagenham]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (2002) | style="text-align:left;"| [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model Y|Ford Model Y]], [[w:Ford Model C Ten|Ford Model C Ten]], [[w:Ford CX|Ford CX]], [[w:Ford 7W|Ford 7W]], [[w:Ford 7Y|Ford 7Y]], [[w:Ford Model 91|Ford Model 91]], [[w:Ford Pilot|Ford Pilot]], [[w:Ford Anglia|Ford Anglia]], [[w:Ford Prefect|Ford Prefect]], [[w:Ford Popular|Ford Popular]], [[w:Ford Squire|Ford Squire]], [[w:Ford Consul|Ford Consul]], [[w:Ford Zephyr|Ford Zephyr]], [[w:Ford Zodiac|Ford Zodiac]], [[w:Ford Consul Classic|Ford Consul Classic]], [[w:Ford Corsair|Ford Corsair]], [[w:Ford Cortina|Ford Cortina]], [[w:Ford Granada (Europe)|Ford Granada]], [[w:Ford Fiesta|Ford Fiesta]], [[w:Ford Sierra|Ford Sierra]], [[w:Ford Courier#Europe (1991–2002)|Ford Courier]], [[w:Ford Fiesta (fourth generation)#Mazda 121|Mazda 121]], [[w:Fordson E83W|Fordson E83W]], [[w:Thames (commercial vehicles)#Fordson 7V|Fordson 7V]], [[w:Fordson WOT|Fordson WOT]], [[w:Thames (commercial vehicles)#Fordson Thames ET|Fordson Thames ET]], [[w:Ford Thames 300E|Ford Thames 300E]], [[w:Ford Thames 307E|Ford Thames 307E]], [[w:Ford Thames 400E|Ford Thames 400E]], [[w:Thames Trader|Thames Trader]], [[w:Thames Trader#Normal Control models|Thames Trader NC]], [[w:Thames Trader#Normal Control models|Ford K-Series]] | style="text-align:left;"| 1931–2002, formerly principal Ford UK plant |- valign="top" | | style="text-align:left;"| [[w:Ford Dagenham|Dagenham Stamping & Tooling]] | style="text-align:left;"| [[w:Dagenham|Dagenham]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (2013)<ref name="End of an era">{{cite news|title=End of an era|url=https://www.bbc.co.uk/news/uk-england-20078108|work=BBC News|access-date=26 October 2012}}</ref> Demolished. | Body panels, wheels | |- valign="top" | style="text-align:center;"| DS/DL/D (NA) | style="text-align:left;"| Dallas Assembly Plant | style="text-align:left;"| [[w:Dallas|Dallas, TX]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1925 to 1970 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:Ford Model 48|Ford Model 48]]<br />[[w:1937 Ford|1937 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />[[w:Ford GPW|Ford GPW]] (93,748 units)<ref>{{cite web|title=Arsenal of Democracy; The American Automobile Industry in World War II|date=2013 |url=https://www.google.com/books/edition/Arsenal_of_Democracy/P-PCAgAAQBAJ?hl=en&gbpv=1&pg=PA150&printsec=frontcover|author=Charles K. Hyde|publisher=Wayne State University Press|page=150-151}}</ref><br />[[w:1949 Ford|1949 Ford]]<br />[[w:1952 Ford|1952 Ford]]<br />[[w:1955 Ford|1955 Ford]]<br />[[w:1957 Ford|1957 Ford]]<br />[[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1960) <br />[[w:Ford Galaxie|Ford Galaxie]] (1959-1969)<br />[[w:Ford 300|Ford 300]] (1963)<br />[[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1968)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1968)<br />[[w:Ford F-Series|Ford F-Series]] (1951-1970) | style="text-align:left;"| Located at 5200 E. Grand Ave. near Fair Park. Replaced original Dallas plant at 2700 Canton St. in 1925. Assembly stopped February 1933 but resumed in 1934. Closed February 20, 1970. Over 3 million vehicles built. 5200 E. Grand Ave. is now owned by City Warehouse Corp. and is used by multiple businesses. |- valign="top" | style="text-align:center;"| DA/F (NA) | style="text-align:left;"| [[w:Dearborn Assembly Plant|Dearborn Assembly Plant]] | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (2004) | style="text-align:left;"| [[w:Eagle-class patrol craft|Eagle-class patrol craft]] during WWI<br />[[w:Fordson|Fordson]] tractors (1921-1928) <br />Parts for Ford Model T<br />[[w:Ford Model A (1927–1931)|Ford Model A]] (1928-1932)<br />[[w:Ford Model B (1932)|Ford Model B]] (1932-1934)<br />[[w:Ford Model 48|Ford Model 48]] (1935-1936)<br />[[w:1937 Ford|1937 Ford]] (1937-1940)<br />[[w:1941 Ford|1941 Ford]] (1941-1942, 1946-1948)<br />[[w:1949 Ford|1949 Ford]] (1949-1951)<br />[[w:1952 Ford|1952 Ford]] (1952-1954)<br />[[w:1955 Ford|1955 Ford]] (1955-1956)<br />[[w:1957 Ford|1957 Ford]] (1957-1959)<br />[[w:Mercury Eight|Mercury Eight]] (1939-1951)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1955-1961)<br /> [[w:Ford Galaxie|Ford Galaxie]] (1959-1960)<br /> [[w:Ford Ranchero|Ford Ranchero]] (1957-1958)<br /> [[w:Ford Fairlane (Americas)|Ford Fairlane (midsize)]] (1962-1964)<br /> [[w:Mercury Meteor#Intermediate (1962–1963)|Mercury Meteor]] (1962-1963)<br />[[w:Ford Thunderbird (first generation)|Ford Thunderbird]] (1955-1957)<br />[[w:Ford Mustang|Ford Mustang]] (1965-2004)<br />[[w:Mercury Cougar|Mercury Cougar]] (1967-1973)<br />[[w:Mercury Capri#Second generation (1979–1986)|Mercury Capri]] (1979-1986)<br />[[w:Ford Falcon (North America)|Ford Falcon]] (1966)<br />[[w:Ford Maverick (1970–1977)|Ford Maverick]] (1972-1973)<br />[[w:Mercury Comet#Fifth generation (1971–1977)|Mercury Comet]] (1972-1973)<br />[[w:Ford GPW|Ford GPW]] (21,559 units)<ref>{{cite web|title=Arsenal of Democracy; The American Automobile Industry in World War II|date=2013 |url=https://www.google.com/books/edition/Arsenal_of_Democracy/P-PCAgAAQBAJ?hl=en&gbpv=1&pg=PA150&printsec=frontcover|author=Charles K. Hyde|publisher=Wayne State University Press|page=150-151}}</ref> <br>[[w:Ford GPA|Ford GPA]] 'Seep' (Sea Jeep) | style="text-align:left;"| Part of the River Rouge Complex. Started building Eagle-class patrol boats in 1918 during World War I. After the war ended, builtt Fordson tractors and parts for the Model T but didn't assemble any complete Model Ts. The Model A was the first complete car built at the Rouge complex. During World War II, the Rouge complex produced Jeeps (GPW), aircraft engines and engine parts, aircraft components, tires and tubes, armor plating, and tractors. During 2004, Mustangs built at Dearborn Assembly and F-150s built at Dearborn Truck were painted in the same new paint shop that opened in 2000. On May 10, 2004, the final vehicle was built at Dearborn Assembly: a '04 Mustang GT convertible. Replaced by Dearborn Truck Plant for 2005MY. This plant within the Rouge complex was demolished in 2008. It is now a parking lot to hold trucks from the Dearborn Truck Plant. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Dearborn Iron Foundry | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1974) | style="text-align:left;"| Cast iron parts including engine blocks. | style="text-align:left;"| Part of the River Rouge Complex. Replaced by Michigan Casting Center in the early 1970s. |- valign="top" | style="text-align:center;"| H (AU) | style="text-align:left;"| Eagle Farm Assembly Plant | style="text-align:left;"| [[w:Eagle Farm, Queensland|Eagle Farm (Brisbane), Queensland]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed (1998) | style="text-align:left;"| [[w:Ford Falcon (Australia)|Ford Falcon]]<br />Ford Falcon Ute (including XY 4x4)<br />[[w:Ford Fairlane (Australia)|Ford Fairlane]]<br />[[w:Ford LTD (Australia)|Ford LTD]]<br /> [[w:Ford F-Series|Ford F-Series]] trucks<br />[[w:Ford L-Series|Ford L-Series/Louisville/Aeromax trucks]]<br />[[w:Ford Cargo|Ford Cargo]]<br />[[w:Ford Trader|Ford Trader]] | style="text-align:left;"| Opened in 1926. Closed in 1998; demolished |- valign="top" | style="text-align:center;"| ME/T (NA) | style="text-align:left;"| [[w:Edison Assembly|Edison Assembly]] (a.k.a. Metuchen Assembly) | style="text-align:left;"|[[w:Edison, New Jersey|Edison, New Jersey]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1948–2004 | style="text-align:left;"| [[w:Ford Ranger (Americas)|Ford Ranger]] (1991-2004)<br />[[w:Ford Ranger EV|Ford Ranger EV]] (1998-2001)<br />[[w:Ford Ranger (Americas)#Mazda B-Series/Mazda Truck (1994–2010)|Mazda B-Series]] (1994–2004)<br />[[w:Ford Escort (North America)|Ford Escort]] (1981-1990)<br />[[w:Mercury Lynx|Mercury Lynx]] (1981-1987)<br />[[w:Ford Mustang|Ford Mustang]] (1965-1971)<br />[[w:Mercury Cougar|Mercury Cougar]]<br />[[w:Ford Pinto|Ford Pinto]] (1971-1980)<br />[[w:Mercury Bobcat|Mercury Bobcat]] (1975-1980)<br />[[w:Ford Falcon (North America)|Ford Falcon]] (1960-1965)<br />[[w:Mercury Comet|Mercury Comet]] (1963-1965)<br />[[w:Mercury Custom|Mercury Custom]]<br />[[w:Mercury Eight|Mercury Eight]] (1950-1951)<br />[[w:Mercury Medalist|Mercury Medalist]] (1956)<br />[[w:Mercury Montclair|Mercury Montclair]] (1955-1959)<br />[[w:Mercury Monterey|Mercury Monterey]] (1952-1959)<br />[[w:Mercury Park Lane|Mercury Park Lane]] (1959-1960)<br />[[w:Mercury Turnpike Cruiser|Mercury Turnpike Cruiser]]<br />[[w:Mercury Meteor#Full-size (1961)|Mercury Meteor]] <br /> [[w:Mercury Commuter|Mercury Commuter]] (1958) | style="text-align:left;"| Located at 939 U.S. Route 1. Demolished in 2005. Now a shopping mall called Edison Towne Square. Also known as Metuchen Assembly. |- valign="top" | | style="text-align:left;"| [[w:Essex Aluminum|Essex Aluminum]] | style="text-align:left;"| [[w:Windsor, Ontario|Windsor, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| Closed (2012) | style="text-align:left;"| 3.8/4.2L V6 cylinder heads<br />4.6L, 5.4L V8 cylinder heads<br />6.8L V10 cylinder heads<br />Pistons | style="text-align:left;"| Opened 1981. Sold to Nemak Aluminum (a 25/75 joint venture between Ford & Nemak, which is 75.24% owned by Alfa Group of Mexico) in 2001; shuttered in 2009 except for the melting operation which closed in 2012. |- valign="top" | | style="text-align:left;"| Fairfax Transmission | style="text-align:left;"| [[w:Fairfax, Ohio|Fairfax, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1979) | style="text-align:left;"| [[w:Cruise-O-Matic|Ford-O-Matic/Merc-O-Matic/Lincoln Turbo-Drive]]<br /> [[w:Cruise-O-Matic#MX/FX|Cruise-O-Matic (FX transmission)]]<br />[[w:Cruise-O-Matic#FMX|FMX transmission]] | Located at 4000 Red Bank Road. Opened in 1950. Original Ford-O-Matic was a licensed design from the Warner Gear division of [[w:Borg-Warner|Borg-Warner]]. Also produced aircraft engine parts during the Korean War. Closed in 1979. Sold to Red Bank Distribution of Cincinnati in 1987. Transferred to Cincinnati Port Authority in 2006 after Cincinnati agreed not to sue the previous owner for environmental and general negligence. Redeveloped into Red Bank Village, a mixed-use commercial and office space complex, which opened in 2009 and includes a Wal-Mart. |- valign="top" | style="text-align:center;"| T (EU) [when following L] (for Ford),<br> J (for Fiat - later years) | style="text-align:left;"| [[w:FCA Poland|Fiat Tychy Assembly]] | style="text-align:left;"| [[w:Tychy|Tychy]] | style="text-align:left;"| [[w:Poland|Poland]] | style="text-align:center;"| Ford production ended in 2016 | [[w:Ford Ka#Second generation (2008)|Ford Ka]]<br />[[w:Fiat 500 (2007)|Fiat 500]] | Plant owned by [[w:Fiat|Fiat]], which is now part of [[w:Stellantis|Stellantis]]. Production for Ford began in 2008. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Foden Trucks|Foden Trucks]] | style="text-align:left;"| [[w:Sandbach|Sandbach]], [[w:Cheshire|Cheshire]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Ford production ended in 1984. Factory closed in 2000. | style="text-align:left;"| [[w:Ford Transcontinental|Ford Transcontinental]] | style="text-align:left;"| Foden Trucks plant. Produced for Ford after Ford closed Amsterdam plant. 504 units produced by Foden. |- valign="top" | | style="text-align:left;"| Ford Malaysia Sdn. Bhd | style="text-align:left;"| [[w:Selangor|Selangor]] | style="text-align:left;"| [[w:Malaysia|Malaysia]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Laser|Ford Laser]]<br />[[w:Ford Lynx|Ford Lynx]]<br /> [[w:Ford Telstar|Ford Telstar]]<br />[[w:Ford Escape#First generation (2001)|Ford Escape]]<br /> [[w:Ford Ranger (international)|Ford Ranger]]<br /> [[w:Ford Econovan|Ford Econovan]]<br />[[w:Ford Spectron|Ford Spectron]]<br /> [[w:Ford Trader|Ford Trader]]<br />[[w:BMW 3-Series|BMW 3-Series]] E46, E90<br />[[w:BMW 5-Series|BMW 5-Series]] E60<br />[[w:Land Rover Defender|Land Rover Defender]]<br /> [[w:Land Rover Discovery|Land Rover Discovery]] | style="text-align:left;"|Originally known as AMIM (Associated Motor Industries Malaysia) Holdings Sdn. Bhd. which was 30% owned by Ford from the early 1980s. Previously, Associated Motor Industries Malaysia had assembled for various automotive brands including Ford but was not owned by Ford. In 2000, Ford increased its stake to 49% and renamed the company Ford Malaysia Sdn. Bhd. The other 51% was owned by Tractors Malaysia Bhd., a subsidiary of Sime Darby Bhd. |- valign="top" | | style="text-align:left;"| [[w:Ford Motor Company Lamp Factory|Ford Motor Company Lamp Factory]] | style="text-align:left;"| [[w:Flat Rock, Michigan|Flat Rock, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1950) | style="text-align:left;"| Automotive lighting | Located at 26601 W. Huron River Drive. Opened in 1923. Also produced junction boxes for the B-24 bomber as well as lighting for military vehicles during World War II. Closed in 1950. Sold to Moynahan Bronze Company in 1950. Sold to Stearns Manufacturing in 1972. Leased in 1981 to Flat Rock Metal Inc., which later purchased the building. |- valign="top" | | style="text-align:left;"| [[w:Ford Motor Company Philippines#History|Ford Philippines, Inc.]] Assembly Plant | style="text-align:left;"| [[w:Sucat, Muntinlupa|Sucat]], [[w:Muntinlupa|Muntinlupa]] | style="text-align:left;"| [[w:Philippines|Philippines]] | style="text-align:center;"| Closed (August 1984) | style="text-align:left;"| [[w:Ford Cortina|Ford Cortina]]<br /> [[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Taunus|Ford Taunus]]<br /> [[w:Ford Galaxie|Ford Galaxie]]<br />[[w:Ford LTD (Americas)|Ford LTD]]<br />[[w:Ford Laser#First generation (KA/KB; 1981)|Ford Laser]]<br />[[w:Ford Telstar#First generation (AR, AS; 1982–1987)|Ford Telstar]]<br /> American Ford trucks<br />British Ford trucks<br />Ford Fiera | style="text-align:left;"| Plant opened 1968. |- valign="top" | | style="text-align:left;"| [[w:Ford Motor Company Philippines#History|Ford Philippines, Inc.]] Stamping Plant | style="text-align:left;"| [[w:Mariveles|Mariveles]], [[w:Bataan|Bataan]] | style="text-align:left;"| [[w:Philippines|Philippines]] | style="text-align:center;"| Closed (August 1984) | style="text-align:left;"| Stampings | style="text-align:left;"| Plant opened 1976. |- valign="top" | style="text-align:left;"| | style="text-align:left;"| [[w:Ford Italia|Ford Motor Co. d’Italia]] | style="text-align:left;"| [[w:Trieste|Trieste]] | style="text-align:left;"| [[w:Italy|Italy]] | style="text-align:center;"| Closed (1931) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]] <br />[[w:Fordson|Fordson]] tractors | style="text-align:left;"| |- valign="top" | style="text-align:left;"| | style="text-align:left;"| [[w:Ford Motor Company of Japan|Ford Motor Company of Japan]] | style="text-align:left;"| [[w:Yokohama|Yokohama]], [[w:Kanagawa Prefecture|Kanagawa Prefecture]] | style="text-align:left;"| [[w:Japan|Japan]] | style="text-align:center;"| Closed (1941) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932-1934 Ford]]<br />[[w:Ford Model Y|Ford Model Y]] | style="text-align:left;"| Founded in 1925. Factory was seized by Imperial Japanese Government. |- valign="top" | style="text-align:left;"| T | style="text-align:left;"| Ford Motor Company del Peru | style="text-align:left;"| [[w:Lima|Lima]] | style="text-align:left;"| [[w:Peru|Peru]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Mustang (first generation)|Ford Mustang (first generation)]]<br /> [[w:Ford Galaxie|Ford Galaxie]]<br />[[w:Ford Taunus|Ford Taunus]] 17M<br />[[w:Ford F-Series|Ford F-Series]] | style="text-align:left;"| Opened in 1965.<ref>{{Cite news |date=1964-07-28 |title=Ford to Assemble Cars In Big New Plant in Peru |language=en-US |work=The New York Times |url=https://www.nytimes.com/1964/07/28/archives/ford-to-assemble-cars-in-big-new-plant-in-peru.html |access-date=2022-11-05 |issn=0362-4331}}</ref><ref>{{Cite web |date=2017-06-22 |title=Ford del Perú |url=https://archivodeautos.wordpress.com/2017/06/22/ford-del-peru/ |access-date=2022-11-05 |website=Archivo de autos |language=es}}</ref> |- valign="top" | | style="text-align:left;"| [[w:Ford Motor Company Philippines|Ford Motor Company Philippines]] | style="text-align:left;"| [[w:Santa Rosa, Laguna|Santa Rosa, Laguna]] | style="text-align:left;"| [[w:Philippines|Philippines]] | style="text-align:center;"| Closed (December 2012) | style="text-align:left;"| [[w:Ford Lynx|Ford Lynx]]<br /> [[w:Ford Focus|Ford Focus]]<br /> [[w:Mazda Protege|Mazda Protege]]<br />[[w:Mazda 3|Mazda 3]]<br /> [[w:Ford Escape|Ford Escape]]<br /> [[w:Mazda Tribute|Mazda Tribute]]<br />[[w:Ford Ranger (international)#First generation (PE/PG/PH; 1998)|Ford Ranger]] | style="text-align:left;"| Plant sold to Mitsubishi Motors |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Ford Motor Company Caribbean, Inc. | style="text-align:left;"| [[w:Canóvanas, Puerto Rico|Canóvanas]], [[w:Puerto Rico|Puerto Rico]] | style="text-align:left;"| [[w:United States|U.S.]] | style="text-align:center;"| Closed | style="text-align:left;"| Ball bearings | Plant opened in the 1960s. Constructed on land purchased from the [[w:Puerto Rico Industrial Development Company|Puerto Rico Industrial Development Company]]. |- valign="top" | style="text-align:center;"| M (EU) [when following C] | style="text-align:left;"| [[w:de:Ford Motor Company of Rhodesia|Ford Motor Co. Rhodesia (Pvt.) Ltd.]] | style="text-align:left;"| [[w:Willowvale, Harare|Willowvale]], [[w:Harare|Salisbury]] (now Harare) | style="text-align:left;"| ([[w:Southern Rhodesia|Southern Rhodesia]]) / [[w:Rhodesia (1964–1965)|Rhodesia (colony)]] / [[w:Rhodesia|Rhodesia (country)]] (now [[w:Zimbabwe|Zimbabwe]]) | style="text-align:center;"| Sold in 1967 to state-owned Industrial Development Corporation | style="text-align:left;"| [[w:Ford Fairlane (Americas)#Fourth generation (1962–1965)|Ford Fairlane]]<br />[[w:Ford Fairlane (Americas)#Fifth generation (1966–1967)|Ford Fairlane]]<br />[[w:Ford Falcon (North America)|Ford Falcon]]<br />[[w:Ford F-Series (fourth generation)|Ford F-100]]<br />[[w:Ford Galaxie|Ford Galaxie]]<br />[[w:Ford Anglia|Ford Anglia]]<br />[[w:Ford Consul#Ford Consul Mark II (1956–1962)|Ford Consul]]<br />[[w:Ford Consul Classic|Ford Consul Classic]]<br />[[w:Ford Corsair|Ford Corsair]]<br />[[w:Ford Cortina|Ford Cortina]]<br />[[w:Ford Zephyr|Ford Zephyr]]<br />[[w:Ford Zodiac|Ford Zodiac]]<br />[[w:Ford Thames 400E|Ford Thames 400E/800]]<br />[[w:Thames Trader|Thames Trader]]<br />[[w:Ford Taunus P3|Ford Taunus P3]]<br />[[w:Ford Taunus P5|Ford Taunus P5]]<br />[[w:Ford Transit#Taunus Transit (1953)|Ford Taunus Transit]]<br />[[w:Fordson#Dexta|Fordson Dexta tractors]]<br />[[w:Fordson#E1A|Fordson Super Major]]<br />[[w:Deutz-Fahr|Deutz F1M 414 tractor]] | style="text-align:left;"| Assembly began in 1961. Became [[w:Willowvale Motor Industries|Willowvale Motor Industries]] after the Ford sale. Became Willowvale Mazda Motor Industries from 1989 to 2014. Name went back to [[w:Willowvale Motor Industries|Willowvale Motor Industries]] in 2015. |- valign="top" | | style="text-align:left;"| [[w:Former Ford Factory|Ford Motor Co. (Singapore)]] | style="text-align:left;"| [[w:Bukit Timah|Bukit Timah]] | style="text-align:left;"| [[w:Singapore|Singapore]] | style="text-align:center;"| Closed (1980) | style="text-align:left;"| [[w:Ford Anglia|Ford Anglia]]<br />[[w:Ford Consul#Ford Consul Mark II (1956–1962)|Ford Consul]]<br />[[w:Ford Custom|Ford Custom]]<br />[[w:Ford Corsair|Ford Corsair]]<br />[[w:Ford Cortina|Ford Cortina]]<br /> [[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Falcon (Australia)|Ford Falcon]]<br />[[w:Ford Granada (Europe)|Ford Granada]]<br />[[w:Ford Prefect|Ford Prefect]]<br />[[w:Ford Zephyr|Ford Zephyr]]<br />[[w:Ford Zodiac|Ford Zodiac]] | style="text-align:left;"|Originally known as Ford Motor Company of Malaya Ltd. & subsequently as Ford Motor Company of Malaysia. Factory was originally on Anson Road, then moved to Prince Edward Road in Jan. 1930 before moving to Bukit Timah Road in April 1941. Factory was occupied by Japan from 1942 to 1945 during World War II. It was then used by British military authorities until April 1947 when it was returned to Ford. Production resumed in December 1947. |- valign="top" | | style="text-align:left;"| [[w:Ford Motor Company of Southern Africa|Ford Motor Company of South Africa Ltd.]] Struandale Assembly Plant | style="text-align:left;"| Struandale, [[w:Port Elizabeth|Port Elizabeth]] | style="text-align:left;"| [[w:South Africa|South Africa]] | style="text-align:center;"| Sold to [[w:Delta Motor Corporation|Delta Motor Corporation]] (later [[w:General Motors South Africa|GM South Africa]]) in 1994 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:Ford Falcon (North America)|Ford Falcon (North America)]]<br />[[w:Ford Fairlane (Americas)|Ford Fairlane (Americas)]]<br />[[w:Ford Galaxie|Ford Galaxie]]<br />[[w:Ford Ranchero#First generation (1957–1959)|Ford Ranchero (American)]]<br />[[w:Ford Anglia|Ford Anglia]]<br />[[w:Ford Prefect|Ford Prefect]]<br />[[w:Ford Capri|Ford Capri]]<br />[[w:Ford Cortina|Ford Cortina]]<br />[[w:Ford P100#Cortina-based model|Ford Cortina Pickup/P100/Ford 1-Tonner]]<br />[[w:Ford Zephyr|Ford Zephyr]]<br />[[w:Ford Zodiac|Ford Zodiac]]<br />[[w:Ford Taunus P3|Ford Taunus P3]]<br />[[w:Ford Taunus P5|Ford Taunus (P5) 17M]]<br />[[w:Ford P7|Ford (Taunus P7) 17M/20M]]<br />[[w:Ford Granada (Europe)#Mark I (1972–1977)|Ford Granada]]<br />[[w:Ford Fairmont (Australia)#South Africa|Ford Fairmont/Fairmont GT]] (XW, XY)<br />[[w:Ford Ranchero|Ford Ranchero]] ([[w:Ford Falcon (Australia)#Falcon utility|Falcon Ute-based]]) (XT, XW, XY, XA, XB)<br />[[w:Ford Fairlane (Australia)#Second generation|Ford Fairlane (Australia)]]<br />[[w:Ford Escort (Europe)|Ford Escort/XR3/XR3i]]<br />[[w:Ford Bantam|Ford Bantam]]<br />[[w:Ford Transit#First generation (1965)|Ford Transit]] | Ford first began production in South Africa in 1924 in a former wool store on Grahamstown Road in Port Elizabeth. Ford then moved to a larger location on Harrower Road in October 1930. In 1948, Ford moved again to a plant in Neave Township, Port Elizabeth. Struandale Assembly opened in 1974. Ford ended vehicle production in Port Elizabeth in December 1985, moving all vehicle production to SAMCOR's Silverton plant that had come from Sigma Motor Corp., the other partner in the [[w:SAMCOR|SAMCOR]] merger. |- valign="top" | | style="text-align:left;"| [[w:Ford Sollers|Ford Sollers]] Naberezhny Chelny Assembly Plant | style="text-align:left;"| [[w:Naberezhny Chelny|Naberezhny Chelny]] | style="text-align:left;"| [[w:Russia|Russia]] | style="text-align:center;"| Closed (2019), JV with 50% owned by Sollers | style="text-align:left;"| [[w:Ford EcoSport#Second generation (B515; 2012)|Ford EcoSport]]<br /> [[w:Ford Fiesta (sixth generation)|Ford Fiesta]] | Became part of the 50/50 Ford Sollers joint venture in 2011. Closed in 2019 when Ford discontinued its passenger vehicle portfolio in Russia. Ford Sollers was dissolved in 2022. |- valign="top" | | style="text-align:left;"| [[w:Ford Sollers|Ford Sollers]] St. Petersburg Assembly Plant, previously [[w:Ford Motor Company ZAO|Ford Motor Company ZAO]] | style="text-align:left;"| [[w:Vsevolozhsk|Vsevolozhsk]], [[w:Leningrad Oblast|Leningrad Oblast]] | style="text-align:left;"| [[w:Russia|Russia]] | style="text-align:center;"| Closed (2019), JV with 50% owned by Sollers | style="text-align:left;"| [[w:Ford Focus|Ford Focus]]<br /> [[w:Ford Mondeo|Ford Mondeo]] | Opened as a 100%-owned Ford plant in 2002 building the Focus. Mondeo was added in 2009. Became part of the 50/50 Ford Sollers joint venture in 2011. Closed in 2019 when Ford discontinued its passenger vehicle portfolio in Russia. Ford Sollers was dissolved in 2022. |- valign="top" | | style="text-align:left;"| [[w:Ford Sollers|Ford Sollers]] Yelabuga Assembly Plant | style="text-align:left;"| [[w:Yelabuga|Yelabuga]] | style="text-align:left;"| [[w:Russia|Russia]] | style="text-align:center;"| Sold (2022). Became part of the 50/50 Ford Sollers joint venture in 2011. Restructured & renamed Sollers Ford in 2020 after Sollers increased its stake to 51% in 2019 with Ford owning 49%. Production suspended in March 2022. Ford Sollers was dissolved in October 2022 when Ford sold its remaining 49% stake and exited the Russian market. | style="text-align:left;"| [[w:Ford Transit#Fourth generation (2014)|Ford Transit]] | Previously: [[w:Ford Explorer#Fifth generation (U502; 2011)|Ford Explorer]]<br />[[w:Ford Galaxy#Second generation (2006)|Ford Galaxy]]<br />[[w:Ford Kuga#Second generation (C520; 2012)|Ford Kuga]]<br />[[w:Ford S-Max#First generation (2006)|Ford S-Max]]<br />[[w:Ford Transit Custom#First generation (2012)|Ford Transit Custom]]<br />[[w:Ford Tourneo Custom#First generation (2012)|Ford Tourneo Custom]]<br />[[w:Ford Transit#Third generation (2000)|Ford Transit]] |- valign="top" | | style="text-align:left;"| [[w:Ford Sollers|Ford Sollers]] Yelabuga Engine Plant | style="text-align:left;"| [[w:Yelabuga|Yelabuga]] | style="text-align:left;"| [[w:Russia|Russia]] | style="text-align:center;"| Closed (2019), JV with 50% owned by Sollers | style="text-align:left;"| [[w:Ford Sigma engine|Ford 1.6L Duratec I4]] | Opened as part of the 50/50 Ford Sollers joint venture in 2015. Closed in 2019 when Ford discontinued its passenger vehicle portfolio in Russia. Ford Sollers was dissolved in 2022. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Union|Ford Union]] | style="text-align:left;"| [[w:Apčak|Obchuk]] | style="text-align:left;"| [[w:Belarus|Belarus]] | style="text-align:center;"| Closed (2000) | [[w:Ford Escort (Europe)#Sixth generation (1995–2002)|Ford Escort, Escort Van]]<br />[[w:Ford Transit|Ford Transit]] | Ford Union was a joint venture which was 51% owned by Ford, 23% owned by distributor Lada-OMC, & 26% owned by the Belarus government. Production began in 1997. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford-Vairogs|Ford-Vairogs]] | style="text-align:left;"| [[w:Riga|Riga]] | style="text-align:left;"| [[w:Latvia|Latvia]] | style="text-align:center;"| Closed (1940). Nationalized following Soviet invasion & takeover of Latvia. | [[w:Ford Prefect#E93A (1938–49)|Ford-Vairogs Junior]]<br />[[w:Ford Taunus G93A#Ford Taunus G93A (1939–1942)|Ford-Vairogs Taunus]]<br />[[w:1937 Ford|Ford-Vairogs V8 Standard]]<br />[[w:1937 Ford|Ford-Vairogs V8 De Luxe]]<br />Ford-Vairogs V8 3-ton trucks<br />Ford-Vairogs buses | Produced vehicles under license from Ford's Copenhagen, Denmark division. Production began in 1937. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Fremantle Assembly Plant | style="text-align:left;"| [[w:North Fremantle, Western Australia|North Fremantle, Western Australia]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 1987 | style="text-align:left;"| [[w:Ford Model A (1927–1931)| Ford Model A]] <br /> [[w:1932 Ford|1932 Ford]] <br /> [[w:Ford Model 48|Ford Model 48]]<br>[[w:1937 Ford|1937 Ford]]<br>[[w:Ford Anglia|Ford Anglia]]<br>[[w:Ford Prefect|Ford Prefect]] <br>Ford trucks <br> Ford tractors | style="text-align:left;"| Located at 130 Stirling Highway. Plant opened in March 1930. In the 1970’s and 1980’s the factory was assembling tractors and rectifying vehicles delivered from Geelong in Victoria. The factory was also used as a depot for spare parts for Ford dealerships. Later used by Matilda Bay Brewing Company from 1988-2013 though beer production ended in 2007. |- valign="top" | | style="text-align:left;"| Geelong Assembly | style="text-align:left;"| [[w:Norlane, Victoria|Norlane, Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:Ford Model Y|Ford Model Y]]<br />[[w:Ford Model C Ten|Ford Model C Ten]]<br />[[w:1932 Ford|1932-1934 Ford]]<br />[[w:Ford Model 48|Ford Model 48/Model 68]]<br />[[w:1937 Ford|1937-1940 Ford]]<br />[[w:Mercury Eight|Mercury Eight]] (through 1948)<br />[[w:Ford Prefect|Ford Prefect]]<br />[[w:Ford Anglia|Ford Anglia]]<br />[[w:1941 Ford#Australian production|1941-1942 & 1946-1948 Ford]]<br />[[w:Ford Pilot|Ford Pilot]]<br />[[w:Ford Consul|Ford Consul]]<br />[[w:Ford Zephyr|Ford Zephyr]]<br />[[w:Ford Zodiac|Ford Zodiac]]<br />[[w:1949 Ford|1949-1951 Ford Custom Fordor/Coupe Utility/Deluxe Coupe Utility]]<br />[[w:1952 Ford|1952-1954 Ford Customline sedan/Mainline Coupe Utility]]<br />[[w:1955 Ford|1955-1956 Ford Customline sedan/Mainline Coupe Utility]]<br />[[w:1957 Ford|1957-1959 Ford Custom 300/Fairlane 500/Ranch Wagon]]<br />[[w:Ford F-Series|Ford Freighter/F-Series]] | Production began in 1925 in a former wool storage warehouse in Geelong before moving to a new plant in the Geelong suburb that later became known as Norlane. Vehicle production later moved to Broadmeadows plant that opened in 1959. |- valign="top" | | style="text-align:left;"| Geelong Aluminum Casting | style="text-align:left;"| [[w:Norlane, Victoria|Norlane, Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 2016 | style="text-align:left;"| Aluminum cylinder heads, intake manifolds, and structural oil pans | Opened 1986. |- valign="top" | | style="text-align:left;"| Geelong Iron Casting | style="text-align:left;"| [[w:Norlane, Victoria|Norlane, Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 2016 | style="text-align:left;"| I6 engine blocks, camshafts, crankshafts, exhaust manifolds, bearing caps, disc brake rotors and flywheels | Opened 1972. |- valign="top" | | style="text-align:left;"| Geelong Chassis Components | style="text-align:left;"| [[w:Norlane, Victoria|Norlane, Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 2004 | style="text-align:left;"| Parts - Machine cylinder heads, suspension arms and brake rotors | Opened 1983. |- valign="top" | | style="text-align:left;"| Geelong Engine | style="text-align:left;"| [[w:Norlane, Victoria|Norlane, Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 2016 | style="text-align:left;"| [[w:Ford 335 engine#302 and 351 Cleveland (Australia)|Ford 302 & 351 Cleveland V8]]<br />[[w:Ford straight-six engine#Ford Australia|Ford Australia Falcon I6]]<br />[[w:Ford Barra engine#Inline 6|Ford Australia Barra I6]] | Opened 1926. |- valign="top" | | style="text-align:left;"| Geelong Stamping | style="text-align:left;"| [[w:Norlane, Victoria|Norlane, Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 2016 | style="text-align:left;"| Ford Falcon/Futura/Fairmont body panels <br /> Ford Falcon Utility body panels <br /> Ford Territory body panels | Opened 1926. Previously: Ford Fairlane body panels <br /> Ford LTD body panels <br /> Ford Capri body panels <br /> Ford Cortina body panels <br /> Welded subassemblies and steel press tools |- valign="top" | style="text-align:center;"| B (EU) [when following G] | style="text-align:left;"| [[w:Genk Body & Assembly|Genk Body & Assembly]] | style="text-align:left;"| [[w:Genk|Genk]] | style="text-align:left;"| [[w:Belgium|Belgium]] | style="text-align:center;"| Closed in 2014 | style="text-align:left;"| [[w:Ford Mondeo|Ford Mondeo]]<br /> [[w:Ford S-Max|Ford S-MAX]]<br /> [[w:Ford Galaxy|Ford Galaxy]] | Opened in 1964.<br /> Previously: [[w:Ford Taunus P4|Ford Taunus P4]]<br />[[w:Ford Taunus P5|Ford Taunus P5]]<br />[[w:Ford Taunus P6|Ford Taunus P6]]<br />[[w:Ford P7|Ford Taunus P7]]<br />[[w:Ford Taunus TC|Ford Taunus TC]]<br />[[w:Ford Anglia#Anglia Torino 105E (1965–67)|Ford Anglia Torino]]<br />[[w:Ford Escort (Europe)#First generation (1967–1975)|Ford Escort]]<br />[[w:Ford Sierra|Ford Sierra]]<br />[[w:Ford Transit|Ford Transit]] |- valign="top" | | style="text-align:left;"| GETRAG FORD Transmissions Bordeaux Transaxle Plant | style="text-align:left;"| [[w:Blanquefort, Gironde|Blanquefort]] | style="text-align:left;"| [[w:France|France]] | style="text-align:center;"| Sold to Getrag/Magna Powertrain in 2021 | style="text-align:left;"| [[w:Ford BC-series transmission|Ford BC4/BC5 transmission]]<br />[[w:Ford BC-series transmission#iB5 Version|Ford iB5 transmission (5MTT170/5MTT200)]]<br />[[w:Ford Durashift#Durashift EST|Ford Durashift-EST(iB5-ASM/5MTT170-ASM)]]<br />MX65 transmission<br />CTX [[w:Continuously variable transmission|CVT]] | Opened in 1976. Became a joint venture with [[w:Getrag|Getrag]] in 2001. Joint Venture: 50% Ford Motor Company / 50% Getrag Transmission. Joint venture dissolved in 2021 and this plant was kept by Getrag, which was taken over by [[w:Magna Powertrain|Magna Powertrain]] in 2015. |- valign="top" | | style="text-align:left;"| Green Island Plant | style="text-align:left;"| [[w:Green Island, New York|Green Island, New York]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1989) | style="text-align:left;"| Radiators, springs | style="text-align:left;"| 1922-1989, demolished in 2004 |- valign="top" | style="text-align:center;"| B (EU) (for Fords) [when following B],<br> X (for Jaguar w/2.5L),<br> W (for Jaguar w/3.0L),<br> H (for Land Rover) | style="text-align:left;"| [[w:Halewood Body & Assembly|Halewood Body & Assembly]] | style="text-align:left;"| [[w:Halewood|Halewood]], [[w:Merseyside|Merseyside]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Sold (2008) | style="text-align:left;"| [[w:Ford Anglia|Ford Anglia]], [[w:Ford Corsair|Ford Corsair]], [[w:Ford Escort (Europe)|Ford Escort]], [[w:Ford Capri|Ford Capri]], [[w:Ford Orion|Ford Orion]], [[w:Jaguar X-Type|Jaguar X-Type]], [[w:Land Rover Freelander#Freelander 2 (L359; 2006–2015)|Land Rover Freelander 2 / LR2]] | style="text-align:left;"| 1963–2008. Ford assembly ended in July 2000, then transferred to Jaguar/Land Rover. Sold to [[w:Tata Motors|Tata Motors]] with Jaguar/Land Rover business. The van variant of the Escort remained in production in a facility located behind the now Jaguar plant at Halewood until October 2002. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Hamilton Plant | style="text-align:left;"| [[w:Hamilton, Ohio|Hamilton, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1950) | style="text-align:left;"| [[w:Fordson|Fordson]] tractors/tractor components<br /> Wheels for cars like Model T & Model A<br />Locks and lock parts<br />Radius rods<br />Running Boards | style="text-align:left;"| Opened in 1920. Factory used hydroelectric power. Switched from tractors to auto parts less than 6 months after production began. Also made parts for bomber engines during World War II. Plant closed in 1950. Sold to Bendix Aviation Corporation in 1951. Bendix closed the plant in 1962 and sold it in 1963 to Ward Manufacturing Co., which made camping trailers there. In 1975, it was sold to Chem-Dyne Corp., which used it for chemical waste storage & disposal. Demolished around 1981 as part of a Federal Superfund cleanup of the site. |- valign="top" | | style="text-align:left;"| Heimdalsgade Assembly | style="text-align:left;"| [[w:Heimdalsgade|Heimdalsgade street]], [[w:Nørrebro|Nørrebro district]], [[w:Copenhagen|Copenhagen]] | style="text-align:left;"| [[w:Denmark|Denmark]] | style="text-align:center;"| Closed (1924) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| 1919–1924. Was replaced by, at the time, Europe's most modern Ford-plant, "Sydhavnen Assembly". |- valign="top" | style="text-align:center;"| HP/HM/H (NA) | style="text-align:left;"| [[w:Highland Park Ford Plant|Highland Park Plant]] | style="text-align:left;"| [[w:Highland Park, Michigan|Highland Park, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Sold (1981) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />Ford trucks (pre-1948)<br />[[w:Ford F-Series|Ford F-Series]] (1948-1950, 1951-1956)<br /> [[w:Ford F-Series (medium-duty truck)#Second generation (1953–1956)|Ford F-Series (medium-duty truck)]] (1953, 1956)<br />[[w:Fordson|Fordson]] tractors and tractor components | style="text-align:left;"| Located at 91 Manchester Avenue (at Woodward Avenue). Ford Motor Company's third American factory. Was also Ford's world headquarters from 1910-1927. First automobile factory in history to utilize a moving assembly line (implemented October 7, 1913). Model T production from 1910 to 1927. Car production then shifted to the Rouge complex in Dearborn. Continued to make automotive trim parts after 1927. Also made [[w:M4 Sherman#M4A3|M4A3 Sherman tanks]], M34 and M34A1 Gun Mounts for Sherman Tanks, M10A1 "Wolverine" Tank Destroyers, M7 gun directors, Squad Tents for the Army, and parts for Pratt & Whitney R-2800 radial aircraft engines made by Ford at the Rouge complex during World War II. Became Ford's main tractor plant in 1947. One of the first 2 Ford plants to build the <br> F-Series, beginning November 27, 1947 (other was Richmond, California). F-Series truck production ended in 1957. Production of trim parts ended in the 1960s. Tractor production ended in 1974. Ford sold the Highland Park plant in October 1981, but continues to lease space there for storage. In October 2012, Ford moved its records storage out of Highland Park (Bldg. AA). Some of the site has been demolished and replaced by a mall called Model T Plaza but multiple buildings of the complex are still standing. A Forman Mills store opened in Bldg. JJ. Listed on the National Register of Historic Places in 1973. Designated a National Historic Landmark in 1978. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Hobart Assembly Plant | style="text-align:left;"|[[w:Hobart, Tasmania|Hobart, Tasmania]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br /> [[w:Ford Model A (1927–1931)| Ford Model A]] <br>Ford trucks <br> Ford tractors | style="text-align:left;"| Located on Collins Street. Plant opened in December 1925. |- valign="top" | style="text-align:center;"| K (AU) | style="text-align:left;"| Homebush Assembly Plant | style="text-align:left;"| [[w:Homebush West, New South Wales|Homebush (Sydney), NSW]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 1994 | style="text-align:left;"| [[w:Ford Model 48|Ford Model 48]]<br>[[w:Ford Consul|Ford Consul]]<br>[[w:Ford Zephyr|Ford Zephyr]]<br>[[w:Ford Cortina|Ford Cortina]]<br> [[w:Ford Escort (Europe)|Ford Escort Mk. 1 & 2]]<br /> [[w:Ford Capri#Ford Capri Mk I (1969–1974)|Ford Capri]] Mk.1<br />[[w:Ford Fairlane (Australia)#Intermediate Fairlanes (1962–1965)|Ford Fairlane (1962-1964)]]<br />[[w:Ford Galaxie|Ford Galaxie]] (1965-1968)<br />[[w:Ford Laser|Ford Laser]]<br /> [[w:Ford Meteor|Ford Meteor]]<br />[[w:Ford Transit#First generation (1965)|Ford Transit]]<br />[[w:Ford Mustang (first generation)|Ford Mustang (conversion to right hand drive)]] | style="text-align:left;"| Ford’s first factory in New South Wales opened in 1925 in the Sandown area of Sydney making the [[w:Ford Model T|Ford Model T]] and later the [[w:Ford Model A (1927–1931)| Ford Model A]] and the [[w:1932 Ford|1932 Ford]]. This plant was replaced by the Homebush plant which opened in March 1936 and later closed in September 1994. |- valign="top" | | style="text-align:left;"| [[w:List of Hyundai Motor Company manufacturing facilities#Ulsan Plant|Hyundai Ulsan Plant]] | style="text-align:left;"| [[w:Ulsan|Ulsan]] | style="text-align:left;"| [[w:South Korea]|South Korea]] | style="text-align:center;"| Ford production ended in 1985. Licensing agreement with Ford ended. | style="text-align:left;"| [[w:Ford Cortina|Ford Cortina]] Mk2-Mk5<br />[[w:Ford P7|Ford P7]]<br />[[w:Ford Granada (Europe)#Mark II (1977–1985)|Ford Granada MkII]]<br />[[w:Ford D series|Ford D-750/D-800]]<br />[[w:Ford R series|Ford R-182]] | [[w:Hyundai Motor|Hyundai Motor]] began by producing Ford models under license. Replaced by self-developed Hyundai models. |- valign="top" | J (NA) | style="text-align:left;"| IMMSA | style="text-align:left;"| [[w:Monterrey, Nuevo Leon|Monterrey, Nuevo Leon]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| Closed (2000). Agreement with Ford ended. | style="text-align:left;"| Ford M450 motorhome chassis | Replaced by Detroit Chassis LLC plant. |- valign="top" | | style="text-align:left;"| Indianapolis Steering Systems Plant | style="text-align:left;"| [[w:Indianapolis|Indianapolis, IN]] | style="text-align:left;"| U.S. | style="text-align:center;"|1957–2011, demolished in 2017 | style="text-align:left;"| Steering columns, Steering gears | style="text-align:left;"| Located at 6900 English Ave. Spun off as part of [[w:Visteon|Visteon]] in 2000. Taken back by Ford in 2005 as part of [[w:Automotive Components Holdings|Automotive Components Holdings]] LLC. Closed in 2011. Demolished in 2017. |- valign="top" | | style="text-align:left;"| Industrias Chilenas de Automotores SA (Chilemotores) | style="text-align:left;"| [[w:Arica|Arica]] | style="text-align:left;"| [[w:Chile|Chile]] | style="text-align:center;" | Closed c.1969 | [[w:Ford Falcon (North America)|Ford Falcon]] | Opened 1964. Was a 50/50 joint venture between Ford and Bolocco & Cia. Replaced by Ford's 100% owned Casablanca, Chile plant.<ref name=":2">{{Cite web |last=S.A.P |first=El Mercurio |date=2020-04-15 |title=Infografía: Conoce la historia de la otrora productiva industria automotriz chilena {{!}} Emol.com |url=https://www.emol.com/noticias/Autos/2020/04/15/983059/infiografia-historia-industria-automotriz-chile.html |access-date=2022-11-05 |website=Emol |language=Spanish}}</ref> |- valign="top" | | style="text-align:left;"| [[w:Inokom|Inokom]] | style="text-align:left;"| [[w:Kulim, Kedah|Kulim, Kedah]] | style="text-align:left;"| [[w:Malaysia|Malaysia]] | style="text-align:center;"| Ford production ended 2016 | [[w:Ford Transit#Facelift (2006)|Ford Transit]] | Plant owned by Inokom |- valign="top" | style="text-align:center;"| D (SA) | style="text-align:left;"| [[w:Ford Brasil|Ipiranga Assembly]] | style="text-align:left;"| [[w:Ipiranga (district of São Paulo)|Ipiranga, São Paulo]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Closed (2000) | CKD, Ford tractors, [[w:Ford F-Series|Ford F-Series]], [[w:Ford Galaxie#Brazilian production|Ford Galaxie]], [[w:Ford Landau|Ford Landau]], [[w:Ford LTD (Americas)#Brazil|Ford LTD]], [[w:Ford Cargo|Ford Cargo]] Trucks, Ford B-1618 & B-1621 bus chassis, Ford B12000 school bus chassis, [[w:Volkswagen Delivery|VW Delivery]], [[w:Volkswagen Worker|VW Worker]], [[w:Volkswagen L80|VW L80]], [[w:Volkswagen Volksbus|VW Volksbus 16.180 CO bus chassis]] | Part of Autolatina joint venture with VW from 1987 to 1996. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Brasil|Ipiranga Engine]] | style="text-align:left;"| [[w:Ipiranga (district of São Paulo)|Ipiranga, São Paulo]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Closed | [[w:Ford Y-block engine#272|Ford 272 Y-block V8]], [[w:Ford Y-block engine#292|Ford 292 Y-block V8]] | |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Otosan#History|Istanbul Assembly]] | style="text-align:left;"| [[w:Tophane|Tophane]], [[w:Istanbul|Istanbul]] | style="text-align:left;"| [[w:Turkey|Turkey]] | style="text-align:center;"| Production stopped in 1934 as a result of the [[w:Great Depression|Great Depression]]. Then handled spare parts & service for existing cars. Closed entirely in 1944. | style="text-align:left;"| [[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]] | Opened 1929. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Browns Lane plant|Jaguar Browns Lane plant]] | style="text-align:left;"| [[w:Coventry|Coventry]], [[w:West Midlands (county)|West Midlands]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (2007) | style="text-align:left;"| [[w:Jaguar XJ|Jaguar XJ]]<br />[[w:Jaguar XJ-S|Jaguar XJ-S]]<br />[[w:Jaguar XK (X100)|Jaguar XK8/XKR (X100)]]<br />[[w:Jaguar XJ (XJ40)#Daimler/Vanden Plas|Daimler six-cylinder sedan (XJ40)]]<br />[[w:Daimler Six|Daimler Six]] (X300)<br />[[w:Daimler Sovereign#Daimler Double-Six (1972–1992, 1993–1997)|Daimler Double Six]]<br />[[w:Jaguar XJ (X308)#Daimler/Vanden Plas|Daimler Eight/Super V8]] (X308)<br />[[w:Daimler Super Eight|Daimler Super Eight]] (X350/X356)<br /> [[w:Daimler DS420|Daimler DS420]] | style="text-align:left;"| |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Castle Bromwich Assembly|Jaguar Castle Bromwich Assembly]] | style="text-align:left;"| [[w:Castle Bromwich|Castle Bromwich]], [[w:West Midlands (county)|West Midlands]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Sold (2008) | style="text-align:left;"| [[w:Jaguar S-Type (1999)|Jaguar S-Type]]<br />[[w:Jaguar XF (X250)|Jaguar XF (X250)]]<br />[[w:Jaguar XJ (X350)|Jaguar XJ (X356/X358)]]<br />[[w:Jaguar XJ (X351)|Jaguar XJ (X351)]]<br />[[w:Jaguar XK (X150)|Jaguar XK (X150)]]<br />[[w:Daimler Super Eight|Daimler Super Eight]] <br />Painted bodies for models made at Browns Lane | style="text-align:left;"| Sold to [[w:Tata Motors|Tata Motors]] in 2008 as part of sale of Jaguar Land Rover. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Jaguar Radford Engine | style="text-align:left;"| [[w:Radford, Coventry|Radford]], [[w:West Midlands (county)|West Midlands]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (1997) | style="text-align:left;"| [[w:Jaguar AJ6 engine|Jaguar AJ6 engine]]<br />[[w:Jaguar V12 engine|Jaguar V12 engine]]<br />Axles | style="text-align:left;"| Originally a [[w:Daimler Company|Daimler]] site. Daimler had built buses in Radford. Jaguar took over Daimler in 1960. |- valign="top" | style="text-align:center;"| K (EU) [when following G] (for Ford), <br> M (NA) (for Merkur) | style="text-align:left;"| [[w:Karmann|Karmann Rheine Assembly]] | style="text-align:left;"| [[w:Rheine|Rheine]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| Closed in 2008 (Ford production ended in 1997) | [[w:Ford Escort (Europe)|Ford Escort Convertible]]<br />[[w:Ford Escort RS Cosworth|Ford Escort RS Cosworth]]<br />[[w:Merkur XR4Ti|Merkur XR4Ti]] (1985-1989) | Plant owned by [[w:Karmann|Karmann]] |- valign="top" | | style="text-align:left;"| Kechnec Transmission (Getrag Ford Transmissions) | style="text-align:left;"| [[w:Kechnec|Kechnec]], [[w:Košice Region|Košice Region]] | style="text-align:left;"| [[w:Slovakia|Slovakia]] | style="text-align:center;"| Sold to [[w:Getrag|Getrag]]/[[w:Magna Powertrain|Magna Powertrain]] in 2019 | style="text-align:left;"| Ford MPS6 transmissions<br /> Ford SPS6 transmissions | style="text-align:left;"| Ford/Getrag "Powershift" dual clutch transmission. Originally owned by Getrag Ford Transmissions - a joint venture 50% owned by Ford Motor Company & 50% owned by Getrag Transmission. Plant sold to Getrag in 2019. Getrag Ford Transmissions joint venture was dissolved in 2021. Getrag was previously taken over by [[w:Magna Powertrain|Magna Powertrain]] in 2015. |- valign="top" | style="text-align:center;"| 6 (NA) | style="text-align:left;"| [[w:Kia Design and Manufacturing Facilities#Sohari Plant|Kia Sohari Plant]] | style="text-align:left;"| [[w:Gwangmyeong|Gwangmyeong]] | style="text-align:left;"| [[w:South Korea|South Korea]] | style="text-align:center;"| Ford production ended (2000) | style="text-align:left;"| [[w:Ford Festiva|Ford Festiva]] (US: 1988-1993)<br />[[w:Ford Aspire|Ford Aspire]] (US: 1994-1997) | style="text-align:left;"| Plant owned by Kia. |- valign="top" | style="text-align:left;"| | style="text-align:left;"| [[w:Ford Motor Argentina|La Boca Assembly]] | style="text-align:left;"| [[w:La Boca|La Boca]], [[w:Buenos Aires|Buenos Aires]] | style="text-align:left;"| [[w:Argentina|Argentina]] | style="text-align:center;"| Closed (1961) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />[[w:Ford F-Series (third generation)|Ford F-Series (Gen 3)]]<br />[[w:Ford B series#Third generation (1957–1960)|Ford B-600 bus]]<br />[[w:Ford F-Series (fourth generation)#Argentinian-made 1961–1968|Ford F-Series (Early Gen 4)]] | style="text-align:left;"| Replaced by the [[w:Pacheco Stamping and Assembly|General Pacheco]] plant in 1961. |- valign="top" | style="text-align:center;"| F | style="text-align:left;"| La Villa Assembly | style="text-align:left;"| La Villa, [[w:Mexico City|Mexico City]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| Closed (1984) | style="text-align:left;"| [[w:1932 Ford|1932 Ford]]<br />[[w:Ford Anglia|Ford Anglia]]<br />[[w:Ford Consul|Ford Consul]]<br />[[w:Ford Taunus|Ford Taunus]]<br />[[w:Ford Falcon (North America)|Ford Falcon]]<br />[[w:Ford Maverick (1970–1977)|Ford Falcon Maverick]]<br />[[w:Ford Fairmont|Ford Fairmont/Elite II]]<br />[[w:Ford Galaxie|Ford Galaxie]]<br />[[w:Ford LTD (Americas)|Ford LTD]]<br />[[w:Ford Thunderbird|Ford Thunderbird]]<br />[[w:Ford Mustang (first generation)|Ford Mustang]]<br />[[w:Ford Mustang (second generation)|Ford Mustang II]] | style="text-align:left;"| Replaced San Lazaro plant. Opened 1932.<ref>{{cite web|url=http://www.fundinguniverse.com/company-histories/ford-motor-company-s-a-de-c-v-history/|title=History of Ford Motor Company, S.A. de C.V. – FundingUniverse|website=www.fundinguniverse.com}}</ref> Is now the Plaza Tepeyac shopping center. |- valign="top" | style="text-align:center;"| A | style="text-align:left;"| [[w:Solihull plant|Land Rover Solihull Assembly]] | style="text-align:left;"| [[w:Solihull|Solihull]], [[w:West Midlands (county)|West Midlands]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Sold (2008) | style="text-align:left;"| [[w:Land Rover Defender|Land Rover Defender (L316)]]<br />[[w:Land Rover Discovery#First generation|Land Rover Discovery]]<br />[[w:Land Rover Freelander#First generation (L314; 1997–2006)|Land Rover Freelander]]<br />[[w:Land Rover Discovery#Discovery 3 / LR3 (2004–2009)|Land Rover Discovery 3/LR3]]<br />[[w:Land Rover Discovery#Discovery 4 / LR4 (2009–2016)|Land Rover Discovery 4/LR4]]<br />[[w:Range Rover (P38A)|Land Rover Range Rover (P38A)]]<br /> [[w:Range Rover (L322)|Land Rover Range Rover (L322)]]<br /> [[w:Range Rover Sport#First generation (L320; 2005–2013)|Land Rover Range Rover Sport]] | style="text-align:left;"| Sold to [[w:Tata Motors|Tata Motors]] in 2008 as part of sale of Jaguar Land Rover. |- valign="top" | style="text-align:center;"| C (EU) [when following B] | style="text-align:left;"| Langley Assembly | style="text-align:left;"| [[w:Langley, Berkshire|Langley, Slough]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Sold/closed (1986/1997) | style="text-align:left;"| [[w:Ford Transit|Ford Transit]] and [[w:Ford A series|Ford A-series]] vans; [[w:Ford D Series|Ford D-Series]] and [[w:Ford Cargo|Ford Cargo]] trucks; [[w:Ford R series|Ford R-Series]] bus/coach chassis | style="text-align:left;"| 1949–1986. Former Hawker aircraft factory. Sold to Iveco, closed 1997. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Largs Bay Assembly Plant | style="text-align:left;"| [[w:Largs Bay, South Australia|Largs Bay (Port Adelaide Enfield), South Australia]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 1965 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] <br /> [[w:Ford Model A (1927–1931)|Ford Model A]] <br /> [[w:1932 Ford|1932 Ford]] <br /> [[w:Ford Model 48|Ford Model 48]]<br>[[w:1937 Ford|1937 Ford]]<br>[[w:Ford Zephyr|Ford Zephyr]]<br>[[w:Ford Customline|Ford Customline]] | style="text-align:left;"| Plant opened in 1926. Was at the corner of Victoria Rd and Jetty Rd. Later used by James Hardie to manufacture asbestos fiber sheeting. Is now Rapid Haulage at 214 Victoria Road. |- valign="top" | | style="text-align:left;"| Leamington Foundry | style="text-align:left;"| [[w:Leamington Spa|Leamington Spa]], [[w:Warwickshire|Warwickshire]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (2007) | style="text-align:left;"| Castings including brake drums and discs, differential gear cases, flywheels, hubs and exhaust manifolds | style="text-align:left;"| Opened in 1940, closed in July 2007. Demolished 2012. |- valign="top" | style="text-align:center;"| LP (NA) | style="text-align:left;"| [[w:Lincoln Motor Company Plant|Lincoln Motor Company Plant]] | style="text-align:left;"| [[w:Detroit, Michigan|Detroit, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1952); Most buildings demolished in 2002-2003 | style="text-align:left;"| [[w:Lincoln L series|Lincoln L series]]<br />[[w:Lincoln K series|Lincoln K series]]<br />[[w:Lincoln Custom|Lincoln Custom]]<br />[[w:Lincoln-Zephyr|Lincoln-Zephyr]]<br />[[w:Lincoln EL-series|Lincoln EL-series]] (1950-1951)<br />[[w:Lincoln Cosmopolitan|Lincoln Cosmopolitan]] (1950-1952)<br /> [[w:Lincoln Capri#First generation (1952–1955))|Lincoln Capri]] (1952 only)<br />[[w:Lincoln Continental#First generation (1940–1942, 1946–1948)|Lincoln Continental (retroactively Mark I)]] <br /> [[w:Mercury Monterey|Mercury Monterey]] (1952) | Located at 6200 West Warren Avenue at corner of Livernois. Built before Lincoln was part of Ford Motor Co. Ford kept some offices here after production ended in 1952. Sold to Detroit Edison in 1955. Eventually replaced by Wixom Assembly plant. Mostly demolished in 2002-2003. |- valign="top" | style="text-align:center;"| J (NA) | style="text-align:left;"| [[w:Los Angeles Assembly|Los Angeles Assembly]] (Los Angeles Assembly plant #2) | style="text-align:left;"| [[w:Pico Rivera, California|Pico Rivera, California]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1957 to 1980 | style="text-align:left;"| | style="text-align:left;"|Located at 8900 East Washington Blvd. and Rosemead Blvd. Sold to Northrop Aircraft Company in 1982 for B-2 Stealth Bomber development. Demolished 2001. Now the Pico Rivera Towne Center, an open-air shopping mall. Plant only operated one shift due to California Air Quality restrictions. First vehicles produced were the Edsel [[w:Edsel Corsair|Corsair]] (1958) & [[w:Edsel Citation|Citation]] (1958) and Mercurys. Later vehicles were [[w:Ford 300|Ford 300]] (1963), [[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1964-1965, 1968), [[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1960-1961),[[w:Ford Galaxie|Galaxie]] (1959-1971, 1973), [[w:Ford LTD (Americas)|LTD]] (1967-1976, 1978, 1980), [[w:Mercury Monterey|Mercury Monterey]] (1960-1962), [[w:Mercury Park Lane|Mercury Park Lane]] (1958), [[w:Mercury S-55|Mercury S-55]], [[w:Mercury Marauder|Mercury Marauder]], [[w:Mercury Meteor#Full-size (1961)|Mercury Meteor]], [[w:Mercury Marquis|Mercury Marquis]], [[w:Mercury Montclair|Mercury Montclair]] (1958-1960, 1967), [[w:Mercury Turnpike Cruiser|Mercury Turnpike Cruiser]] (1958), and [[w:Ford Thunderbird|Ford Thunderbird]] (1968-1979). Also, [[w:Ford Falcon (North America)|Ford Falcon]], [[w:Mercury Comet|Mercury Comet]] (1962-1967), [[w:Ford LTD II|Ford LTD II]], & [[w:Mercury Cougar#Fourth generation (1977–1979)|Mercury Cougar]]. Thunderbird production ended after the 1979 model year. The last vehicle produced was the Panther platform [[w:Ford LTD (Americas)#Third generation (1979–1982)|Ford LTD]] on January 26, 1980. Built 1,419,498 vehicles. |- valign="top" | style="text-align:center;"| LA (early)/<br>LB/L (NA) | style="text-align:left;"| [[w:Long Beach Assembly|Long Beach Assembly]] | style="text-align:left;"| [[w:Long Beach, California|Long Beach, California]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1930 to 1959 | style="text-align:left;"| (1930-32, 1934-59):<br> [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]],<br> [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]],<br> [[w:1957 Ford|1957 Ford]] (1957-1959), [[w:Ford Galaxie|Ford Galaxie]] (1959),<br> [[w:Ford F-Series|Ford F-Series]] (1951-1958). | style="text-align:left;"| Located at 700 Henry Ford Ave. Ended production March 20, 1959 when the site became unstable due to oil drilling. Production moved to the Los Angeles plant in Pico Rivera. Ford sold the Long Beach plant to the Dallas and Mavis Forwarding Company of South Bend, Indiana on January 28, 1960. It was then sold to the Port of Long Beach in the 1970's. Demolished from 1990-1991. |- valign="top" | style="text-align:center;"| H (NA) | style="text-align:left;"| [[w:Lorain Assembly|Lorain Assembly]] | style="text-align:left;"| [[w:Lorain, Ohio|Lorain, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1958 to 2005 | style="text-align:left;"| [[w:Ford Econoline|Ford Econoline/Club Wagon/E-Series]] (1961-2006) | style="text-align:left;"|Located at 5401 Baumhart Road. Closed December 14, 2005. Produced 15,805,106 vehicles, nearly half of which are Econoline/Club Wagon/<br>E-Series vans. Operations transferred to Avon Lake.<br /> Previously:<br> [[w:Ford Galaxie|Ford Galaxie]] (1959)<br />[[w:Ford Ranchero|Ford Ranchero]] (1959-1965, 1978-1979)<br />[[w:Ford Falcon (North America)|Ford Falcon]] (1960-1965)<br />[[w:Mercury Comet#First generation (1960–1963)|Comet]] (1960-1961)<br />[[w:Mercury Comet|Mercury Comet]] (1962-1969)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane]] (1966-1969)<br />[[w:Ford Torino|Ford Torino]] (1968-1976)<br />[[w:Mercury Montego|Mercury Montego]] (1968-1976)<br />[[w:Mercury Cyclone|Mercury Cyclone]] (1968-1971)<br />[[w:Ford LTD II|Ford LTD II]] (1977-1979)<br />[[w:Ford Thunderbird|Ford Thunderbird]] (1980-1997)<br />[[w:Mercury Cougar#Fourth generation (1977–1979)|Mercury Cougar]] (1977-1979)<br />[[w:Mercury Cougar#Fifth generation (1980–1982)|Mercury Cougar XR-7]] (1980-1982)<br />[[w:Mercury Cougar#Sixth generation (1983–1988)|Mercury Cougar]] (1983-1988)<br />[[w:Mercury Cougar#Seventh generation (1989–1997)|Mercury Cougar]] (1989-1997)<br />[[w:Ford F-Series|Ford F-Series]] (1959-1964)<br />[[w:Ford E-Series#Mercury Econoline|Mercury Econoline pickup]] (1961) <br />[[w:Ford E-Series#Mercury Econoline|Mercury Econoline]] (1966-1967) |- valign="top" | | style="text-align:left;"| [[w:Ford Mack Avenue Plant|Mack Avenue Plant]] | style="text-align:left;"| [[w:Detroit|Detroit, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Ford production: June 1903-October 1904 | style="text-align:left;"| Original [[w:Ford Model A (1903–04)|Ford Model A]] [[w:Ford Model A (1903–04)#Ford Model AC|Ford Model AC]] | style="text-align:left;"| 1903–1904. Ford Motor Company's first factory (rented). Ford began occupying the rented plant in April 1903 but production didn't start until after Ford Motor Co. was incorporated in June 1903. Ford assembled components here that were purchased from other companies including Dodge Bros. Co., which supplied the chassis, engine, transmission, driveshaft, and both axles. A second story was added in late 1903 to provide a paint shop and additional space for storage. Ford relocated to the Piquette Ave. plant in Detroit in Oct. 1904 because they had outgrown the Mack Ave. plant and needed a larger factory space. The Mack Avenue Plant's address was originally 588–592 Mack Avenue when Ford Motor Company occupied the building. Its address became 6520 Mack Avenue after the city of Detroit changed its street numbering system in January 1921. Various other tenants occupied the building after Ford left including the Columbia Motors Co. Columbia Motors also occupied the building diagonally across Mack Ave. (6501 Mack Ave.) which was originally owned by the Aerocar Co., founded by Alexander Malcomson, an early investor in Ford Motor Co. who had a falling out with Henry Ford regarding company direction. After Aerocar went bankrupt in 1907, 6501 Mack Ave. was the first plant of Hudson Motor Car Co. Hudson quickly outgrew the plant and moved a few miles away to a larger plant. The Ford plant building burned down in August 1941. An imprecise replica of the building was built in 1945 and is located at [[w:The Henry Ford|The Henry Ford]]. |- valign="top" | style="text-align:center;"| E (NA) | style="text-align:left;"| [[w:Mahwah Assembly|Mahwah Assembly]] | style="text-align:left;"| [[w:Mahwah, New Jersey|Mahwah, New Jersey]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1955 to 1980. | style="text-align:left;"| Last vehicles produced:<br> [[w:Ford Fairmont|Ford Fairmont]] (1978-1980)<br /> [[w:Mercury Zephyr|Mercury Zephyr]] (1978-1980) | style="text-align:left;"| Located on Orient Blvd. Truck production ended in July 1979. Car production ended in June 1980 and the plant closed. Demolished. Site then used by Sharp Electronics Corp. as a North American headquarters from 1985 until 2016 when former Ford subsidiaries Jaguar Land Rover took over the site for their North American headquarters. Another part of the site is used by retail stores.<br /> Previously:<br> [[w:Ford F-Series|Ford F-Series]] (1955-1958, 1960-1979)<br />[[w:1955 Ford|1955 Ford]]<br />[[w:1957 Ford|1957 Ford]]<br />[[w:Ford Ranchero|Ford Ranchero]] (1957)<br />[[w:Edsel Pacer|Edsel Pacer]] (1958)<br />[[w:Edsel Ranger|Edsel Ranger]] (1958)<br />[[w:Edsel Roundup|Edsel Roundup]] (1958)<br />[[w:Edsel Villager|Edsel Villager]] (1958)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1961)<br />[[w:Ford 300|Ford 300]] (1963)<br />[[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1964, 1966-1967)<br />[[w:Ford Galaxie|Ford Galaxie]] (1959-1970)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1966-1967, 1969, 1971-1972, 1974)<br /> [[w:Mercury Monterey|Mercury Monterey]] (1961-1963) <br /> [[w:Mercury Commuter|Mercury Commuter]] (1962)<br /> [[w:Ford Granada (North America)#First generation (1975–1980)|Ford Granada]] (1975-1980)<br />[[w:Mercury Monarch|Mercury Monarch]] (1975-1980) |- valign="top" | | tyle="text-align:left;"| Manukau Alloy Wheel | style="text-align:left;"| [[w:Manukau|Manukau, Auckland]] | style="text-align:left;"| [[w:New Zealand|New Zealand]] | style="text-align:center;"| Sold (2001) | style="text-align:left;"| Aluminum wheels and cross members | style="text-align:left;"| Established 1981. Sold in 2001 to Argent Metals Technology |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Matford|Matford]] | style="text-align:left;"| [[w:Strasbourg|Strasbourg]] | style="text-align:left;"| [[w:France|France]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Mathis (automobile)|Mathis cars]]<br />Matford V8 cars <br />Matford trucks | Matford was a joint venture 60% owned by Ford and 40% owned by French automaker Mathis. Replaced by Ford's own Poissy plant after Matford was dissolved. |- valign="top" | | style="text-align:left;"| Maumee Stamping | style="text-align:left;"| [[w:Maumee, Ohio|Maumee, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (2007) | style="text-align:left;"| body panels | style="text-align:left;"| Closed in 2007, sold, and reopened as independent stamping plant |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:MÁVAG#Car manufacturing, the MÁVAG-Ford|MAVAG]] | style="text-align:left;"| [[w:Budapest|Budapest]] | style="text-align:left;"| [[w:Hungary|Hungary]] | style="text-align:center;"| Closed (1939) | [[w:Ford Eifel|Ford Eifel]]<br />[[w:1937 Ford|Ford V8]]<br />[[w:de:Ford-Barrel-Nose-Lkw|Ford G917T]] | Opened 1938. Produced under license from Ford Germany. MAVAG was nationalized in 1946. |- valign="top" | style="text-align:center;"| LA (NA) | style="text-align:left;"| [[w:Maywood Assembly|Maywood Assembly]] <ref>{{cite web|url=http://skyscraperpage.com/forum/showthread.php?t=170279&page=955|title=Photo of Lincoln-Mercury Assembly}}</ref> (Los Angeles Assembly plant #1) | style="text-align:left;"| [[w:Maywood, California|Maywood, California]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1948 to 1957 | style="text-align:left;"| [[w:Mercury Eight|Mercury Eight]] (-1951), [[w:Mercury Custom|Mercury Custom]] (1955-1956), [[w:Mercury Medalist|Mercury Medalist]] (1956), [[w:Mercury Montclair|Mercury Montclair]] (1955-1957), [[w:Mercury Monterey|Mercury Monterey]] (1952-1957), [[w:Mercury Turnpike Cruiser|Mercury Turnpike Cruiser]] (1957), [[w:Lincoln EL-series|Lincoln EL-series]] (1950-1951), [[w:Lincoln Cosmopolitan|Lincoln Cosmopolitan]] (1951-1952, 1954), [[w:Lincoln Premiere|Lincoln Premiere]] (1956), [[w:Lincoln Capri|Lincoln Capri]] (1953-1956). Painting of Pico Rivera-built Edsel bodies until Pico Rivera's paint shop was up and running. | style="text-align:left;"| Located at 5801 South Eastern Avenue and Slauson Avenue in Maywood, now part of City of Commerce. Across the street from the [[w:Los Angeles (Maywood) Assembly|Chrysler Los Angeles Assembly plant]]. Plant was demolished following closure. |- valign="top" | style="text-align:left;"| 0 | style="text-align:left;"| [[w:List of Mazda facilities#List of Mazda production plants|Mazda Hiroshima Assembly]] | style="text-align:left;"| [[w:Hiroshima|Hiroshima]], [[w:Hiroshima Prefecture|Hiroshima Prefecture]] | style="text-align:left;"| [[w:Japan|Japan]] | style="text-align:center;"| Ford production ended. Ford no longer owns a stake in Mazda. | style="text-align:left;"| [[w:Ford Courier#Mazda-based models|Ford Courier]]<br />[[w:Ford Festiva#Third generation (1996)|Ford Festiva Mini Wagon]]<br />[[w:Ford Freda|Ford Freda]]<br />[[w:Mazda Bongo|Ford Econovan/Econowagon/Spectron]]<br />[[w:Ford Raider|Ford Raider]]<br />[[w:Ford Trader|Ford Trader]] | style="text-align:left;"| Plant owned by Mazda. |- valign="top" | style="text-align:left;"| 1 | style="text-align:left;"| [[w:List of Mazda facilities#List of Mazda production plants|Mazda Hofu Assembly]] | style="text-align:left;"| [[w:Hofu|Hofu]], [[w:Yamaguchi Prefecture|Yamaguchi Prefecture]] | style="text-align:left;"| [[w:Japan|Japan]] | style="text-align:center;"| Ford production ended. Ford no longer owns a stake in Mazda. | style="text-align:left;"| [[w:Ford Laser|Ford Laser]]<br />[[w:Ford Telstar|Ford Telstar]] | style="text-align:left;"| Plant owned by Mazda. |- valign="top" | | style="text-align:left;"| Metcon Casting (Metalurgica Constitución S.A.) | style="text-align:left;"| [[w:Villa Constitución|Villa Constitución]], [[w:Santa Fe Province|Santa Fe Province]] | style="text-align:left;"| [[w:Argentina|Argentina]] | style="text-align:center;"| Sold to Paraná Metal SA | style="text-align:left;"| Parts - Iron castings | Originally opened in 1957. Bought by Ford in 1967. |- valign="top" | | style="text-align:left;"| Monroe Stamping Plant | style="text-align:left;"| [[w:Monroe, Michigan|Monroe, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"|Closed as a factory in 2008. Now a Ford warehouse. | style="text-align:left;"| Coil springs, wheels, stabilizer bars, catalytic converters, headlamp housings, and bumpers. Chrome Plating (1956-1982) | style="text-align:left;"| Located at 3200 E. Elm Ave. Originally built by Newton Steel around 1929 and subsequently owned by [[w:Alcoa|Alcoa]] and Kelsey-Hayes Wheel Co. Bought by Ford in 1949 and opened in 1950. Spun off as part of [[w:Visteon|Visteon]] in 2000. Taken back by Ford in 2005 as part of [[w:Automotive Components Holdings|Automotive Components Holdings]] LLC. Closed in 2008. Sold to parent Ford Motor Co. in 2009. Converted into Ford River Raisin Warehouse. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Montevideo Assembly | style="text-align:left;"| [[w:Montevideo|Montevideo]] | style="text-align:left;"| [[w:Uruguay|Uruguay]] | style="text-align:center;"| Closed (1985) | [[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Falcon (Argentina)|Ford Falcon]]<br />[[w:Ford F-Series|Ford F-Series]]<br />[[w:Ford D Series|Ford D series]] | Plant was on Calle Cuaró. Opened 1920. Ford Uruguay S.A. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Nissan Motor Australia|Nissan Motor Australia]] | style="text-align:left;"| [[w:Clayton, Victoria|Clayton]], [[w:Victoria (Australia)|Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed (1992) | style="text-align:left;"| [[w:Ford Corsair#Ford Corsair (UA, Australia)|Ford Corsair (UA)]]<br />[[w:Nissan Pintara|Nissan Pintara]]<br />[[w:Nissan Skyline#Seventh generation (R31; 1985)|Nissan Skyline]] | Plant owned by Nissan. Ford production was part of the [[w:Button Plan|Button Plan]]. |- valign="top" | style="text-align:center;"| NK/NR/N (NA) | style="text-align:left;"| [[w:Norfolk Assembly|Norfolk Assembly]] | style="text-align:left;"| [[w:Norfolk, Virginia|Norfolk, Virginia]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1925 to 2007 | style="text-align:left;"| [[w:Ford F-Series|Ford F-Series]] (1951-2007) | Located at 2424 Springfield Ave. on the Elizabeth River. Opened April 20, 1925. Production ended on June 28, 2007. Ford sold the property in 2011. Mostly Demolished. <br /> Previously: [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />[[w:1949 Ford|1949 Ford]]<br />[[w:1952 Ford|1952 Ford]]<br />[[w:1955 Ford|1955 Ford]]<br />[[w:1957 Ford|1957 Ford]] <br /> [[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1960-1961) <br /> [[w:Ford Galaxie|Ford Galaxie]] (1959-1970, 1973-1974)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1966-1967, 1974) |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Valve Plant|Ford Valve Plant]] | style="text-align:left;"| [[w:Northville, Michigan|Northville, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1981) | style="text-align:left;"| Engine valves for cars and tractors | style="text-align:left;"| Located at 235 East Main Street. Previously a gristmill purchased by Ford in 1919 that was reconfigured to make engine valves from 1920 to 1936. Replaced with a new purpose-built structure designed by Albert Kahn in 1936 which includes a waterwheel. Closed in 1981. Later used as a manufacturing plant by R&D Enterprises from 1994 to 2005 to make heat exchangers. Known today as the Water Wheel Centre, a commercial space that includes design firms and a fitness club. Listed on the National Register of Historic Places in 1995. |- valign="top" | style="text-align:center;"| C (NA) | tyle="text-align:left;"| [[w:Ontario Truck|Ontario Truck]] | style="text-align:left;"| [[w:Oakville, Ontario|Oakville, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| Closed (2004) | style="text-align:left;"|[[w:Ford F-Series|Ford F-Series]] (1966-2003)<br /> [[w:Ford F-Series (tenth generation)|Ford F-150 Heritage]] (2004)<br /> [[w:Ford F-Series (tenth generation)#SVT Lightning (1999-2004)|Ford F-150 Lightning SVT]] (1999-2004) | Opened in 1965. Truck production moved from the neighboring Oakville Assembly plant when Ontario Truck opened in 1965. After Ontario Truck closed in 2004, it was absorbed into the Oakville Assembly plant.<br /> Previously:<br> [[w:Mercury M-Series|Mercury M-Series]] (1966-1968) |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Officine Stampaggi Industriali|OSI]] | style="text-align:left;"| [[w:Turin|Turin]] | style="text-align:left;"| [[w:Italy|Italy]] | style="text-align:center;"| Closed (1967) | [[w:Ford Anglia#Anglia Torino 105E (1965–67)|Ford Anglia Torino]]<br />[[w:OSI-Ford 20 M TS|OSI-Ford 20 M TS]] | Plant owned by [[w:Officine Stampaggi Industriali|OSI]] |- valign="top" | style="text-align:left;"| | style="text-align:left;"| [[w:Otosan|Ford Otosan Assembly]] | style="text-align:left;"| [[w:Istanbul|Istanbul]] | style="text-align:left;"| [[w:Turkey|Turkey]] | style="text-align:center;"| Closed (2001) | style="text-align:left;"| [[w:Ford Consul|Ford Consul]]<br />[[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Taunus TC#Turkey|Ford Taunus]]<br />[[w:Ford Transit|Ford Transit]]<br />[[w:Ford F-Series (fourth generation)|Ford F-600]]<br />[[w:Ford Cargo|Ford Cargo]]<br />[[w:Ford D series|Ford D Series]]<br />[[w:Ford Thames 400E|Ford Thames 800]]<br />[[w:Thames Trader|Thames Trader]]<br />[[w:Ford P100#Cortina-based model|Otosan P100]]<br />[[w:Anadol|Anadol]] | style="text-align:left;"| Opened 1960. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Pacheco Truck Assembly and Painting Plant | style="text-align:left;"| [[w:General Pacheco|General Pacheco]], [[w:Buenos Aires Province|Buenos Aires Province]] | style="text-align:left;"| [[w:Argentina|Argentina]] | style="text-align:center;"| Transferred to VW when Autolatina dissolved (1996) | style="text-align:left;"| [[w:Ford F-Series|Ford F-100/F-150]]<br />[[w:Ford F-Series|Ford F-250/F-350/F-400/F-4000]]<br />[[w:Ford F-Series (medium duty truck)|Ford F-600/F-6000/F-700/F-7000]] | style="text-align:left;"| Opened in 1982. Part of [[w:Autolatina|Autolatina]] joint venture with VW from 1987 to 1996. VW kept this side of the Pacheco plant when Autolatina dissolved and converted it to car production. VW has since then used this plant for Amarok pickup truck production. |- valign="top" | style="text-align:center;"| U (EU) [when following L] | style="text-align:left;"| [[w:Pininfarina|Pininfarina Bairo Assembly]] | style="text-align:left;"| [[w:Bairo|Bairo]] | style="text-align:left;"| [[w:Italy|Italy]] | style="text-align:center;"| Closed (2010) | [[w:Ford Focus (second generation, Europe)#Coupé-Cabriolet|Ford Focus Coupe-Cabriolet]]<br />[[w:Ford Ka#StreetKa and SportKa|Ford StreetKa]] | Plant owned by [[w:Pininfarina|Pininfarina]] |- valign="top" | | style="text-align:left;"| [[w:Ford Piquette Avenue Plant|Piquette Avenue Plant]] | style="text-align:left;"| [[w:Detroit|Detroit, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Sold (1911), reopened as a museum (2001) | style="text-align:left;"| Models [[w:Ford Model B (1904)|B]], [[w:Ford Model C|C]], [[w:Ford Model F|F]], [[w:Ford Model K|K]], [[w:Ford Model N|N]], [[w:Ford Model N#Model R|R]], [[w:Ford Model S|S]], and [[w:Ford Model T|T]] | style="text-align:left;"| 1904–1910. Ford Motor Company's second American factory (first owned). Concept of a moving assembly line experimented with and developed here before being fully implemented at Highland Park plant. Birthplace of the [[w:Ford Model T|Model T]] (September 27, 1908). Sold to [[w:Studebaker|Studebaker]] in 1911. Sold to [[w:3M|3M]] in 1936. Sold to Cadillac Overall Company, a work clothes supplier, in 1968. Owned by Heritage Investment Company from 1989 to 2000. Sold to the Model T Automotive Heritage Complex in April 2000. Run as a museum since July 27, 2001. Oldest car factory building on Earth open to the general public. The Piquette Avenue Plant was added to the National Register of Historic Places in 2002, designated as a Michigan State Historic Site in 2003, and became a National Historic Landmark in 2006. The building has also been a contributing property for the surrounding Piquette Avenue Industrial Historic District since 2004. The factory's front façade was fully restored to its 1904 appearance and revealed to the public on September 27, 2008, the 100th anniversary of the completion of the first production Model T. |- valign="top" | | style="text-align:left;"| Plonsk Assembly | style="text-align:left;"| [[w:Plonsk|Plonsk]] | style="text-align:left;"| [[w:Poland|Poland]] | style="text-align:center;"| Closed (2000) | style="text-align:left;"| [[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Transit|Ford Transit]]<br /> | style="text-align:left;"| Opened in 1995. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford France|Poissy Assembly]] (now the [[w:Stellantis Poissy Plant|Stellantis Poissy Plant]]) | style="text-align:left;"| [[w:Poissy|Poissy]] | style="text-align:left;"| [[w:France|France]] | style="text-align:center;"| Sold in 1954 to Simca | style="text-align:left;"| [[w:Ford SAF#Ford SAF (1945-1954)|Ford F-472/F-472A (13CV) & F-998A (22CV)]]<br />[[w:Ford Vedette|Ford Vedette]]<br />[[w:Ford Abeille|Ford Abeille]]<br />[[w:Ford Vendôme|Ford Vendôme]] <br />[[w:Ford Comèt|Ford Comète]]<br /> Ford F-198 T/F-598 T/F-698 W/Cargo F798WM/Remorqueur trucks<br />French Ford based Simca models:<br />[[w:Simca Vedette|Simca Vedette]]<br />[[w:Simca Ariane|Simca Ariane]]<br />[[w:Simca Ariane|Simca Miramas]]<br />[[w:Ford Comète|Simca Comète]] | Ford France including the Poissy plant and all current and upcoming French Ford models was sold to [[w:Simca|Simca]] in 1954 and Ford took a 15.2% stake in Simca. In 1958, Ford sold its stake in [[w:Simca|Simca]] to [[w:Chrysler|Chrysler]]. In 1963, [[w:Chrysler|Chrysler]] increased their stake in [[w:Simca|Simca]] to a controlling 64% by purchasing stock from Fiat, and they subsequently extended that holding further to 77% in 1967. In 1970, Chrysler increased its stake in Simca to 99.3% and renamed it Chrysler France. In 1978, Chrysler sold its entire European operations including Simca to PSA Peugeot-Citroën and Chrysler Europe's models were rebranded as Talbot. Talbot production at Poissy ended in 1986 and the Talbot brand was phased out. Poissy went on to produce Peugeot and Citroën models. Poissy has therefore, over the years, produced vehicles for the following brands: [[w:Ford France|Ford]], [[w:Simca|Simca]], [[w:Chrysler Europe|Chrysler]], [[w:Talbot#Chrysler/Peugeot era (1979–1985)|Talbot]], [[w:Peugeot|Peugeot]], [[w:Citroën|Citroën]], [[w:DS Automobiles|DS Automobiles]], [[w:Opel|Opel]], and [[w:Vauxhall Motors|Vauxhall]]. Opel and Vauxhall are included due to their takeover by [[w:PSA Group|PSA Group]] in 2017 from [[w:General Motors|General Motors]]. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Recife Assembly | style="text-align:left;"| [[w:Recife|Recife]], [[w:Pernambuco|Pernambuco]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br /> [[w:Ford Model A (1927–1931)|Ford Model A]]<br /> | Opened 1925. Brazilian branch assembly plant. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Automotive industry in Australia#Renault Australia|Renault Australia]] | style="text-align:left;"| [[w:Heidelberg, Victoria|Heidelberg]], [[w:Victoria (Australia)|Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Factory closed in 1981 | style="text-align:left;"| [[w:Ford Cortina#Mark IV (1976–1979)|Ford Cortina wagon]] | Assembled by Renault Australia under a 3-year contract to [[w:Ford Australia|Ford Australia]] beginning in 1977. |- valign="top" | | style="text-align:left;"| [[w:Ford Romania#20th century|Ford Română S.A.R.]] | style="text-align:left;"| [[w:Bucharest|Bucharest]] | style="text-align:left;"| [[w:Romania|Romania]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Model 48|Ford Model 48/Model 68]] (1935-1936)<br /> [[w:1937 Ford|Ford Model 74/78/81A/82A/91A/92A/01A/02A]] (1937-1940)<br />[[w:Mercury Eight|Mercury Eight]] (1939-1940)<br /> | Production ended in 1940 due to World War II. The factory then did repair work only. The factory was nationalized by the Communist Romanian government in 1948. |- valign="top" | | style="text-align:left;"| [[w:Ford Romeo Engine Plant|Romeo Engine]] | style="text-align:left;"| [[W:Romeo, Michigan|Romeo, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (December 2022) | style="text-align:left;"| [[w:Ford Boss engine|Ford 6.2L Boss V8]]<br /> [[w:Ford Modular engine|Ford 4.6/5.4 Modular V8]] <br />[[w:Ford Modular engine#5.8 L Trinity|Ford 5.8L supercharged Trinity V8]]<br /> [[w:Ford Modular engine#Voodoo|Ford 5.2L flat-plane crank Voodoo V8]]<br /> [[w:Ford Modular engine#Predator|Ford 5.2L supercharged Predator V8]] | Located at 701 E. 32 Mile Road. Made Ford tractors and engines, parts, and farm implements for tractors from 1973 until 1988. Reopened in 1990 making the Modular V8. Included 2 lines: a high volume engine line and a niche engine line, which, since 1996, made high-performance V8 engines by hand including the Trinity, Voodoo, and Predator engines as well as the 32-valve 4.6L V8 in the Mustang Cobra SVT of '96-'99 & '01 and the <br> 32-valve 5.4L V8 in the '00 Mustang Cobra R and the supercharged 32-valve 4.6L V8 in the Mustang Cobra SVT of '03-'04 & the supercharged 32-valve 5.4L V8 in the Mustang Shelby GT500 of '07-'12 and the Ford GT of '05-'06. |- valign="top" | style="text-align:center;"| R (NA) | style="text-align:left;"| [[w:San Jose Assembly Plant|San Jose Assembly Plant]] | style="text-align:left;"| [[w:Milpitas, California|Milpitas, California]] | style="text-align:left;"| U.S. | style=”text-align:center;"| 1955-1983 | style="text-align:left;"| [[w:Ford F-Series|Ford F-Series]] (1955-1983), [[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1960), [[w:Ford Galaxie|Ford Galaxie]] (1959-1960), [[w:Edsel Pacer|Edsel Pacer]] (1958), [[w:Edsel Ranger|Edsel Ranger]] (1958), [[w:Edsel Roundup|Edsel Roundup]] (1958), [[w:Edsel Villager|Edsel Villager]] (1958), [[w:Edsel Bermuda|Edsel Bermuda]] (1958), [[w:Ford Pinto|Ford Pinto]] (1971-1978), [[w:Mercury Bobcat|Mercury Bobcat]] (1976, 1978), [[w:Ford Escort (North America)#First generation (1981–1990)|Ford Escort]] (1982-1983), [[w:Ford EXP|Ford EXP]] (1982-1983), [[w:Mercury Lynx|Mercury Lynx]] (1982-1983), [[w:Mercury LN7|Mercury LN7]] (1982-1983), [[w:Ford Falcon (North America)|Ford Falcon]] (1961-1964), [[w:Mercury Comet#First generation (1960–1963)|Comet]] (1961), [[w:Mercury Comet|Mercury Comet]] (1962), [[w:Ford Fairlane (Americas)|Ford Fairlane (midsize)]] (1962-1964, 1969-1970), [[w:Ford Torino|Ford Torino]] (1969-1970), [[w:Ford Ranchero|Ford Ranchero]] (1957-1964, 1970), [[w:Mercury Montego|Mercury Montego]], [[w:Ford Mustang|Ford Mustang]] (1965-1970, 1974-1981), [[w:Mercury Cougar|Mercury Cougar]] (1968-1969), & [[w:Mercury Capri#Second generation (1979–1986)|Mercury Capri]] (1979-1981). | style="text-align:left;"| Replaced the Richmond Assembly Plant. Was northwest of the intersection of Great Mall Parkway/Capitol Avenue and Montague Expressway extending west to S. Main St. (in Milpitas). Site is now Great Mall of the Bay Area. |- | | style="text-align:left;"| San Lazaro Assembly Plant | style="text-align:left;"| San Lazaro, [[w:Mexico City|Mexico City]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;" | Operated 1925-c.1932 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]] | First auto plant in Mexico opened in 1925. Replaced by La Villa plant in 1932. |- | style="text-align:center;"| T (EU) [when following M] | [[w:Ford India|Sanand Vehicle Assembly Plant]] | [[w:Sanand|Sanand]], [[w:Gujarat|Gujarat]] | [[w:India|India]] | style="text-align:center;"| Closed (2021)<ref name=":0"/> Sold to [[w:Tata Motors|Tata Motors]] in 2022. | style="text-align:left;"| [[w:Ford Figo#Second generation (B562; 2015)|Ford Figo]]<br />[[w:Ford Figo Aspire|Ford Figo Aspire]]<br />[[w:Ford Figo#Freestyle|Ford Freestyle]] | Opened March 2015<ref name="sanand">{{cite web|title=News|url=https://www.at.ford.com/en/homepage/news-and-clipsheet/news.html|website=www.at.ford.com}}</ref> |- | | Santiago Exposition Street Plant (Planta Calle Exposición 1258) | [[w:es:Calle Exposición|Calle Exposición]], [[w:Santiago, Chile|Santiago, Chile]] | [[w:Chile|Chile]] | style="text-align:center;" |Operated 1924-c.1962 <ref>{{Cite web |last=U |first=Juan Ignacio Alamos |date=2013-04-10 |title=AUTOS CHILENOS: PLANTA FORD CALLE EXPOSICIÓN (1924 - c.1962) |url=https://autoschilenos.blogspot.com/2013/04/planta-ford-calle-exposicion-1924-c1962.html |access-date=2022-08-04 |website=AUTOS CHILENOS}}</ref><ref name=":1" /> | [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:Ford F-Series|Ford F-Series]] | First plant opened in Chile in 1924.<ref name=":2" /> |- valign="top" | style="text-align:center;"| B (SA) | style="text-align:left;"| [[w:Ford Brasil|São Bernardo Assembly]] | style="text-align:left;"| [[w:São Bernardo do Campo|São Bernardo do Campo]], [[w:São Paulo (state)|São Paulo (state)]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Closed Oct. 30, 2019 & Sold 2020 <ref>{{Cite news|url=https://www.reuters.com/article/us-ford-motor-southamerica-heavytruck-idUSKCN1Q82EB|title=Ford to close oldest Brazil plant, exit South America truck biz|date=2019-02-20|work=Reuters|access-date=2019-03-07|language=en}}</ref> | style="text-align:left;"| [[w:Ford Fiesta|Ford Fiesta]]<br /> [[w:Ford Cargo|Ford Cargo]] Trucks<br /> [[w:Ford F-Series|Ford F-Series]] | Originally the Willys-Overland do Brazil plant. Bought by Ford in 1967. Part of [[w:Autolatina|Autolatina]] joint venture with VW from 1987 to 1996. No more Cargo Trucks produced in Brazil since 2019. Sold to Construtora São José Desenvolvimento Imobiliária.<br />Previously:<br />[[w:Willys Aero#Brazilian production|Ford Aero]]<br />[[w:Ford Belina|Ford Belina]]<br />[[w:Ford Corcel|Ford Corcel]]<br />[[w:Ford Del Rey|Ford Del Rey]]<br />[[w:Willys Aero#Brazilian production|Ford Itamaraty]]<br />[[w:Jeep CJ#Brazil|Ford Jeep]]<br /> [[w:Ford Rural|Ford Rural]]<br />[[w:Ford F-75|Ford F-75]]<br />[[w:Ford Maverick (1970–1977)|Ford Maverick]]<br />[[w:Ford Pampa|Ford Pampa]]<br />[[w:Ford Courier#Brazil (1998–2013)|Ford Courier]]<br />[[w:Ford Ka|Ford Ka]] (BE146 & B402)<br />[[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Orion|Ford Orion]]<br />[[w:Ford Verona|Ford Verona]]<br />[[w:Volkswagen Apollo|Volkswagen Apollo]]<br />[[w:Volkswagen Logus|Volkswagen Logus]]<br />[[w:Volkswagen Pointer|Volkswagen Pointer]]<br />Ford tractors |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:pt:Ford do Brasil|São Paulo city assembly plants]] | style="text-align:left;"| [[w:São Paulo|São Paulo]], [[w:São Paulo (state)|São Paulo (state)]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br /> [[w:Ford Model A (1927–1931)|Ford Model A]]<br /> [[w:1932 Ford|1932 Ford]]<br />Ford tractors | First plant opened in 1919 on Rua Florêncio de Abreu, in São Paulo. Moved to a larger plant in Praça da República in São Paulo in 1920. Then moved to an even larger plant on Rua Solon, in the Bom Retiro neighborhood of São Paulo in 1921. Replaced by Ipiranga plant in 1953. |- valign="top" | style="text-align:center;"| L (NZ) | style="text-align:left;"| Seaview Assembly Plant | style="text-align:left;"| [[w:Lower Hutt|Lower Hutt]] | style="text-align:left;"| [[w:New Zealand|New Zealand]] | style="text-align:center;"| Closed (1988) | style="text-align:left;"| [[w:Ford Model 48#1936|Ford Model 68]]<br />[[w:1937 Ford|1937 Ford]] Model 78<br />[[w:Ford Model Y|Ford Model Y]]<br />[[w:Ford Model C Ten|Ford Model C Ten]]<br />[[w:Ford 7W|Ford 7W]]<br />[[w:Ford Anglia|Ford Anglia]]<br />[[w:Ford Prefect|Ford Prefect]]<br />[[w:Ford Consul Capri|Ford Consul Classic 315]]<br />[[w:Ford Consul|Ford Consul]]<br />[[w:Ford Zephyr|Ford Zephyr]]<br /> [[w:Ford Zodiac|Ford Zodiac]]<br /> [[w:Ford Pilot|Ford Pilot]]<br />[[w:1949 Ford|Ford Custom V8 Fordor]]<br /> [[w:Ford Escort (Europe)|Ford Escort]]<br /> [[w:Ford Cortina|Ford Cortina]]<br /> [[w:Ford Sierra|Ford Sierra]] wagon<br />[[w:Ford Telstar|Ford Telstar]]<br />[[w:Ford Falcon (Australia)|Ford Falcon]]<br />[[w:Ford Thames 400E|Ford Thames 400E]]<br />[[w:Ford Transit#First generation (1965)|Ford Transit]]<br />[[w:Fordson|Fordson]] Major tractors | style="text-align:left;"| Opened in 1936, closed in 1988 |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Sheffield Aluminum Casting Plant | style="text-align:left;"| [[w:Sheffield, Alabama|Sheffield, Alabama]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1983) | style="text-align:left;"| Die cast parts<br /> pistons<br /> transmission cases | style="text-align:left;"| Opened in 1958, closed in December 1983. Demolished 2008. |- valign="top" | style="text-align:center;"| J (EU) [when following B] | style="text-align:left;"| Shenstone plant | style="text-align:left;"| [[w:Shenstone, Staffordshire|Shenstone, Staffordshire]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (1986) | style="text-align:left;"| [[w:Ford RS200|Ford RS200]] | style="text-align:left;"| Former [[w:Reliant Motors|Reliant Motors]] plant. Leased by Ford from 1985-1986 to build the RS200. |- valign="top" | style="text-align:center;"| D (EU) [when following B] | style="text-align:left;"| [[w:Ford Southampton plant|Southampton Body & Assembly]] | style="text-align:left;"| [[w:Southampton|Southampton]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (2013)<ref name="End of an era"/> | style="text-align:left;"| [[w:Ford Transit|Ford Transit]] van | style="text-align:left;"| Former Supermarine aircraft factory, acquired 1953. Built Ford vans 1972 – July 2013 |- valign="top" | style="text-align:center;"| SL/Z (NA) | style="text-align:left;"| [[w:St. Louis Assembly|St. Louis Assembly]] | style="text-align:left;"| [[w:Hazelwood, MO|Hazelwood, MO]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1948-2006 | style="text-align:left;"| [[w:Ford Explorer|Ford Explorer]] (1995-2006)<br>[[w:Mercury Mountaineer|Mercury Mountaineer]] (2002-2006)<br>[[w:Lincoln Aviator#First generation (UN152; 2003)|Lincoln Aviator]] (2003-2005) | style="text-align:left;"| Located at 2-58 Ford Lane and Aviator Dr. St. Louis plant is now a mixed use residential/commercial space (West End Lofts). Hazelwood plant was demolished in 2009.<br /> Previously:<br /> [[w:Ford Aerostar|Ford Aerostar]] (1986-1997)<br /> [[w:Ford LTD Crown Victoria|Ford LTD Crown Victoria]] (1983-1985) <br />[[w:Ford LTD (Americas)|Ford LTD]]<br />[[w:Ford Galaxie|Ford Galaxie]]<br> [[w:Mercury Grand Marquis|Mercury Grand Marquis]] (1983-1985)<br />[[w:Mercury Marquis|Mercury Marquis]] (1967-1982)<br />[[w:Mercury Marquis#Third generation (1979–1982)|Mercury Marquis Meteor (Canada only)]] (1980-81)<br /> [[w:Mercury Marauder|Mercury Marauder]] <br />[[w:Mercury Medalist|Mercury Medalist]] (1956, 1958)<br /> [[w:Mercury Monterey|Mercury Monterey]] (1952-1970, 1974)<br>[[w:Mercury Montclair|Mercury Montclair]] (1955-1960, 1964-1968)<br />[[w:Mercury S-55|Mercury S-55]] (1962-1963, 1966-1967)<br>[[w:Mercury Park Lane|Mercury Park Lane]] (1959, 1964-1968)<br />[[w:Mercury Turnpike Cruiser|Mercury Turnpike Cruiser]] (1957-1958)<br>[[w:Mercury Eight|Mercury Eight]] (1950-1951)<br /> [[w:Mercury Custom|Mercury Custom]] (1952-1953) |- valign="top" | style="text-align:center;"| X (NA) | style="text-align:left;"| [[w:St. Thomas Assembly|St. Thomas Assembly]] | style="text-align:left;"| [[w:Talbotville, Ontario|Talbotville, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| Closed (2011)<ref>{{cite news|url=https://www.theglobeandmail.com/investing/markets/|title=Markets|website=The Globe and Mail}}</ref> | style="text-align:left;"| [[w:Ford LTD Crown Victoria|Ford LTD Crown Victoria]] (1984-1991) <br />[[w:Ford Crown Victoria|Ford Crown Victoria]] (1992-2011)<br /> [[w:Mercury Grand Marquis|Mercury Grand Marquis]] (1984-2011)<br />[[w:Mercury Marauder#Third generation (2003–2004)|Mercury Marauder]] (2003-2004)<br /> [[w:Lincoln Town Car#Third generation (FN145; 1998–2011)|Lincoln Town Car]] (2008-2011) | style="text-align:left;"| Opened in 1967. Demolished. Now an Amazon fulfillment center.<br /> Previously:<br /> [[w:Ford Falcon (North America)|Ford Falcon]] (1968-1969)<br />[[w:Ford Maverick (1970–1977)|Ford Maverick]] (1970-77) <br />[[w:Ford Pinto|Ford Pinto]] (1971, 1973-1977, 1980)<br />[[w:Mercury Bobcat|Mercury Bobcat]] (1980)<br />[[w:Ford Fairmont|Ford Fairmont]] (1978-81)<br />[[w:Mercury Zephyr|Mercury Zephyr]] (1978-81) <br />[[w:Ford EXP|Ford EXP]] (1982-1983)<br />[[w:Mercury LN7|Mercury LN7]] (1982-1983) |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Stockholm Assembly | style="text-align:left;"| Free Port area (Frihamnen in Swedish), [[w:Stockholm|Stockholm]] | style="text-align:left;"| [[w:Sweden|Sweden]] | style="text-align:center;"| Closed (1957) | style="text-align:left;"| [[w:Ford Consul|Ford Consul]]<br />[[w:Ford Prefect|Ford Prefect]]<br />[[w:Ford Vedette|Ford Vedette]]<br />Ford trucks | style="text-align:left;"| |- valign="top" | style="text-align:center;"| 5 | style="text-align:left;"| [[w:Swedish Motor Assemblies|Swedish Motor Assemblies]] | style="text-align:left;"| [[w:Kuala Lumpur|Kuala Lumpur]] | style="text-align:left;"| [[w:Malaysia|Malaysia]] | style="text-align:center;"| Sold 2010 | style="text-align:left;"| [[w:Volvo S40|Volvo S40]]<br />[[w:Volvo S40#First generation (1995–2004)|Volvo V40]]<br />[[w:Volvo V50|Volvo V50]]<br />[[w:Volvo S60|Volvo S60]]<br />[[w:Volvo S70|Volvo S70]]<br />[[w:Volvo S80|Volvo S80]]<br />[[w:Volvo V70|Volvo V70]]<br />[[w:Volvo XC90|Volvo XC90]]<br />[[w:Land Rover Defender|Land Rover Defender]]<br />[[w:Land Rover Discovery|Land Rover Discovery]]<br />[[w:Land Rover Freelander|Land Rover Freelander]] | style="text-align:left;"| Also built Volvo trucks and buses. Used to do contract assembly for other automakers including Suzuki and Daihatsu. Volvo Cars was sold to [[w:Geely|Zhejiang Geely Holding Group Co., Ltd.]] in 2010. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Sydhavnen Assembly | style="text-align:left;"| [[w:Sydhavnen|Sydhavnen district]], [[w:Copenhagen|Copenhagen]] | style="text-align:left;"| [[w:Denmark|Denmark]] | style="text-align:center;"| Closed (1966) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:Ford Model Y|Ford Junior]]<br />[[w:Ford Model C (Europe)|Ford Junior De Luxe]]<br />[[w:Ford Eifel|Ford Eifel]]<br />[[w:Ford Taunus|Ford Taunus]]<br />[[w:Ford Anglia|Ford Anglia]]<br />[[w:Ford Thames 400E|Ford Thames 400E]] | style="text-align:left;"| 1924–1966. 325,482 vehicles were built. Plant was then converted into a tractor assembly plant for Ford Industrial Equipment Co. Tractor plant closed in the mid-1970's. Administration & depot building next to assembly plant was used until 1991 when depot for remote storage closed & offices moved to Glostrup. Assembly plant building stood until 2006 when it was demolished. |- | | style="text-align:left;"| [[w:Ford Brasil|Taubate Engine & Transmission & Chassis Plant]] | style="text-align:left;"| [[w:Taubaté, São Paulo|Taubaté, São Paulo]], Av. Charles Schnneider, 2222 | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Closed 2021<ref name="camacari"/> & Sold 05.18.2022 | [[w:Ford Pinto engine#2.3 (LL23)|Ford Pinto/Lima 2.3L I4]]<br />[[w:Ford Sigma engine#Zetec RoCam|Ford Zetec RoCam engine]]<br />[[w:Ford Sigma engine#Brazil|Ford Sigma engine]]<br />[[w:List of Ford engines#1.5 L Dragon|1.5L Ti-VCT Dragon 3-cyl.]]<br />[[w:Ford BC-series transmission#iB5 Version|iB5 5-speed manual transmission]]<br />MX65 5-speed manual transmission<br />aluminum casting<br />Chassis components | Opened in 1974. Sold to Construtora São José Desenvolvimento Imobiliária https://construtorasaojose.com<ref>{{Cite news|url=https://www.focus.jor.br/ford-vai-vender-fabrica-de-sp-para-construtora-troller-segue-sem-definicao/|title=Ford sold Factory in Taubaté to Buildings Development Constructor|date=2022-05-18|access-date=2022-05-29|language=pt}}</ref> |- valign="top" | | style="text-align:left;"| [[w:AutoAlliance Thailand#History|Thai Motor Co.]] | style="text-align:left;"| ? | style="text-align:left;"| [[w:Thailand|Thailand]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Cortina|Ford Cortina]] | Factory was a joint venture between Ford UK & Ford's Thai distributor, Anglo-Thai Motors Company. Taken over by Ford in 1973 when it was renamed Ford Thailand, closed in 1976 when Ford left Thailand. |- valign="top" | style="text-align:center;"| 4 | style="text-align:left;"| [[w:List of Volvo Car production plants|Thai-Swedish Assembly Co. Ltd.]] | style="text-align:left;"| [[w:Samutprakarn|Samutprakarn]] | style="text-align:left;"| [[w:Thailand|Thailand]] | style="text-align:center;"| Plant no longer used by Volvo Cars. Sold to Volvo AB in 2008. Volvo Car production ended in 2011. Production consolidated to Malaysia plant in 2012. | style="text-align:left;"| [[w:Volvo 200 Series|Volvo 200 Series]]<br />[[w:Volvo 940|Volvo 940]]<br />[[w:Volvo S40|Volvo S40/V40]]<br />[[w:Volvo S70|Volvo S70]]<br />[[w:Volvo S60|Volvo S60]]<br />[[w:Volvo S80|Volvo S80]]<br />[[w:Volvo V70|Volvo V70]]<br />[[w:Volvo XC90|Volvo XC90]]<br />[[w:Land Rover Freelander#First generation (L314; 1997–2006)|Land Rover Freelander]]<br />Volvo Trucks<br />Volvo Buses | Was 56% owned by Volvo and 44% owned by Swedish Motor. Volvo Cars was sold to [[w:Geely|Zhejiang Geely Holding Group Co., Ltd.]] in 2010. |- valign="top" | style="text-align:center;"| J | style="text-align:left;"| [[w:Think Global|TH!NK Nordic AS]] | style="text-align:left;"| [[w:Aurskog|Aurskog]] | style="text-align:left;"| [[w:Norway|Norway]] | style="text-align:center;"| Sold (2003) | style="text-align:left;"| [[w:Ford Think City|Ford Think City]] | style="text-align:left;"| Sold to Kamkorp Microelectronics as of February 1, 2003 |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Tlalnepantla Tool & Die | style="text-align:left;"| [[w:Tlalnepantla|Tlalnepantla]], [[w:Mexico State|Mexico State]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| Closed 1985 | style="text-align:left;"| Tooling for vehicle production | Was previously a Studebaker-Packard assembly plant. Bought by Ford in 1962 and converted into a tool & die plant. Operations transferred to Cuautitlan at the end of 1985. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Trafford Park Factory|Ford Trafford Park Factory]] | style="text-align:left;"| [[w:Trafford Park|Trafford Park]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]] | style="text-align:left;"| 1911–1931, formerly principal Ford UK plant. Produced [[w:Rolls-Royce Merlin|Rolls-Royce Merlin]] aircraft engines during World War II. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Transax, S.A. | style="text-align:left;"| [[w:Córdoba, Argentina|Córdoba]], [[w:Córdoba Province, Argentina|Córdoba Province]] | style="text-align:left;"| [[w:Argentina|Argentina]] | style="text-align:center;"| Transferred to VW when Autolatina dissolved (1996) | style="text-align:left;"| Transmissions <br /> Axles | style="text-align:left;"| Bought by Ford in 1967 from [[w:Industrias Kaiser Argentina|IKA]]. Part of [[w:Autolatina|Autolatina]] joint venture with VW from 1987 to 1996. VW kept this plant when Autolatina dissolved. VW has since then used this plant for transmission production. |- | style="text-align:center;"| H (SA) | style="text-align:left;"|[[w:Troller Veículos Especiais|Troller Veículos Especiais]] | style="text-align:left;"| [[w:Horizonte, Ceará|Horizonte, Ceará]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Acquired in 2007; operated until 2021. Closed (2021).<ref name="camacari"/> | [[w:Troller T4|Troller T4]], [[w:Troller Pantanal|Troller Pantanal]] | |- valign="top" | style="text-align:center;"| P (NA) | style="text-align:left;"| [[w:Twin Cities Assembly Plant|Twin Cities Assembly Plant]] | style="text-align:left;"| [[w:Saint Paul, Minnesota|St. Paul]], MN | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1925 to 2011 | style="text-align:left;"| [[w:Ford Ranger (Americas)|Ford Ranger]] (1986-2011)<br />[[w:Ford Ranger (Americas)#Mazda B-Series/Mazda Truck (1994–2010)|Mazda B-Series]] (2005-2009 & 2010 in Canada) | style="text-align:left;"|Located at 966 S. Mississippi River Blvd. Began production May 4, 1925. Production ended December 1932 but resumed in 1935. Closed December 16, 2011. <br>Previously: [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]], [[w:1957 Ford|1957 Ford]], [[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1960-1961), [[w:Ford Galaxie|Ford Galaxie]] (1959-1972, 1974), [[w:Ford 300|Ford 300]] (1963), [[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1964, 1966, 1976), [[w:Ford LTD (Americas)|Ford LTD]] (1967-1970, 1972-1973, 1975, 1977-1978), [[w:Ford F-Series|Ford F-Series]] (1951-1992) <br /> [[w:Ford F-Series (medium-duty truck)#Second generation (1953–1956)|Ford F-Series (medium-duty truck)]] (1954)<br />From 1926-1959, there was an onsite glass plant making glass for vehicle windows. Plant closed in 1933, reopened in 1935 with glass production resuming in 1937. Truck production began in 1950 alongside car production. Car production ended in 1978. F-Series production ended in 1992. Ranger production began in 1985 for the 1986 model year. |- valign="top" | style="text-align:center;"| J (SA) | style="text-align:left;"| [[w:Valencia Assembly|Valencia Assembly]] | style="text-align:left;"| [[w:Valencia, Venezuela|Valencia]], [[w:Carabobo|Carabobo]] | style="text-align:left;"| [[w:Venezuela|Venezuela]] | style="text-align:center;"| Opened 1962, Production suspended around 2019 | style="text-align:left;"| Previously built <br />[[w:Ford Bronco|Ford Bronco]] <br /> [[w:Ford Corcel|Ford Corcel]] <br />[[w:Ford Explorer|Ford Explorer]] <br />[[w:Ford Torino#Venezuela|Ford Fairlane (Gen 1)]]<br />[[w:Ford LTD II#Venezuela|Ford Fairlane (Gen 2)]]<br />[[w:Ford Fiesta (fifth generation)|Ford Fiesta Move]], [[w:Ford Fiesta|Ford Fiesta]]<br />[[w:Ford Focus|Ford Focus]]<br /> [[w:Ford Ka|Ford Ka]]<br />[[w:Ford LTD (Americas)#Venezuela|Ford LTD]]<br />[[w:Ford LTD (Americas)#Fourth generation (1983–1986)|Ford Granada]]<br />[[w:Mercury Marquis#Fourth generation (1983–1986)|Ford Cougar]]<br />[[w:Ford Laser|Ford Laser]] <br /> [[w:Ford Maverick (1970–1977)|Ford Maverick]] <br />[[w:Ford Mustang (first generation)|Ford Mustang]] <br /> [[w:Ford Sierra|Ford Sierra]]<br />[[w:Mazda Allegro|Mazda Allegro]]<br />[[w:Ford F-250|Ford F-250]]<br /> [[w:Ford F-350|Ford F-350]]<br /> [[w:Ford Cargo|Ford Cargo]] | style="text-align:left;"| Served Ford markets in Colombia, Ecuador and Venezuela. Production suspended due to collapse of Venezuela’s economy under Socialist rule of Hugo Chavez & Nicolas Maduro. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Autolatina|Volkswagen São Bernardo Assembly]] ([[w:Volkswagen do Brasil|Anchieta]]) | style="text-align:left;"| [[w:São Bernardo do Campo|São Bernardo do Campo]], [[w:São Paulo (state)|São Paulo (state)]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Returned to VW do Brazil when Autolatina dissolved in 1996 | style="text-align:left;"| [[w:Ford Versailles|Ford Versailles]]/Ford Galaxy (Argentina)<br />[[w:Ford Royale|Ford Royale]]<br />[[w:Volkswagen Santana#Santana (Brazil; 1984–2006)|Volkswagen Santana]]<br />[[w:Volkswagen Santana#Santana (Brazil; 1984–2006)|Volkswagen Quantum]] | Part of [[w:Autolatina|Autolatina]] joint venture between Ford and VW from 1987 to 1996. |- valign="top" | style="text-align:center;"| J | style="text-align:left;"| [[w:List of Volvo Car production plants|Volvo AutoNova Plant]] | style="text-align:left;"| [[w:Uddevalla|Uddevalla]] | style="text-align:left;"| [[w:Sweden|Sweden]] | style="text-align:center;"| Sold to Pininfarina Sverige AB | style="text-align:left;"| [[w:Volvo C70#First generation (1996–2005)|Volvo C70]] (Gen 1) | style="text-align:left;"| AutoNova was originally a 49/51 joint venture between Volvo & [[w:Tom Walkinshaw Racing|TWR]]. Restructured into Pininfarina Sverige AB, a new joint venture with [[w:Pininfarina|Pininfarina]] to build the 2nd generation C70. |- valign="top" | style="text-align:center;"| 2 | style="text-align:left;"| [[w:Volvo Car Gent|Volvo Ghent Plant]] | style="text-align:left;"| [[w:Ghent|Ghent]] | style="text-align:left;"| [[w:Belgium|Belgium]] | style="text-align:center;"| Sold | style="text-align:left;"| [[w:Volvo C30|Volvo C30]]<br />[[w:Volvo S40#Second generation (2004–2012)|Volvo S40]]<br />[[w:Volvo S60|Volvo S60]]<br />[[w:Volvo S70|Volvo S70]]<br />[[w:Volvo V40 (2012–2019)|Volvo V40]]<br />[[w:Volvo V50|Volvo V50]]<br />[[w:Volvo V70|Volvo V70]]<br />[[w:Volvo V70/XC70|Volvo XC70]] <br /> [[w:Volvo XC60|Volvo XC60]] | style="text-align:left;"| Sold as part of sale of Volvo Cars to [[w:Geely|Zhejiang Geely Holding Group Co., Ltd.]] in 2010 |- valign="top" | style="text-align:center;"| F | style="text-align:left;"| [[w:NedCar|Volvo Nedcar Plant]] | style="text-align:left;"| [[w:Born, Netherlands|Born]] | style="text-align:left;"| [[w:Netherlands|Netherlands]] | style="text-align:center;"| Sold (2001) | style="text-align:left;"| [[w:Volvo S40#First generation (1995–2004)|Volvo S40]]<br />[[w:Volvo S40#First generation (1995–2004)|Volvo V40]]<br />[[w:Mitsubishi Carisma|Mitsubishi Carisma]] <br /> [[w:Mitsubishi Space Star|Mitsubishi Space Star]] | style="text-align:left;"| Taken over by [[w:Mitsubishi Motors|Mitsubishi Motors]] in 2001, and later by [[w:VDL Groep|VDL Groep]] in 2012, when it became VDL Nedcar. Volvo production ended in 2004. |- valign="top" | style="text-align:center;"| J | style="text-align:left;"| [[w:Pininfarina#Uddevalla, Sweden Pininfarina Sverige AB|Volvo Pininfarina Sverige Plant]] | style="text-align:left;"| [[w:Uddevalla|Uddevalla]] | style="text-align:left;"| [[w:Sweden|Sweden]] | style="text-align:center;"| Closed by Volvo after the Geely takeover | style="text-align:left;"| [[w:Volvo C70#Second generation (2006–2013)|Volvo C70]] (Gen 2) | style="text-align:left;"| Pininfarina Sverige was a 40/60 joint venture between Volvo & [[w:Pininfarina|Pininfarina]]. Sold by Ford as part of sale of Volvo Cars to [[w:Geely|Zhejiang Geely Holding Group Co., Ltd.]] in 2010. Volvo bought back Pininfarina's shares in 2013 and closed the Uddevalla plant after C70 production ended later in 2013. |- valign="top" | | style="text-align:left;"| Volvo Skövde Engine Plant | style="text-align:left;"| [[w:Skövde|Skövde]] | style="text-align:left;"| [[w:Sweden|Sweden]] | style="text-align:center;"| Sold | style="text-align:left;"| [[w:Volvo Modular engine|Volvo Modular engine]] I4/I5/I6<br />[[w:Volvo D5 engine|Volvo D5 engine]]<br />[[w:Ford Duratorq engine#2005 TDCi (PSA DW Based)|PSA/Ford-based 2.0/2.2 diesel I4]]<br /> | style="text-align:left;"| Sold as part of sale of Volvo Cars to [[w:Geely|Zhejiang Geely Holding Group Co., Ltd.]] in 2010 |- valign="top" | style="text-align:center;"| 1 | style="text-align:left;"| [[w:Torslandaverken|Volvo Torslanda Plant]] | style="text-align:left;"| [[w:Torslanda|Torslanda]] | style="text-align:left;"| [[w:Sweden|Sweden]] | style="text-align:center;"| Sold | style="text-align:left;"| [[w:Volvo S60|Volvo S60]]<br />[[w:Volvo S70|Volvo S70]]<br />[[w:Volvo S80|Volvo S80]]<br />[[w:Volvo V60|Volvo V60]]<br />[[w:Volvo V70|Volvo V70]]<br />[[w:Volvo V70/XC70|Volvo XC70]] <br /> [[w:Volvo XC90|Volvo XC90]] | style="text-align:left;"| Sold as part of sale of Volvo Cars to [[w:Geely|Zhejiang Geely Holding Group Co., Ltd.]] in 2010 |- valign="top" | | style="text-align:left;"| Vulcan Forge | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (2003) | style="text-align:left;"| Connecting rods and rod cap forgings | |- valign="top" | style="text-align:center;"| H (NA) | style="text-align:left;"| [[w:Ford Walkerville Plant|Walkerville Plant]] | style="text-align:left;"| [[w:Windsor, Ontario|Windsor, Ontario]] (Walkerville was taken over by Windsor in Sept. 1929) | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| Closed (1953) and vacant land next to Detroit River (Fleming Channel). Replaced by Oakville Assembly. | style="text-align:left;"| [[w:Ford Model C|Ford Model C]]<br />[[w:Ford Model N|Ford Model N]]<br />[[w:Ford Model K|Ford Model K]]<br />[[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:Ford Model 48|Ford Model 48]]<br />[[w:1937 Ford|1937 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />1946-1947 Mercury trucks<br />[[w:1949 Ford|1949 Ford]]<br />[[w:1952 Ford|1952 Ford]]<br />[[w:Meteor (automobile)|Meteor]]<br />[[w:Monarch (marque)|Monarch]]<br />[[w:Ford F-Series|Ford F-Series]]<br />[[w:Mercury M-Series|Mercury M-Series]] (1948-1953) | style="text-align:left;"| 1904–1953. First factory to produce Ford cars outside the USA (via [[w:Ford Motor Company of Canada|Ford Motor Company of Canada]], a separate company from Ford at the time). |- valign="top" | | style="text-align:left;"| Walton Hills Stamping | style="text-align:left;"| [[w:Walton Hills, Ohio|Walton Hills, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"|Closed Winter 2014 | style="text-align:left;"| Body panels, bumpers | Opened in 1954. Located at 7845 Northfield Rd. Demolished. Site is now the Forward Innovation Center East. |- valign="top" | style="text-align:center;"| WA/W (NA) | style="text-align:left;"| [[w:Wayne Stamping & Assembly|Wayne Stamping & Assembly]] | style="text-align:left;"| [[w:Wayne, Michigan|Wayne, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1952-2010 | style="text-align:left;"| [[w:Ford Focus|Ford Focus]] (2000-2011)<br /> [[w:Ford Escort (North America)|Ford Escort]] (1981-1999)<br />[[w:Mercury Tracer|Mercury Tracer]] (1996-1999)<br />[[w:Mercury Lynx|Mercury Lynx]] (1981-1987)<br />[[w:Ford EXP|Ford EXP]] (1984-1988)<br />[[w:Ford Granada (North America)#First generation (1975–1980)|Ford Granada]] (1975-1980)<br />[[w:Mercury Monarch|Mercury Monarch]] (1975-1980)<br />[[w:Lincoln Versailles|Lincoln Versailles]] (1977-1980)<br />[[w:Ford Maverick (1970–1977)|Ford Maverick]] (1974)<br />[[w:Ford Galaxie|Ford Galaxie]] (1960, 1962-1969, 1971-1972)<br />[[w:Ford 300|Ford 300]] (1963)<br />[[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1971)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1968, 1970-1972, 1974)<br />[[w:Lincoln Capri|Lincoln Capri]] (1953-1957)<br />[[w:Lincoln Cosmopolitan#Second generation (1952-1954)|Lincoln Cosmopolitan]] (1953-1954)<br />[[w:Lincoln Custom|Lincoln Custom]] (1955 only)<br />[[w:Lincoln Premiere|Lincoln Premiere]] (1956-1957)<br />[[w:Mercury Custom|Mercury Custom]] (1953-)<br />[[w:Mercury Medalist|Mercury Medalist]]<br /> [[w:Mercury Commuter|Mercury Commuter]] (1960, 1965)<br />[[w:Mercury Meteor#Full-size (1961)|Mercury Meteor]] (1961 only)<br />[[w:Mercury Monterey|Mercury Monterey]] (1953-1966)<br />[[w:Mercury Montclair|Mercury Montclair]] (1955-1958, 1964-1967)<br />[[w:Mercury Turnpike Cruiser|Mercury Turnpike Cruiser]] (1957-1958)<br />[[w:Mercury S-55|Mercury S-55]] (1962-1963, 1966)<br />[[w:Mercury Marauder|Mercury Marauder]] (1964-1965)<br />[[w:Mercury Park Lane|Mercury Park Lane]] (1958-1959, 1964-1966)<br />[[w:Edsel Corsair|Edsel Corsair]] (1958)<br />[[w:Edsel Citation|Edsel Citation]] (1958) | style="text-align:left;"| Located at 37500 Van Born Rd. Was main production site for Mercury vehicles when plant opened in 1952 and shipped knock-down kits to dedicated Mercury assembly locations. First vehicle built was a Mercury Montclair on October 1, 1952. Built Lincolns from 1953-1957 after the Lincoln plant in Detroit closed in 1952. Lincoln production moved to a new plant in Wixom for 1958. The larger, Mercury-based Edsel Corsair and Citation were built in Wayne for 1958. The plant shifted to building smaller cars in the mid-1970's. In 1987, a new stamping plant was built on Van Born Rd. and was connected to the assembly plant via overhead tunnels. Production ended in December 2010 and the Wayne Stamping & Assembly Plant was combined with the Michigan Truck Plant, which was then renamed the [[w:Michigan Assembly Plant|Michigan Assembly Plant]]. |- valign="top" | | style="text-align:left;"| [[w:Willowvale Motor Industries|Willowvale Motor Industries]] | style="text-align:left;"| [[w:Willowvale, Harare|Willowvale]], [[w:Harare|Harare]] | style="text-align:left;"| [[w:Zimbabwe|Zimbabwe]] | style="text-align:center;"| Ford production ended. | style="text-align:left;"| [[w:Ford Laser#First generation (KA/KB; 1981)|Ford Laser]]<br />[[w:Mazda 323|Mazda 323]]<br />[[w:Mazda Rustler|Mazda Rustler]]<br />[[w:Mazda B series|Mazda B series]]<br />[[w:Mazda Titan#Second generation (1980–1989)|Mazda T3500]] | style="text-align:left;"| Assembly began in 1961 as Ford of Rhodesia. Became [[w:Willowvale Motor Industries|Willowvale Motor Industries]] after the Ford sale to the state-owned Industrial Development Corporation. Became Willowvale Mazda Motor Industries from 1989 to 2014. Name went back to [[w:Willowvale Motor Industries|Willowvale Motor Industries]] in 2015. |- valign="top" | | style="text-align:left;"| Windsor Aluminum | style="text-align:left;"| [[w:Windsor, Ontario|Windsor, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| Sold | style="text-align:left;"| [[w:Ford Duratec V6 engine|Duratec V6]] engine blocks<br /> [[w:Jaguar AJ-V8 engine#3.9 L|Ford 3.9L V8]] engine blocks<br /> [[w:Ford Modular engine|Ford Modular engine]] blocks | style="text-align:left;"| Opened 1992. Sold to Nemak Aluminum (a 25/75 joint venture between Ford & Nemak, which is 75.24% owned by Alfa Group of Mexico) in 2001. Subsequently produced engine blocks for GM. Production ended in September 2020. |- valign="top" | | style="text-align:left;"| [[w:Windsor Casting|Windsor Casting]] | style="text-align:left;"| [[w:Windsor, Ontario|Windsor, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| Closed (2007) | style="text-align:left;"| Engine parts: Cylinder blocks, crankshafts | Opened 1934. |- valign="top" | style="text-align:center;"| Y (NA) | style="text-align:left;"| [[w:Wixom Assembly Plant|Wixom Assembly Plant]] | style="text-align:left;"| [[w:Wixom, Michigan|Wixom, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Idle (2007); torn down (2013) | style="text-align:left;"| [[w:Lincoln Continental|Lincoln Continental]] (1961-1980, 1982-2002)<br />[[w:Lincoln Continental Mark III|Lincoln Continental Mark III]] (1969-1971)<br />[[w:Lincoln Continental Mark IV|Lincoln Continental Mark IV]] (1972-1976)<br />[[w:Lincoln Continental Mark V|Lincoln Continental Mark V]] (1977-1979)<br />[[w:Lincoln Continental Mark VI|Lincoln Continental Mark VI]] (1980-1983)<br />[[w:Lincoln Continental Mark VII|Lincoln Continental Mark VII]] (1984-1992)<br />[[w:Lincoln Mark VIII|Lincoln Mark VIII]] (1993-1998)<br /> [[w:Lincoln Town Car|Lincoln Town Car]] (1981-2007)<br /> [[w:Lincoln LS|Lincoln LS]] (2000-2006)<br /> [[w:Ford GT#First generation (2005–2006)|Ford GT]] (2005-2006)<br />[[w:Ford Thunderbird (second generation)|Ford Thunderbird]] (1958-1960)<br />[[w:Ford Thunderbird (third generation)|Ford Thunderbird]] (1961-1963)<br />[[w:Ford Thunderbird (fourth generation)|Ford Thunderbird]] (1964-1966)<br />[[w:Ford Thunderbird (fifth generation)|Ford Thunderbird]] (1967-1971)<br />[[w:Ford Thunderbird (sixth generation)|Ford Thunderbird]] (1972-1976)<br />[[w:Ford Thunderbird (eleventh generation)|Ford Thunderbird]] (2002-2005)<br /> [[w:Ford GT40|Ford GT40]] MKIV<br />[[w:Lincoln Capri#Third generation (1958–1959)|Lincoln Capri]] (1958-1959)<br />[[w:Lincoln Capri#1960 Lincoln|1960 Lincoln]] (1960)<br />[[w:Lincoln Premiere#1958–1960|Lincoln Premiere]] (1958–1960)<br />[[w:Lincoln Continental#Third generation (1958–1960)|Lincoln Continental Mark III/IV/V]] (1958-1960) | Demolished in 2012. |- valign="top" | | style="text-align:left;"| Ypsilanti Plant | style="text-align:left;"| [[w:Ypsilanti, Michigan|Ypsilanti, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Sold | style="text-align:left;"| Starters<br /> Starter Assemblies<br /> Alternators<br /> ignition coils<br /> distributors<br /> horns<br /> struts<br />air conditioner clutches<br /> bumper shock devices | style="text-align:left;"| Located at 128 Spring St. Originally owned by Ford Motor Company, it then became a [[w:Visteon|Visteon]] Plant when [[w:Visteon|Visteon]] was spun off in 2000, and later turned into an [[w:Automotive Components Holdings|Automotive Components Holdings]] Plant in 2005. It is said that [[w:Henry Ford|Henry Ford]] used to walk this factory when he acquired it in 1932. The Ypsilanti Plant was closed in 2009. Demolished in 2010. The UAW Local was Local 849. |} ==Former branch assembly plants== {| class="wikitable sortable" style="font-size:90%" |- ! style="width:120px;"| VIN ! style="width:200px;"| Name ! style="width:100px;"| City/state ! style="width:100px;"| Country ! style="width:120px;" class="unsortable"| Status ! style="width:150px;"| Former Address ! style="width:200px;"| Products ! style="width:300px;" class="unsortable"| Comments |- valign="top" | style="text-align:center;"| A/AA | style="text-align:left;"| [[w:Ford Motor Company Assembly Plant (Atlanta)|Atlanta Assembly Plant (Poncey-Highland)]] | style="text-align:left;"| [[w:Poncey-Highland|Poncey-Highland, Georgia]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated 1915-1942 | style="text-align:left;"| Originally 465 Ponce de Leon Ave. but was renumbered as 699 Ponce de Leon Ave. in 1926. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]] | style="text-align:left;"| Southeast USA headquarters and assembly operations from 1915 to 1942. Assembly ceased in 1932 but resumed in 1937. Sold to US War Dept. in 1942. Replaced by new plant in Atlanta suburb of Hapeville ([[w:Atlanta Assembly|Atlanta Assembly]]), which opened in 1947. Added to the National Register of Historic Places in 1984. Sold in 1979 and redeveloped into mixed retail/residential complex called Ford Factory Square/Ford Factory Lofts. |- valign="top" | style="text-align:center;"| BO/BF/B | style="text-align:left;"| Buffalo Branch Assembly Plant | style="text-align:left;"| [[w:Buffalo, New York|Buffalo, NY]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Original location operated from 1913 - 1915. 2nd location operated from 1915 – 1931. 3rd location operated from 1931 - 1958. | style="text-align:left;"| Originally located at Kensington Ave. and Eire Railroad. Moved to 2495 Main St. at Rodney in December 1915. Moved to 901 Fuhmann Boulevard in 1931. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]],<br> [[w:Ford Model A (1927–1931)|Ford Model A]],<br> [[w:1932 Ford|1932 Ford]],<br> [[w:Ford Model 48|Ford Model 48]],<br> [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]], [[w:1957 Ford|1957 Ford]], [[w:Ford F-Series|Ford F-Series]] (1951-1953, 1955) | style="text-align:left;"| Assembly ceased in January 1933 but resumed in 1934. Operations moved to Lorain, Ohio. 2495 Main St. is now the Tri-Main Center. Previously made diesel engines for the Navy and Bell Aircraft Corporation, was used by Bell Aircraft to design and construct America's first jet engine warplane, and made windshield wipers for Trico Products Co. 901 Fuhmann Boulevard used as a port terminal by Niagara Frontier Transportation Authority after Ford sold the property. |- valign="top" | | style="text-align:left;"| Burnaby Assembly Plant | style="text-align:left;"| [[w:Burnaby|Burnaby, BC]] | style="text-align:left;"| Canada | style="background:LightSalmon; text-align:center;"| Operated from 1938 to 1960 | style="text-align:left;"| Was located at 4600 Kingsway | style="text-align:left;"| [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]], [[w:1957 Ford|1957 Ford]] | style="text-align:left;"| Building demolished in 1988 to build Station Square |- valign="top" | | style="text-align:left;"| [[w:Cambridge Assembly|Cambridge Branch Assembly Plant]] | style="text-align:left;"| [[w:Cambridge, Massachusetts|Cambridge, MA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1926 | style="text-align:left;"| 640 Memorial Dr. and Cottage Farm Bridge | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Had the first vertically integrated assembly line in the world. Replaced by Somerville plant in 1926. Renovated, currently home to Boston Biomedical. |- valign="top" | style="text-align:center;"| CE | style="text-align:left;"| Charlotte Branch Assembly Plant | style="text-align:left;"| [[w:Charlotte, North Carolina|Charlotte, NC]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated 1914-1933 | style="text-align:left;"| 222 North Tryon then moved to 210 E. Sixth St. in 1916 and again to 1920 Statesville Ave in 1924 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Closed in March 1933, Used by Douglas Aircraft to assemble missiles for the U.S. Army between 1955 and 1964, sold to Atco Properties in 2017<ref>{{cite web|url=https://ui.uncc.edu/gallery/model-ts-missiles-millennials-new-lives-old-factory|title=From Model Ts to missiles to Millennials, new lives for old factory &#124; UNC Charlotte Urban Institute|website=ui.uncc.edu}}</ref> |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Chicago Branch Assembly Plant | style="text-align:left;"| [[w:Chicago|Chicago]], [[w:Illinois|Illinois]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Opened in 1914<br>Moved to current location on 12600 S Torrence Ave. in 1924 | style="text-align:left;"| 3915 Wabash Avenue | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Replaced by current [[w:Chicago Assembly|Chicago Assembly Plant]] on Torrence Ave. in 1924. |- valign="top" | style="text-align:center;"| CI | style="text-align:left;"| [[w:Ford Motor Company Cincinnati Plant|Cincinnati Branch Assembly Plant]] | style="text-align:left;"| [[w:Cincinnati|Cincinnati, OH]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated 1915-1938 | style="text-align:left;"| 660 Lincoln Ave | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]] | style="text-align:left;"| Added to the National Register of Historic Places in 1989, renovated 2002, currently owned by Cincinnati Children's Hospital. |- valign="top" | style="text-align:center;"| CL/CLE/CLEV | style="text-align:left;"| Cleveland Branch Assembly Plant<ref>{{cite web |url=https://loc.gov/pictures/item/oh0114|title=Ford Motor Company, Cleveland Branch Assembly Plant, Euclid Avenue & East 116th Street, Cleveland, Cuyahoga County, OH|website=Library of Congress}}</ref> | style="text-align:left;"| [[w:Cleveland|Cleveland, OH]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated 1915-1932 | style="text-align:left;"| 11610 Euclid Ave. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Added to the National Register of Historic Places in 1976, renovated, currently home to Cleveland Institute of Art. |- valign="top" | style="text-align:center;"| G | style="text-align:left;"| [[w:Ford Motor Company - Columbus Assembly Plant|Columbus Branch Assembly Plant]]<ref>[http://digital-collections.columbuslibrary.org/cdm/compoundobject/collection/ohio/id/12969/rec/1 "Ford Motor Company – Columbus Plant (Photo and History)"], Columbus Metropolitan Library Digital Collections</ref> | style="text-align:left;"| [[w:Columbus, Ohio|Columbus, OH]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 – 1932 | style="text-align:left;"| 427 Cleveland Avenue | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Assembly ended March 1932. Factory closed 1939. Was the Kroger Co. Columbus Bakery until February 2019. |- valign="top" | style="text-align:center;"| JE (JK) | style="text-align:left;"| [[w:Commodore Point|Commodore Point Assembly Plant]] | style="text-align:left;"| [[w:Jacksonville, Florida|Jacksonville, Florida]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Produced from 1924 to 1932. Closed (1968) | style="text-align:left;"| 1900 Wambolt Street. At the Foot of Wambolt St. on the St. John's River next to the Mathews Bridge. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]] cars and trucks, [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| 1924–1932, production years. Parts warehouse until 1968. Planned to be demolished in 2023. |- valign="top" | style="text-align:center;"| DS/DL | style="text-align:left;"| Dallas Branch Assembly Plant | style="text-align:left;"| [[w:Dallas|Dallas, TX]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1925 | style="text-align:left;"| 2700 Canton St then moved in 1925 to 5200 E. Grand Ave. near Fair Park | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Replaced by plant on 5200 E. Grand Ave. in 1925. Ford continued to use 2700 Canton St. for display and storage until 1939. In 1942, sold to Peaslee-Gaulbert Corporation, which had already been using the building since 1939. Sold to Adam Hats in 1959. Redeveloped in 1997 into Adam Hats Lofts, a loft-style apartment complex. |- valign="top" | style="text-align:center;"| T | style="text-align:left;"| Danforth Avenue Assembly | style="text-align:left;"| [[w:Toronto|Toronto]], [[w:Ontario|Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="background:Khaki; text-align:center;"| Sold (1946) | style="text-align:left;"| 2951-2991 Danforth Ave. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br /> and other cars | style="text-align:left;"| Replaced by [[w:Oakville Assembly|Oakville Assembly]]. Sold to [[w:Nash Motors|Nash Motors]] in 1946 which then merged with [[w:Hudson Motor Car Company|Hudson Motor Car Company]] to form [[w:American Motors Corporation|American Motors Corporation]], which then used the plant until it was closed in 1957. Converted to a mall in 1962, Shoppers World Danforth. The main building of the mall (now a Lowe's) is still the original structure of the factory. |- valign="top" | style="text-align:center;"| DR | style="text-align:left;"| Denver Branch Assembly Plant | style="text-align:left;"| [[w:Denver|Denver, CO]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1933 | style="text-align:left;"| 900 South Broadway | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model TT|Ford Model TT]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Sold to Gates Rubber Co. in 1945. Gates sold the building in 1995. Now used as office space. Partly used as a data center by Hosting.com, now known as Ntirety, from 2009. |- valign="top" | style="text-align:center;"| DM | style="text-align:left;"| Des Moines Assembly Plant | style="text-align:left;"| [[w:Des Moines, IA|Des Moines, IA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from April 1920–December 1932 | style="text-align:left;"| 1800 Grand Avenue | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Sold in 1943. Renovated in the 1980s into Des Moines School District's technical high school and central campus. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Dothan Branch Assembly Plant | style="text-align:left;"| [[w:Dothan, AL|Dothan, AL]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| 1923–1927? | style="text-align:left;"| 193 South Saint Andrews Street and corner of E. Crawford Street | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Later became an auto dealership called Malone Motor Company and was St. Andrews Market, an indoor market and event space, from 2013-2015 until a partial roof collapse during a severe storm. Since 2020, being redeveloped into an apartment complex. The curved assembly line anchored into the ceiling is still intact and is being left there. Sometimes called the Ford Malone Building. |- valign="top" | | style="text-align:left;"| Dupont St Branch Assembly Plant | style="text-align:left;"| [[w:Toronto|Toronto, ON]] | style="text-align:left;"| Canada | style="background:LightSalmon; text-align:center;"| Operated from 1915 to 1925 | style="text-align:left;"| 672 Dupont St | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Production moved to Danforth Assembly Plant. Building roof was used as a test track for the Model T. Used by several food processing companies. Became Planters Peanuts Canada from 1948 till 1987. The building currently is used for commercial and retail space. Included on the Inventory of Heritage Properties. |- valign="top" | style="text-align:center;"| E/EG/E | style="text-align:left;"| [[w:Edgewater Assembly|Edgewater Assembly]] | style="text-align:left;"| [[w:Edgewater, New Jersey|Edgewater, New Jersey]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1930 to 1955 | style="text-align:left;"| 309 River Road | style="text-align:left;"| [[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:Ford Model 48|Ford Model 48]]<br />[[w:1937 Ford|1937 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />[[w:Ford GPW|Ford GPW]] (Jan.-Apr. 1943 only: 1,333 units)<br />[[w:1949 Ford|1949 Ford]]<br />[[w:1952 Ford|1952 Ford]]<br />[[w:1955 Ford|1955 Ford]]<br />[[w:Ford F-Series|Ford F-Series]] (1951-1954) | style="text-align:left;"| Replaced with the Mahwah Assembly Plant. Added to the National Register of Historic Places on September 15, 1983. The building was torn down in 2006 and replaced with a residential development called Independence Harbor. |- valign="top" | | style="text-align:left;"| Fargo Branch Assembly Plant | style="text-align:left;"| [[w:Fargo, North Dakota|Fargo, ND]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1915 to 1917 | style="text-align:left;"| 505 N. Broadway | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| After assembly ended, Ford used it as a sales office, sales and service branch, and a parts depot. Ford sold the building in 1956. Now called the Ford Building, a mixed commercial/residential property. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Fort Worth Assembly Plant | style="text-align:left;"| [[w:Fort Worth, TX|Fort Worth, TX]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated for about 6 months around 1916 | style="text-align:left;"| | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Briefly supplemented Dallas plant but production was then reconsolidated into the Dallas plant and Fort Worth plant was closed. |- valign="top" | style="text-align:center;"| H | style="text-align:left;"| Houston Branch Assembly Plant | style="text-align:left;"| [[w:Houston|Houston, TX]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1932 | style="text-align:left;"| 3906 Harrisburg Boulevard | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], aircraft parts during WWII | style="text-align:left;"| Divested during World War II; later acquired by General Foods in 1946 (later the Houston facility for [[w:Maxwell House|Maxwell House]]) until 2006 when the plant was sold to Maximus and rebranded as the Atlantic Coffee Solutions facility. Atlantic Coffee Solutions shut down the plant in 2018 when they went out of business. Leased by Elemental Processing in 2019 for hemp processing with plans to begin operations in 2020. |- valign="top" | style="text-align:center;"| I | style="text-align:left;"| Indianapolis Branch Assembly Plant | style="text-align:left;"| [[w:Indianapolis|Indianapolis, IN]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"|1914–1932 | style="text-align:left;"| 1315 East Washington Street | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Vehicle production ended in December 1932. Used as a Ford parts service and automotive sales branch and for administrative purposes until 1942. Sold in 1942. |- valign="top" | style="text-align:center;"| KC/K | style="text-align:left;"| Kansas City Branch Assembly | style="text-align:left;"| [[w:Kansas City, Missouri|Kansas City, Missouri]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| 1912–1956 | style="text-align:left;"| Original location from 1912 to 1956 at 1025 Winchester Avenue & corner of E. 12th Street | style="text-align:left;"| [[w:Ford Model T|Ford Model T]],<br> [[w:Ford Model A (1927–1931)|Ford Model A]],<br> [[w:1932 Ford|1932 Ford]], <br>[[w:Ford Model 48|Ford Model 48]],<br> [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]], [[w:1957 Ford|1957 Ford]], [[w:Ford F-Series|Ford F-Series]] (1951-1956), [[w:Ford F-Series (medium-duty truck)#Second generation (1953–1956)|Ford F-Series (medium-duty truck)]] (1956) | style="text-align:left;"| First Ford factory in the USA built outside the Detroit area. Location of first UAW strike against Ford and where the 20 millionth Ford vehicle was assembled. Last vehicle produced was a 1957 Ford Fairlane Custom 300 on December 28, 1956. 2,337,863 vehicles were produced at the Winchester Ave. plant. Replaced by [[w:Ford Kansas City Assembly Plant|Claycomo]] plant in 1957. |- valign="top" | style="text-align:center;"| KY | style="text-align:left;"| Kearny Assembly | style="text-align:left;"| [[w:Kearny, New Jersey|Kearny, New Jersey]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1918 to 1930 | style="text-align:left;"| 135 Central Ave., corner of Ford Lane | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]] | style="text-align:left;"| Replaced by the Edgewater Assembly Plant. |- valign="top" | | style="text-align:left;"| Long Island City Branch Assembly Plant | style="text-align:left;"| [[w:Long Island City|Long Island City]], [[w:Queens|Queens, NY]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1912 to 1917 | style="text-align:left;"| 564 Jackson Ave. (now known as <br> 33-00 Northern Boulevard) and corner of Honeywell St. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Opened as Ford Assembly and Service Center of Long Island City. Building was later significantly expanded around 1914. The original part of the building is along Honeywell St. and around onto Northern Blvd. for the first 3 banks of windows. Replaced by the Kearny Assembly Plant in NJ. Plant taken over by U.S. Government. Later occupied by Goodyear Tire (which bought the plant in 1920), Durant Motors (which bought the plant in 1921 and produced Durant-, Star-, and Flint-brand cars there), Roto-Broil, and E.R. Squibb & Son. Now called The Center Building and used as office space. |- valign="top" | style="text-align:center;"|LA | style="text-align:left;"| Los Angeles Branch Assembly Plant | style="text-align:left;"| [[w:Los Angeles|Los Angeles, CA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1930 | style="text-align:left;"| 12th and Olive Streets, then E. 7th St. and Santa Fe Ave. (2060 East 7th St. or 777 S. Santa Fe Avenue). | style="text-align:left;"| Original Los Angeles plant: [[w:Ford Model T|Ford Model T]]. <br /> Second Los Angeles plant (1914-1930): [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]]. | style="text-align:left;"| Location on 7th & Santa Fe is now the headquarters of Warner Music Group. |- valign="top" | style="text-align:center;"| LE/LU/U | style="text-align:left;"| [[w:Louisville Assembly Plant|Louisville Branch Assembly Plant]] | style="text-align:left;"| [[w:Louisville, Kentucky|Louisville, Kentucky]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| 1913–1916, 1916–1925, 1925–1955, 1955–present | style="text-align:left;"| 931 South Third Street then <br /> 2400 South Third Street then <br /> 1400 Southwestern Parkway then <br /> 2000 Fern Valley Rd. | style="text-align:left;"| |align="left"| Original location opened in 1913. Ford then moved in 1916 and again in 1925. First 2 plants made the [[w:Ford Model T|Ford Model T]]. The third plant made the [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:Ford F-Series|Ford F-Series]] (1951-1954) as well as Jeeps ([[w:Ford GPW|Ford GPW]] - 93,364 units), military trucks, and V8 engines during World War II. Current location at 2000 Fern Valley Rd. first opened in 1955.<br /> The 2400 South Third Street location (at the corner of Eastern Parkway) was sold to Reynolds Metals Company and has since been converted into residential space called Reynolds Lofts under lease from current owner, University of Louisville. |- valign="top" | style="text-align:center;"| MEM/MP/M | style="text-align:left;"| Memphis Branch Assembly Plant | style="text-align:left;"| [[w:Memphis, Tennessee|Memphis, TN]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1913-June 1958 | style="text-align:left;"| 495 Union Ave. (1913–1924) then 1429 Riverside Blvd. and South Parkway West (1924–1933, 1935–1958) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]], [[w:1957 Ford|1957 Ford]], [[w:Ford F-Series|Ford F-Series]] (1951-1952, 1954-1956) | style="text-align:left;"| Both plants have been demolished. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Milwaukee Branch Assembly Plant | style="text-align:left;"| [[w:Milwaukee|Milwaukee, WI]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1916 to 1932 | style="text-align:left;"| 2185 N. Prospect Ave. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Building is still standing as a mixed use development. |- valign="top" | style="text-align:center;"| TC/SP | style="text-align:left;"| Minneapolis Branch Assembly Plant | style="text-align:left;"| [[w:Minneapolis|Minneapolis, MN]] and [[w:Saint Paul, Minnesota|St. Paul]], MN | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1912 to 2011 | style="text-align:left;"| 616 S. Third St in Minneapolis (1912-1914) then 420 N. Fifth St. in Minneapolis (1914-1925) and 117 University Ave. West in St. Paul (1914-1920) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| 420 N. Fifth St. is now called Ford Center, an office building. Was the tallest automotive assembly plant at 10 stories.<br /> University Ave. plant in St. Paul is now called the Ford Building. After production ended, was used as a Ford sales and service center, an auto mechanics school, a warehouse, and Federal government offices. Bought by the State of Minnesota in 1952 and used by the state government until 2004. |- valign="top" | style="text-align:center;"| M | style="text-align:left;"| Montreal Assembly Plant | style="text-align:left;"| [[w:Montreal|Montreal, QC]] | style="text-align:left;"| Canada | style="background:LightSalmon; text-align:center;"| | style="text-align:left;"| 119-139 Laurier Avenue East | style="text-align:left;"| | style="text-align:left;"| |- valign="top" | style="text-align:center;"| NO | style="text-align:left;"| New Orleans | style="text-align:left;"| [[w:Arabi, Louisiana|Arabi, Louisiana]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1923–December 1932 | style="text-align:left;"| 7200 North Peters Street, Arabi, St. Bernard Parish, Louisiana | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model TT|Ford Model TT]], [[w:Ford Model A (1927–1931)|Ford Model A]] | style="text-align:left;"| Later used by Ford as a parts and vehicle dist. center. Used by the US Army as a warehouse during WWII. After the war, was used as a parts and vehicle dist. center by a Ford dealer, Capital City Ford of Baton Rouge. Used by Southern Service Co. to prepare Toyotas and Mazdas prior to their delivery into Midwestern markets from 1971 to 1977. Became a freight storage facility for items like coffee, twine, rubber, hardwood, burlap and cotton from 1977 to 2005. Flooded during Hurricane Katrina. Listed on the National Register of Historic Places in 2018. |- valign="top" | style="text-align:center;"| OC | style="text-align:left;"| [[w:Oklahoma City Ford Motor Company Assembly Plant|Oklahoma City Branch Assembly Plant]] | style="text-align:left;"| [[w:Oklahoma City|Oklahoma City, OK]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1916 to 1932 | style="text-align:left;"| 900 West Main St. | style="text-align:left;"|[[w:Ford Model T|Ford Model T]]<br /> [[w:Ford Model A (1927–1931)|Ford Model A]]<br /> [[w:1932 Ford|1932 Ford]] |Had extensive access to rail via the Rock Island railroad. Production ended with the 1932 models. The plant was converted to a Ford Regional Parts Depot (1 of 3 designated “slow-moving parts branches") and remained so until 1967, when the plant closed, and was then sold in 1968 to The Fred Jones Companies, an authorized re-manufacturer of Ford and later on, also GM Parts. It remained the headquarters for operations of Fred Jones Enterprises (a subsidiary of The Fred Jones Companies) until Hall Capital, the parent of The Fred Jones Companies, entered into a partnership with 21c Hotels to open a location in the building. The 21c Museum Hotel officially opened its hotel, restaurant and art museum in June, 2016 following an extensive remodel of the property. Listed on the National Register of Historic Places in 2014. |- valign="top" | | style="text-align:left;"| [[w:Omaha Ford Motor Company Assembly Plant|Omaha Ford Motor Company Assembly Plant]] | style="text-align:left;"| [[w:Omaha, Nebraska|Omaha, NE]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1916 to 1932 | style="text-align:left;"| 1502-24 Cuming St. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Used as a warehouse by Western Electric Company from 1956 to 1959. It was then vacant until 1963, when it was used for manufacturing hair accessories and other plastic goods by Tip Top Plastic Products from 1963 to 1986. After being vacant again for several years, it was then used by Good and More Enterprises, a tire warehouse and retail outlet. After another period of vacancy, it was redeveloped into Tip Top Apartments, a mixed-use building with office space on the first floor and loft-style apartments on the upper levels which opened in 2005. Listed on the National Register of Historic Places in 2004. |- valign="top" | style="text-align:center;"|CR/CS/C | style="text-align:left;"| Philadelphia Branch Assembly Plant ([[w:Chester Assembly|Chester Assembly]]) | style="text-align:left;"| [[w:Philadelphia|Philadelphia, PA]]<br>[[w:Chester, Pennsylvania|Chester, Pennsylvania]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1961 | style="text-align:left;"| Philadelphia: 2700 N. Broad St., corner of W. Lehigh Ave. (November 1914-June 1927) then in Chester: Front Street from Fulton to Pennell streets along the Delaware River (800 W. Front St.) (March 1928-February 1961) | style="text-align:left;"| [[w:Ford Model A (1927–1931)|Ford Model A]],<br> [[w:1932 Ford|1932 Ford]],<br> [[w:Ford Model 48|Ford Model 48]],<br> [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:Ford GPW|Ford GPW]] (18,533 units), [[w:1949 Ford|1949 Ford]],<br> [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]], [[w:1957 Ford|1957 Ford]], [[w:Ford Galaxie|Ford Galaxie]] (1959-1961), [[w:Ford F-Series (first generation)|Ford F-Series (first generation)]] (1951-1952),<br> [[w:Ford F-Series (second generation)|Ford F-Series (second generation)]] (1953-1955),<br> [[w:Ford F-Series (third generation)|Ford F-Series (third generation)]] | style="text-align:left;"| November 1914-June 1927 in Philadelphia then March 1928-February 1961 in Chester. Broad St. plant made equipment for US Army in WWI including helmets and machine gun trucks. Sold in 1927. Later used as a [[w:Sears|Sears]] warehouse and then to manufacture men's clothing by Joseph H. Cohen & Sons, which later took over [[w:Botany 500|Botany 500]], whose suits were then also made at Broad St., giving rise to the nickname, Botany 500 Building. Cohen & Sons sold the building in 1989 which seems to be empty now. Chester plant also handled exporting to overseas plants. |- valign="top" | style="text-align:center;"| P | style="text-align:left;"| [[w:Ford Motor Company Assembly Plant (Pittsburgh, Pennsylvania)|Pittsburgh Branch Assembly Plant]] | style="text-align:left;"| [[w:Pittsburgh|Pittsburgh, PA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1915 to 1932 | style="text-align:left;"| 5000 Baum Blvd and Morewood Ave. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Became a Ford sales, parts, and service branch until Ford sold the building in 1953. The building then went through a variety of light industrial uses before being purchased by the University of Pittsburgh Medical Center (UPMC) in 2006. It was subsequently purchased by the University of Pittsburgh in 2018 to house the UPMC Immune Transplant and Therapy Center, a collaboration between the university and UPMC. Listed on the National Register of Historic Places in 2018. |- valign="top" | style="text-align:center;"| PO | style="text-align:left;"| Portland Branch Assembly Plant | style="text-align:left;"| [[w:Portland, Oregon|Portland, OR]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated 1914–1917, 1923–1932 | style="text-align:left;"| 2505 SE 11th Avenue | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Called the Ford Building and is occupied by various businesses. . |- valign="top" | style="text-align:center;"| RH/R (Richmond) | style="text-align:left;"| [[w:Ford Richmond Plant|Richmond Plant]] | style="text-align:left;"| [[w:Richmond, California|Richmond, California]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| 1931-1955 | style="text-align:left;"| 1414 Harbour Way S | style="text-align:left;"| [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:Ford GPW|Ford GPW]] (49,359 units), [[w:Ford F-Series|Ford F-Series]] (1951-1954), [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]]. | style="text-align:left;"| Richmond was one of the first 2 Ford plants to build the F-Series, beginning November 27, 1947 (other was Highland Park, Michigan). Richmond location is now part of Rosie the Riveter National Historical Park. Replaced by San Jose Assembly Plant in Milpitas. |- valign="top" | style="text-align:center;"|SFA/SFAA (San Francisco) | style="text-align:left;"| San Francisco Branch Assembly Plant | style="text-align:left;"| [[w:San Francisco|San Francisco, CA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| 1914-1931 | style="text-align:left;"| 2905 21st Street and Harrison St. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]] | style="text-align:left;"| Replaced by the Richmond Assembly Plant. San Francisco Plant was demolished after the 1989 earthquake. |- valign="top" | style="text-align:center;"| SR/S | style="text-align:left;"| [[w:Somerville Assembly|Somerville Assembly]] | style="text-align:left;"| [[w:Somerville, Massachusetts|Somerville, Massachusetts]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1926 to 1958 | style="text-align:left;"| 183 Middlesex Ave. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] <br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />[[w:1949 Ford|1949 Ford]]<br />[[w:1952 Ford|1952 Ford]]<br />[[w:1955 Ford|1955 Ford]]<br />[[w:1957 Ford|1957 Ford]]<br />[[w:Ford F-Series|Ford F-Series]] (1951-1953)<br />Built [[w:Edsel Corsair|Edsel Corsair]] (1958) & [[w:Edsel Citation|Edsel Citation]] (1958) July-October 1957, Built [[w:1957 Ford|1958 Fords]] November 1957 - March 1958. | style="text-align:left;"| The only [[w:Edsel|Edsel]]-only assembly line. Operations moved to Lorain, OH. Converted to [[w:Assembly Square Mall|Assembly Square Mall]] in 1980 |- valign="top" | style="text-align:center;"| AS | style="text-align:left;"| [http://pcad.lib.washington.edu/building/4902/ Seattle Branch Assembly Plant #1] | style="text-align:left;"| [[w:South Lake Union, Seattle|South Lake Union, Seattle, WA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1932 | style="text-align:left;"| 1155 Valley Street & corner of 700 Fairview Ave. N. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Now a Public Storage site. |- valign="top" | style="text-align:center;"| AS | style="text-align:left;"| [[w:Ford Motor Company Assembly Plant (Seattle)|Seattle Branch Assembly Plant #2]] | style="text-align:left;"| [[w:Georgetown, Seattle|Georgetown, Seattle, WA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from May 1932–December 1932 | style="text-align:left;"| 4730 East Marginal Way | style="text-align:left;"| [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Still a Ford sales and service site through 1941. As early as 1940, the U.S. Army occupied a portion of the facility which had become known as the "Seattle General Depot". Sold to US Government in 1942 for WWII-related use. Used as a staging site for supplies headed for the Pacific Front. The U.S. Army continued to occupy the facility until 1956. In 1956, the U.S. Air Force acquired control of the property and leased the facility to the Boeing Company. A year later, in 1957, the Boeing Company purchased the property. Known as the Boeing Airplane Company Missile Production Center, the facility provided support functions for several aerospace and defense related development programs, including the organizational and management facilities for the Minuteman-1 missile program, deployed in 1960, and the Minuteman-II missile program, deployed in 1969. These nuclear missile systems, featuring solid rocket boosters (providing faster lift-offs) and the first digital flight computer, were developed in response to the Cold War between the U.S. and the Soviet Union in the 1960s and 1970s. The Boeing Aerospace Group also used the former Ford plant for several other development and manufacturing uses, such as developing aspects of the Lunar Orbiter Program, producing unstaffed spacecraft to photograph the moon in 1966–1967, the BOMARC defensive missile system, and hydrofoil boats. After 1970, Boeing phased out its operations at the former Ford plant, moving them to the Boeing Space Center in the city of Kent and the company's other Seattle plant complex. Owned by the General Services Administration since 1973, it's known as the "Federal Center South Complex", housing various government offices. Listed on the National Register of Historic Places in 2013. |- valign="top" | style="text-align:center;"|STL/SL | style="text-align:left;"| St. Louis Branch Assembly Plant | style="text-align:left;"| [[w:St. Louis|St. Louis, MO]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| 1914-1942 | style="text-align:left;"| 4100 Forest Park Ave. | style="text-align:left;"| | style="text-align:left;"| |- valign="top" | style="text-align:center;"| V | style="text-align:left;"| Vancouver Assembly Plant | style="text-align:left;"| [[w:Vancouver|Vancouver, BC]] | style="text-align:left;"| Canada | style="background:LightSalmon; text-align:center;"| Operated from 1920 to 1938 | style="text-align:left;"| 1188 Hamilton St | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]] | style="text-align:left;"| Production moved to Burnaby plant in 1938. Still standing; used as commercial space. |- valign="top" | style="text-align:center;"| W | style="text-align:left;"| Winnipeg Assembly Plant | style="text-align:left;"| [[w:Winnipeg|Winnipeg, MB]] | style="text-align:left;"| Canada | style="background:LightSalmon; text-align:center;"| Operated from 1915 to 1941 | style="text-align:left;"| 1181 Portage Avenue (corner of Wall St.) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], military trucks | style="text-align:left;"| Bought by Manitoba provincial government in 1942. Became Manitoba Technical Institute. Now known as the Robert Fletcher Building |- valign="top" |} qrd3e4anv6eury5ze85v56fnfux0u9v 4656582 4656581 2026-08-07T13:41:16Z JustTheFacts33 3434282 /* Current production facilities */ 4656582 wikitext text/x-wiki {{user sandbox}} {{tmbox|type=notice|text=This is a sandbox page, a place for experimenting with Wikibooks.}} The following is a list of current, former, and confirmed future facilities of [[w:Ford Motor Company|Ford Motor Company]] for manufacturing automobiles and other components. Per regulations, the factory is encoded into each vehicle's [[w:VIN|VIN]] as character 11 for North American models. European models have the factory encoded into each vehicle's [[w:VIN|VIN]] as character 8 (except for the VW-built 3rd gen. Ford Tourneo Connect and Transit Connect, which have the plant code in position 11 as VW does for all of its models regardless of region). The River Rouge Complex manufactured most of the components of Ford vehicles, starting with the Model T. Much of the production was devoted to compiling "[[w:knock-down kit|knock-down kit]]s" that were then shipped in wooden crates to Branch Assembly locations across the United States by railroad and assembled locally, using local supplies as necessary.<ref name="MyLifeandWork">{{cite book|last=Ford|first=Henry|last2=Crowther|first2=Samuel|year=1922|title=My Life and Work|publisher=Garden City Publishing|pages=[https://archive.org/details/bub_gb_4K82efXzn10C/page/n87 81], 167|url=https://archive.org/details/bub_gb_4K82efXzn10C|quote=Ford 1922 My Life and Work|access-date=2010-06-08 }}</ref> A few of the original Branch Assembly locations still remain while most have been repurposed or have been demolished and the land reused. Knock-down kits were also shipped internationally until the River Rouge approach was duplicated in Europe and Asia. For US-built models, Ford switched from 2-letter plant codes to a 1-letter plant code in 1953. Mercury and Lincoln, however, kept using the 2-letter plant codes through 1957. Mercury and Lincoln switched to the 1-letter plant codes for 1958. Edsel, which was new for 1958, used the 1-letter plant codes from the outset. The 1956-1957 Continental Mark II, a product of the Continental Division, did not use a plant code as they were all built in the same plant. The 2-letter plant code in 1950-1952 Ford cars and 1950-1957 Mercurys and Lincolns was in position 3 & 4 of the serial number. The 1-letter plant code in 1953-1959 Ford cars, including the Ford Ranchero, and 1958-1959 Mercurys, Lincolns, and Edsels was in position 3 of the serial number. The 1-letter plant code in 1960-1980 Ford cars, including the Ford Ranchero, 1960-1980 Mercurys & Lincolns, and 1960 Edsels was in position 2 of the serial number. The 2-letter plant code in 1951-1952 Ford trucks was in position 5 & 6 of the serial number. The 1-letter plant code in 1953-1960 Ford trucks was in position 6 of the serial number. The 1-letter plant code in 1961-1980 Ford trucks, including Bronco and Econoline, was in position 5 of the serial number. Canadian-built models used a different system for VINs until 1966, when Ford of Canada adopted the same system as the US. In 1950-1959, Canadian-built cars, including the Ford Ranchero, had a plant code in the 5th position of the serial number. In 1948-1950, Canadian-built Ford and Mercury trucks had a plant code in the 5th position of the serial number. In 1951-1954, Canadian-built Ford and Mercury trucks had a plant code in the 7th position of the serial number. In 1955-1959, Canadian-built Ford and Mercury trucks had a plant code in the 9th position of the serial number. Mexican-built models often just had "MEX" inserted into the VIN instead of a plant code in the pre-standardized VIN era. European-built Fords have the source company code in the 7th position and the plant code in the 8th position beginning in 1981. From 1965-1980, the source company code was in the 1st position and the plant code was in the 2nd position. Since the letter for the plant code is sometimes used by more than one plant, the source company code immediately preceding the plant code is needed to determine which plant is being referred to. For a listing of Ford's proving grounds and test facilities see [[w:Ford Proving Grounds|Ford Proving Grounds]]. ==Current production facilities== {| class="wikitable sortable" style="font-size:90%" |- ! style="width:120px;"| VIN ! style="width:200px;"| Name ! style="width:100px;"| City/state ! style="width:100px;"| Country ! data-sort-type="isoDate" style="width:60px;" | Opened ! data-sort-type="number" style="width:80px;" | Employees ! style="width:220px;"| Products ! style="width:350px;" class="unsortable"| Comments |- valign="top" | | style="text-align:left;"| [[w:AutoAlliance Thailand|AutoAlliance Thailand]] | style="text-align:left;"| [[w:Pluak Daeng district|Pluak Daeng district]], [[w:Rayong|Rayong]] | style="text-align:left;"| [[w:Thailand|Thailand]] | style="text-align:center;"| 1998 | style="text-align:right;"| 5,400 | style="text-align:left;"| [[w:Ford Ranger (T6)|Ford Ranger (T6)]]<br /> [[w:Ford Everest|Ford Everest]]<br /> [[w:Mazda 2|Mazda 2]]<br / >[[w:Mazda 3|Mazda 3]]<br / >[[w:Mazda CX-3|Mazda CX-3]]<br />[[w:Mazda CX-30|Mazda CX-30]] | Joint venture 50% owned by Ford and 50% owned by Mazda. <br />Previously: [[w:Ford Ranger (international)#First generation (PE/PG/PH; 1998)|Ford Ranger (PE/PG/PH)]]<br />[[w:Ford Ranger (international)#Second generation (PJ/PK; 2006)|Ford Ranger (PJ/PK)]]<br /> [[w:Ford Fiesta (sixth generation)|Ford Fiesta]]<br />[[w:Ford Laser|Ford Laser]]<br /> [[w:Mazda Familia#Ninth generation (BJ; 1998–2003)|Mazda Protege]]<br />[[w:Mazda B series#UN|Mazda B-Series]]<br / >[[w:Mazda BT-50#First generation (UN; 2006)|Mazda BT-50 (UN)]] <br / >[[w:Mazda BT-50#Second generation (UP, UR; 2011)|Mazda BT-50 (T6)]] |- valign="top" | | style="text-align:left;"| [[w:Buffalo Stamping|Buffalo Stamping]] | style="text-align:left;"| [[w:Hamburg, New York|Hamburg, New York]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1950 | style="text-align:right;"| 843 | style="text-align:left;"| Body panels: Quarter Panels, Body Sides, Rear Floor Pan, Rear Doors, Roofs, front doors, hoods | Located at 3663 Lake Shore Rd. |- valign="top" | | style="text-align:left;"| [[w:Changan Ford|Changan Ford]] Chongqing Assembly | style="text-align:left;"| [[w:Chongqing|Chongqing]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| 2004 (Plant 1) <br /> 2012 (Plant 2) <br /> 2014 (Plant 3) | style="text-align:right;"| 5,000+ | style="text-align:left;"| [[w:Ford Escape#fourth|Ford Escape]] <br />[[w:Ford Mondeo Sport|Ford Mondeo Sport]]<br />[[w:Ford Focus|Ford Focus]]<br /> [[w:Ford Mondeo|Ford Mondeo]]<br />[[w:Ford Mustang Mach-E|Ford Mustang Mach-E]]<br />[[w:Lincoln Corsair|Lincoln Corsair]]<br />[[w:Lincoln Zephyr (China)|Lincoln Zephyr/Z]] | style="text-align:left;"| Joint Venture: Chongqing Changan Automobile Co., Ltd. (50%), Ford Motor Company (50%). <br />Complex includes three assembly plants. <br /> Previously: [[w:Ford EcoSport#Second generation (B515; 2012)|Ford EcoSport]]<br />[[w:Ford Escort (China)|Ford Escort]]<br />[[w:Ford Evos|Ford Evos]]<br />[[w:Ford Fiesta (fourth generation)|Ford Fiesta (Gen 4)]]<br />[[w:Ford Fiesta (fifth generation)|Ford Fiesta (Gen 5)]]<br />[[w:Ford Kuga#third|Ford Kuga]]<br /> [[w:Ford S-Max#First generation (2006)|Ford S-Max]]<br />[[w:Mazda3#First generation (BK; 2003)|Mazda 3]]<br />[[w:Volvo S40#Second generation (2004–2012)|Volvo S40]]<br />[[w:Volvo S80#S80L|Volvo S80L]] |- valign="top" | | style="text-align:left;"| [[w:Changan Ford|Changan Ford]] Chongqing Engine | style="text-align:left;"| [[w:Chongqing|Chongqing]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| 2013 | style="text-align:right;"| 1,310 | style="text-align:left;"| [[w:Ford EcoBoost engine#1.0 L Fox|Ford 1.0 L Ecoboost I3 engine]]<br />[[w:Ford Sigma engine|Ford 1.5 L Sigma I4 engine]]<br />[[w:Ford EcoBoost engine#Inline four-cylinder|Ford 1.5 L EcoBoost I4 engine]]<br /> | style="text-align:left;"| Joint Venture: Chongqing Changan Automobile Co., Ltd. (50%), Ford Motor Company (50%). |- valign="top" | | style="text-align:left;"| [[w:Changan Ford|Changan Ford]] Chongqing Transmission | style="text-align:left;"| [[w:Chongqing|Chongqing]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| 2014 | style="text-align:right;"| 1,480 | style="text-align:left;"| [[w:Ford 6F transmission|Ford 6F15 transmission]]<br />[[w:Ford 6F transmission|Ford 6F35 transmission]]<br /> | style="text-align:left;"| Joint Venture: Chongqing Changan Automobile Co., Ltd. (50%), Ford Motor Company (50%). |- valign="top" | style="text-align:center;"| J (NA) | style="text-align:left;"| [[w:Changan Ford|Changan Ford]] Hangzhou Assembly | style="text-align:left;"| [[w:Hangzhou|Hangzhou]], [[w:Zhejiang|Zhejiang]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| 2015 | style="text-align:right;"| | style="text-align:left;"| [[w:Ford Edge#Third generation (Edge L—CDX706; 2023)|Ford Edge L]]<br />[[w:Ford Explorer#Sixth generation (U625; 2020)|Ford Explorer]] <br />[[w:Lincoln Aviator#Second generation (U611; 2020)|Lincoln Aviator]]<br />[[w:Lincoln Nautilus|Lincoln Nautilus]] | style="text-align:left;"| Joint Venture: Chongqing Changan Automobile Co., Ltd. (50%), Ford Motor Company (50%). <br /> Previously: [[w:Ford Edge#Second generation (CD539; 2015)|Ford Edge Plus]]<br />[[w:Ford Taurus (China)|Ford Taurus]] |- valign="top" | | style="text-align:left;"| [[w:Changan Ford|Changan Ford]] <br> Harbin Assembly | style="text-align:left;"| [[w:Harbin|Harbin]], [[w:Heilongjiang|Heilongjiang]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| 2016 (Start of Ford production) | style="text-align:right;"| | style="text-align:left;"| Production suspended in Nov. 2019 | style="text-align:left;"| Plant formerly belonged to Harbin Hafei Automobile Group Co. Bought by Changan Ford in 2015. Joint Venture: Chongqing Changan Automobile Co., Ltd. (50%), Ford Motor Company (50%). <br /> Previously: [[w:Ford Focus (third generation)|Ford Focus]] (Gen 3)<br>[[w:Ford Focus (fourth generation)|Ford Focus]] (Gen 4) |- valign="top" | style="text-align:center;"| CHI/CH/G (NA) | style="text-align:left;"| [[w:Chicago Assembly|Chicago Assembly]] | style="text-align:left;"| [[w:Chicago|Chicago]], [[w:Illinois|Illinois]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1924 | style="text-align:right;"| 4,852 | style="text-align:left;"| [[w:Ford Explorer#Sixth generation (U625; 2020)|Ford Explorer (U625)]] (2020-)<br />[[w:Lincoln Aviator#Second generation (U611; 2020)|Lincoln Aviator (U611)]] (2020-) | style="text-align:left;"| Located at 12600 S Torrence Avenue.<br/>Replaced the previous location at 3915 Wabash Avenue.<br /> Built armored personnel carriers for US military during WWII. <br /> Final Taurus rolled off the assembly line March 1, 2019.<br />Previously: <br /> [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:Ford Model 48|Ford Model 48]]<br />[[w:1937 Ford|1937 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />[[w:1949 Ford|1949 Ford]]<br />[[w:1952 Ford|1952 Ford]]<br />[[w:1955 Ford|1955 Ford]]<br />[[w:1957 Ford|1957 Ford]]<br />[[w:Ford F-Series|Ford F-Series]] (1953-1964) <br /> [[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1965)<br />[[w:Ford Galaxie|Ford Galaxie]] (1959-1973)<br />[[w:Ford LTD (Americas)|Ford LTD (full-size)]] (1968, 1970-1972, 1974)<br />[[w:Ford Torino|Ford Torino]] (1974-1976)<br />[[w:Ford Elite|Ford Elite]] (1974-1976)<br /> [[w:Ford Thunderbird|Ford Thunderbird]] (1977-1980)<br />[[w:Ford Granada (North America)#Second generation (1981–1982)|Ford Granada]] (1981-1982)<br />[[w:Mercury Cougar#Fifth generation (1980–1982)|Mercury Cougar]] (non-XR-7 models only) (1981-1982)<br />[[w:Ford LTD (Americas)#Fourth generation (1983–1986)|Ford LTD (midsize)]] (1983-1986)<br />[[w:Mercury Marquis#Fourth generation (1983–1986)|Mercury Marquis]] (1983-1986)<br />[[w:Ford Taurus|Ford Taurus]] (1986–2019)<br />[[w:Mercury Sable|Mercury Sable]] (1986–2005, 2008-2009)<br />[[w:Ford Five Hundred|Ford Five Hundred]] (2005-2007)<br />[[w:Mercury Montego#Third generation (2005–2007)|Mercury Montego]] (2005-2007)<br />[[w:Lincoln MKS|Lincoln MKS]] (2009-2016)<br />[[w:Ford Freestyle|Ford Freestyle]] (2005-2007)<br />[[w:Ford Taurus X|Ford Taurus X]] (2008-2009)<br />[[w:Ford Explorer#Fifth generation (U502; 2011)|Ford Explorer (U502)]] (2011-2019) |- valign="top" | | style="text-align:left;"| Chicago Stamping | style="text-align:left;"| [[w:Chicago Heights, Illinois|Chicago Heights, Illinois]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1956 | style="text-align:right;"| 1,165 | | Located at 1000 E Lincoln Hwy, Chicago Heights, IL |- valign="top" | | style="text-align:left;"| [[w:Chihuahua Engine|Chihuahua Engine]] | style="text-align:left;"| [[w:Chihuahua, Chihuahua|Chihuahua, Chihuahua]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| 1983 | style="text-align:right;"| 2,430 | style="text-align:left;"| [[w:Mazda L engine|Ford Duratec 2.0/2.3/2.5 I4]] <br />[[w:Ford EcoBoost engine#1.5 L Dragon|Ford 1.5L Dragon EcoBoost I3]] <br /> [[w:Ford Power Stroke engine#6.7 Power Stroke|Ford 6.7L Scorpion Diesel V8]] | style="text-align:left;"| Began operations July 27, 1983. 1,902,600 Penta engines produced from 1983-1991. 2,340,464 Zeta engines produced from 1993-2004. Over 14 million total engines produced. Complex includes 3 engine plants. Plant 1, opened in 1983, builds 4-cylinder engines. Plant 2, opened in 2010, builds diesel V8 engines. Plant 3, opened in 2018, builds the Dragon 3-cylinder. <br /> Previously: [[w:Ford HSC engine|Ford HSC/Penta engine]]<br />[[w:Ford Zeta engine|Ford Zeta engine]]<br />[[w:Ford 4.4 Turbo Diesel|4.4L Diesel V8]] (for Land Rover) |- valign="top" | | style="text-align:left;"| [[w:Cleveland Engine|Cleveland Engine]] #1 | style="text-align:left;"| [[w:Brook Park, Ohio|Brook Park, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1951 | style="text-align:right;"| 1,834 | style="text-align:left;"| [[w:Ford EcoBoost engine#2.0 L (2010–2015)|Ford 2.0/2.3 EcoBoost I4]]<br /> [[w:Ford EcoBoost engine#3.5 L (first generation)|Ford 3.5&nbsp;L EcoBoost V6]]<br />[[w:Ford Cyclone engine|Ford 3.5/3.7 Cyclone V6 (for RWD vehicles)]] | style="text-align:left;"| Located at 17601 Brookpark Rd. Idled from May 2007 to May 2009.<br />Previously: [[w:Lincoln Y-block V8 engine|Lincoln Y-block V8 engine]]<br />[[w:Ford small block engine|Ford 221/260/289/302 Windsor V8]]<br />[[w:Ford Duratec V6 engine#3.0 L|Ford 3.0L Duratec V6]] |- valign="top" | style="text-align:center;"| A (EU) [when following G] [includes Mercury Capri] /<br> E (NA) <br> [Merkur Scorpio] | style="text-align:left;"| [[w:Cologne Body & Assembly|Cologne Body & Assembly]] | style="text-align:left;"| [[w:Cologne|Cologne]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| 1931 | style="text-align:right;"| 4,090 | style="text-align:left;"| [[w:Ford Explorer EV|Ford Explorer EV]] (VW MEB-based) <br /> [[w:Ford Capri EV|Ford Capri EV]] (VW MEB-based) | Previously: [[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:Ford Model B (1932)|Ford Model B]]<br />[[w:Ford Rheinland|Ford Rheinland]]<br />[[w:Ford Köln|Ford Köln]]<br />[[w:Ford Eifel|Ford Eifel]]<br />[[w:Ford Taunus|Ford Taunus]]<br /> [[w:Ford Transit#Taunus Transit (1953)|Ford Taunus Transit]]<br />[[w:Ford Capri|Ford Capri]]<br />[[w:Mercury Capri#First generation (1970–1978)|Mercury Capri]] (1970-1974, 1976-1977)<br />[[w:Ford Consul#Ford Consul (Granada Mark I based) (1972–1975)|Ford Consul]]<br />[[w:Ford Granada (Europe)|Ford Granada]]<br />[[w:Ford Sierra|Ford Sierra]]<br />[[w:Ford Mondeo (first generation)|Ford Mondeo]]<br />[[w:Ford Scorpio|Ford Scorpio]]<br />[[w:Merkur Scorpio|Merkur Scorpio]] (1988-1989)<br />[[w:Ford Fiesta|Ford Fiesta]] <br /> [[w:Ford Fusion (Europe)|Ford Fusion]]<br />[[w:Ford Puma (sport compact)|Ford Puma]]<br />[[w:Ford Courier#Europe (1991–2002)|Ford Courier]]<br />[[w:de:Ford Modell V8-51|Ford Model V8-51]]<br />[[w:de:Ford V-3000-Serie|Ford V-3000/Ford B 3000 series]]<br />[[w:Ford Rhein|Ford Rhein]]<br />[[w:Ford Ruhr|Ford Ruhr]]<br />[[w:Ford FK|Ford FK]] |- valign="top" | | style="text-align:left;"| Cologne Engine | style="text-align:left;"| [[w:Cologne|Cologne]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| 1962 | style="text-align:right;"| 810 | style="text-align:left;"| [[w:Ford EcoBoost engine#1.0 L Fox|1.0 litre EcoBoost I3]] <br /> [[w:Aston Martin V12 engine|Aston Martin V12 engine]] | style="text-align:left;"| Aston Martin engines are built at the [[w:Aston Martin Engine Plant|Aston Martin Engine Plant]], a special section of the plant which is separated from the rest of the plant.<br> Previously: <br /> [[w:Ford Taunus V4 engine|Ford Taunus V4 engine]]<br />[[w:Ford Cologne V6 engine|Ford Cologne V6 engine]]<br />[[w:Jaguar AJ-V8 engine#Aston Martin 4.3/4.7|Aston Martin 4.3/4.7 V8]] |- valign="top" | | style="text-align:left;"| Cologne Tool & Die | style="text-align:left;"| [[w:Cologne|Cologne]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| 1963 | style="text-align:right;"| 1,140 | style="text-align:left;"| Tooling, dies, fixtures, jigs, die repair | |- valign="top" | | style="text-align:left;"| Cologne Transmission | style="text-align:left;"| [[w:Cologne|Cologne]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| 1935 | style="text-align:right;"| 1,280 | style="text-align:left;"| [[w:Ford MTX-75 transmission|Ford MTX-75 transmission]]<br /> [[w:Ford MTX-75 transmission|Ford VXT-75 transmission]]<br />Ford VMT6 transmission<br />[[w:Volvo Cars#Manual transmissions|Volvo M56/M58/M66 transmission]]<br />Ford MMT6 transmission | Formerly part of the [[w:Getrag Ford Transmission|Getrag Ford Transmission]] joint venture. Returned to 100% Ford ownership in 2021. |- valign="top" | | style="text-align:left;"| Cortako Cologne GmbH | style="text-align:left;"| [[w:Cologne|Cologne]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| 1961 | style="text-align:right;"| 410 | style="text-align:left;"| Forging of steel parts for engines, transmissions, and chassis | Originally known as Cologne Forge & Die Cast Plant. Previously known as Tekfor Cologne GmbH from 2003 to 2011, a 50/50 joint venture between Ford and Neumayer Tekfor GmbH. Also briefly known as Cologne Precision Forge GmbH. Bought back by Ford in 2011 and now 100% owned by Ford. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Coscharis Motors Assembly Ltd. | style="text-align:left;"| [[w:Lagos|Lagos]] | style="text-align:left;"| [[w:Nigeria|Nigeria]] | style="text-align:center;"| | style="text-align:right;"| | style="text-align:left;"| [[w:Ford Ranger (T6)|Ford Ranger]] | style="text-align:left;"| Plant owned by Coscharis Motors Assembly Ltd. Built under contract for Ford. |- valign="top" | style="text-align:center;"| M (NA) | style="text-align:left;"| [[w:Cuautitlán Assembly|Cuautitlán Assembly]] | style="text-align:left;"| [[w:Cuautitlán Izcalli|Cuautitlán Izcalli]], [[w:Mexico State|Mexico State]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| 1964 | style="text-align:right;"| 1,000 | style="text-align:left;"| [[w:Ford Mustang Mach-E|Ford Mustang Mach-E]] (2021-) | Truck assembly began in 1970 while car production began in 1980. <br /> Previously made:<br /> [[w:Ford F-Series|Ford F-Series]] (1992-2010) <br> (US: F-250 '97, F-350 '97,<br> F-Super Duty chassis cab '97,<br> F-150 Reg. Cab '00-'02,<br> Mexico: includes F-150 & Lobo)<br />[[w:Ford F-Series (medium-duty truck)#Sixth generation (1980–1999)|Ford F-800]] (US: 1999) <br />[[w:Ford F-Series (medium-duty truck)#Seventh generation (2000–2015)|Ford F-650/F-750]] (2000-2003) <br /> [[w:Ford Fiesta (sixth generation)|Ford Fiesta]] (2011-2019)<br />[[w:Ford Contour|Ford Contour]] (1995-2000)<br />[[w:Mercury Mystique|Mercury Mystique]] (1995-2000)<br />For Mexico only:<br>[[w:Ford Ikon#First generation (1999–2011)|Ford Fiesta Ikon]] (2001-2009)<br />[[w:Ford Topaz|Ford Topaz]]<br />[[w:Mercury Topaz|Ford Ghia]]<br />[[w:Ford LTD (Americas)#Third generation (1979–1982)|Ford LTD]] (Mexico: 1980-1981)<br />[[w:Ford Grand Marquis|Ford Grand Marquis]] (Mexico: 1982-84)<br />[[w:Mercury Sable|Ford Taurus]]<br />[[w:Ford Thunderbird|Ford Thunderbird]]<br />[[w:Mercury Cougar|Ford Cougar]]<br />[[w:Ford Mustang (third generation)|Ford Mustang]] Gen 3 (1979-1984) |- valign="top" | | style="text-align:left;"| [[w:Ford Dagenham|Dagenham Engine]] | style="text-align:left;"| [[w:Dagenham|Dagenham]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| 1931 | style="text-align:right;"| 2,000 | style="text-align:left;"| [[w:Ford EcoBlue engine|Ford EcoBlue engine]] (Panther)<br /> [[w:Ford AJD-V6/PSA DT17#Lion V6|Ford 2.7/3.0 Lion Diesel V6]] |Previously: [[w:Ford I4 DOHC engine|Ford I4 DOHC engine]]<br />[[w:Ford Endura-D engine|Ford Endura-D engine]] (Lynx)<br />[[w:Ford Duratorq engine#ZSD ("Puma")|Ford Puma I4 diesel engine]]<br />[[w:Ford Essex V4 engine|Ford Essex V4 engine]]<br />[[w:Ford Essex V6 engine (UK)|Ford Essex V6 engine (UK)]]<br />[[w:Ford LT engine|Ford LT engine]]<br />[[w:Ford York engine|Ford York engine]]<br />[[w:Ford Dorset/Dover engine|Ford Dorset/Dover engine]] <br /> [[w:Ford AJD-V6/PSA DT17#Lion V8|Ford 3.6L Diesel V8]] <br /> [[w:Ford DLD engine|Ford DLD engine]] (Tiger) |- valign="top" | style="text-align:center;"| W (NA) | style="text-align:left;"| [[w:Ford River Rouge Complex|Ford Rouge Electric Vehicle Center]] | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 2021 | style="text-align:right;"| 2,200 | style="text-align:left;"| | style="text-align:left;"| Part of the River Rouge Complex. <br> Previously: [[w:Ford F-150 Lightning|Ford F-150 Lightning EV]] (2022-2025) |- valign="top" | | style="text-align:left;"| Dearborn Diversified Manufacturing Plant | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1942 | style="text-align:right;"| 773 | style="text-align:left;"| Axles, suspension parts. Frames for F-Series trucks. | style="text-align:left;"| Part of the River Rouge Complex. |- valign="top" | | style="text-align:left;"| [[w:Ford River Rouge Complex|Dearborn Engine]] | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1941 | style="text-align:right;"| 445 | style="text-align:left;"| [[w:Mazda L engine#2.0 L (LF-DE, LF-VE, LF-VD)|Ford Duratec 20]]<br />[[w:Mazda L engine#2.3L (L3-VE, L3-NS, L3-DE)|Ford Duratec 23]]<br />[[w:Mazda L engine#2.5 L (L5-VE)|Ford Duratec 25]] <br />[[w:Ford Modular engine#Carnivore|Ford 5.2L Carnivore V8]] <br>(F-150 Raptor R)<br />[[w:Ford Modular engine#Predator|Ford 5.2L Predator V8]] (Mustang GTD,<br> Dark Horse SC)<br />Engine components | style="text-align:left;"| Part of the River Rouge Complex. Carnivore & Predator engines are produced on a new Niche Engine line at the Dearborn Engine Plant which replaced the Niche Engine line at the now closed Romeo Engine Plant. <br /> Previously: [[w:Ford FE engine|Ford FE engine]]<br />[[w:Ford CVH engine|Ford CVH engine]] |- valign="top" | | style="text-align:left;"| [[w:Ford River Rouge Complex|Dearborn Stamping]] | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1939 | style="text-align:right;"|1,658 | style="text-align:left;"| Body stampings | Part of the River Rouge Complex. |- valign="top" | | style="text-align:left;"| Dearborn Tool & Die | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1938 | style="text-align:right;"| 271 | style="text-align:left;"| Tooling | style="text-align:left;"| Part of the River Rouge Complex. |- valign="top" | style="text-align:center;"| F (NA) | style="text-align:left;"| [[w:Dearborn Truck|Dearborn Truck]] | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 2004 | style="text-align:right;"| 6,131 | style="text-align:left;"| [[w:Ford F-Series (fourteenth generation)|Ford F-150]] (2021-) | style="text-align:left;"| Part of the River Rouge Complex. Located at 3001 Miller Rd. Replaced the nearby Dearborn Assembly Plant for MY2005. Built the 40 millionth Ford <br> F-Series in Jan. 2022, which was an <br> F-150 Tremor.<br />Previously: <br />[[w:Ford F-Series (eleventh generation)|Ford F-Series (eleventh generation)]] (2005-2008 F-150)<br />[[w:Ford F-Series (twelfth generation)|Ford F-Series (twelfth generation)]] (2009-2014 F-150)<br />[[w:Ford F-Series (thirteenth generation)|Ford F-Series (thirteenth generation)]] (2015-2020 F-150)<br />[[w:Lincoln Mark LT|Lincoln Mark LT]] (2006-2008) |- valign="top" | style="text-align:center;"| 0 (NA) | style="text-align:left;"| Detroit Chassis LLC | style="text-align:left;"| [[w:Detroit, Michigan|Detroit, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 2000 | | style="text-align:left;"| Ford F-53 Motorhome Chassis (2000-)<br/>Ford F-59 Commercial Chassis (2000-) | Located at 6501 Lynch Rd. Replaced production at IMMSA in Mexico. Plant owned by Detroit Chassis LLC. Produced under contract for Ford. <br /> Previously: [[w:Think Global#TH!NK Neighbor|Ford TH!NK Neighbor]] |- valign="top" | | style="text-align:left;"| [[w:Essex Engine|Essex Engine]] | style="text-align:left;"| [[w:Windsor, Ontario|Windsor, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| 1981 | style="text-align:right;"| 930 | style="text-align:left;"| [[w:Ford Modular engine#5.0 L Coyote|Ford 5.0L Coyote V8]]<br />Engine components | style="text-align:left;"|Idled in November 2007, reopened February 2010. Previously: <br />[[w:Ford Essex V6 engine (Canadian)|Ford Essex V6 engine (Canadian)]] 3.8/3.9/4.2L <br />[[w:Ford Modular engine|Ford 5.4L 3-valve Modular V8]]<br/>[[w:Ford Modular engine# Boss 302 (Road Runner) variant|Ford 5.0L Road Runner V8]] |- valign="top" | style="text-align:center;"| 5 (NA) | style="text-align:left;"| [[w:Flat Rock Assembly Plant|Flat Rock Assembly Plant]] | style="text-align:left;"| [[w:Flat Rock, Michigan|Flat Rock, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1987 | style="text-align:right;"| 1,826 | style="text-align:left;"| [[w:Ford Mustang (seventh generation)|Ford Mustang (Gen 7)]] (2024-) | style="text-align:left;"| Built at site of closed Ford Michigan Casting Center (1972-1981) , which cast various parts for Ford including V8 engine blocks and heads for Ford [[w:Ford 335 engine|335]], [[w:Ford 385 engine|385]], & [[w:Ford FE engine|FE/FT series]] engines as well as transmission, axle, & steering gear housings and gear cases. Opened as a Mazda plant (Mazda Motor Manufacturing USA) in 1987. Became AutoAlliance International from 1992 to 2012 after Ford bought 50% of the plant from Mazda. Became Flat Rock Assembly Plant in 2012 when Mazda ended production and Ford took full management control of the plant. <br /> Previously: <br />[[w:Ford Mustang (sixth generation)|Ford Mustang (Gen 6)]] (2015-2023)<br /> [[w:Ford Mustang (fifth generation)|Ford Mustang (Gen 5)]] (2005-2014)<br /> [[w:Lincoln Continental#Tenth generation (2017–2020)|Lincoln Continental]] (2017-2020)<br />[[w:Ford Fusion (Americas)|Ford Fusion]] (2014-2016)<br />[[w:Mercury Cougar#Eighth generation (1999–2002)|Mercury Cougar]] (1999-2002)<br />[[w:Ford Probe|Ford Probe]] (1989-1997)<br />[[w:Mazda 6|Mazda 6]] (2003-2013)<br />[[w:Mazda 626|Mazda 626]] (1990-2002)<br />[[w:Mazda MX-6|Mazda MX-6]] (1988-1997) |- valign="top" | style="text-align:center;"| 2 (NA) | style="text-align:left;"| [[w:Ford Lio Ho|Ford Lio Ho Assembly]] | style="text-align:left;"| [[w:Zhongli District|Zhongli District]], [[w:Taoyuan, Taiwan|Taoyuan]] | style="text-align:left;"| [[w:Taiwan|Taiwan]] | style="text-align:center;"| 1973 | style="text-align:right;"| 800 | style="text-align:left;"| [[w:Ford Focus|Ford Focus]]<br /> Ford Focus Active <br /> [[w:Ford Kuga|Ford Kuga]]<br /> [[w:Ford Territory (China)#Second generation (CX743MCA; 2022)|Ford Territory]] | Joint venture 70% owned by Ford and 30% owned by Lio Ho Group. <br /> Previously: [[w:Ford Laser#Ford Tierra|Ford Activa]]<br />[[w:Ford Aztec|Ford Aztec]]<br />[[w:Ford Cortina|Ford Cortina]]<br />[[w:Ford Econovan|Ford Econovan]]<br />[[w:Ford Escape|Ford Escape]]<br />[[w:Ford Escort (Europe)|Ford Escort (Europe)]]<br />[[w:Ford Escort (China)|Ford Escort (Chinese)]]<br />[[w:Ford Festiva|Ford Festiva]]<br />Ford Fiera<br />[[w:Ford Fiesta (sixth generation)|Ford Fiesta]]<br />[[w:Ford Granada (Europe)|Ford Granada]]<br />[[w:Ford Ixion|Ford Ixion]]<br />[[w:Ford i-Max|Ford i-Max]]<br />[[w:Ford Laser|Ford Laser]]<br />[[w:Ford Liata|Ford Liata]]<br />[[w:Ford Mondeo|Ford Mondeo]]<br />[[w:Ford Pronto|Ford Pronto]]<br />[[w:Ford Telstar|Ford Telstar]]<br />[[w:Ford Tierra|Ford Tierra]] <br /> [[w:Mercury Tracer#First generation (1987–1989)|Mercury Tracer]] (Canadian market)<br />[[w:Mazda 3|Mazda 3]]<br />[[w:Mazda Familia|Mazda 323 Protege]]<br />[[w:Mazda Premacy|Mazda Premacy]]<br />[[w:Mazda 5|Mazda 5]]<br />[[w:Mazda E-Series|Mazda E-Series]]<br />[[w:Mazda Tribute|Mazda Tribute]] |- valign="top" | | style="text-align:left;"| [[w:Ford Lio Ho|Ford Lio Ho Engine]] | style="text-align:left;"| [[w:Zhongli District|Zhongli District]], [[w:Taoyuan, Taiwan|Taoyuan]] | style="text-align:left;"| [[w:Taiwan|Taiwan]] | style="text-align:center;"| | style="text-align:right;"| 90 | style="text-align:left;"| [[w:Mazda L engine|Mazda L engine]] (1.8, 2.0, 2.3) | Joint venture 70% owned by Ford and 30% owned by Lio Ho Group. <br /> Previously: <br /> [[w:Ford Zeta engine|Ford Zeta engine]]<br />[[w:Mazda Z engine#Z6/M|Mazda 1.6 ZM-DE I4]]<br />[[w:Mazda F engine|Mazda F engine]] (1.8, 2.0)<br /> [[w:Suzuki F engine#Four-cylinder|Suzuki 1.0 I4]] (for Ford Pronto) |- valign="top" | style="text-align:center;"| J (EU) [when following M] (for Ford),<br> S (for VW) | style="text-align:left;"| [[w:Ford Motor Company of Southern Africa|Ford Motor Company of Southern Africa]] Silverton Assembly Plant | style="text-align:left;"| [[w:Silverton, Pretoria|Silverton]] | style="text-align:left;"| [[w:South Africa|South Africa]] | style="text-align:center;"| 1967 | style="text-align:right;"| 4,650 | style="text-align:left;"| [[w:Ford Ranger (international)|Ford Ranger]]<br /> [[w:Ford Everest|Ford Everest]]<br />[[w:Volkswagen Amarok#Second generation (2022)|VW Amarok]] | Silverton plant was originally a Chrysler of South Africa plant from 1961 to 1976. In 1976, it merged with a unit of mining company Anglo-American to form Sigma Motor Corp., which Chrysler retained 25% ownership of. Chrysler sold its 25% stake to Anglo-American in 1983. Sigma was restructured into Amcar Motor Holdings Ltd. in 1984. In 1985, Amcar merged with Ford South Africa to form SAMCOR (South African Motor Corporation). Sigma had already assembled Mazda & Mitsubishi vehicles previously and SAMCOR continued to do so. In 1988, Ford divested from South Africa & sold its stake in SAMCOR. SAMCOR continued to build Ford vehicles as well as Mazdas & Mitsubishis. In 1994, Ford bought a 45% stake in SAMCOR and it bought the remaining 55% in 1998. It then renamed the company Ford Motor Company of Southern Africa in 2000. <br /> Previously: [[w:Ford Laser#South Africa|Ford Laser]]<br />[[w:Ford Laser#South Africa|Ford Meteor]]<br />[[w:Ford Tonic|Ford Tonic]]<br />[[w:Ford_Laser#South_Africa|Ford Tracer]]<br />[[w:Mazda 323|Mazda 323]]<br />[[w:Mazda Familia|Mazda Etude]]<br />[[w:Mazda Familia#Export markets 2|Mazda Sting]]<br />[[w:Sao Penza|Sao Penza]]<br />[[w:Mazda Familia#Lantis/Astina/323F|Mazda 323 Astina]]<br />[[w:Ford Focus (second generation, Europe)|Ford Focus]]<br />[[w:Mazda 3|Mazda 3]]<br />[[w:Ford Bantam|Ford Bantam]]<br />[[w:Mazda Rustler|Mazda Rustler]]<br />[[w:Mitsubishi Delica#Second generation (1979)|Ford Husky]]<br />[[w:Mitsubishi Delica#Second generation (1979)|Mitsubishi Starwagon]]<br />[[w:Ford Fiesta (fourth generation)|Ford Fiesta]]<br />[[w:Ford Fiesta (fourth generation)#Mazda 121|Mazda 121 Soho]]<br />[[w:Ford Ikon#First generation (1999–2011)|Ford Ikon]]<br />[[w:Ford Sierra|Ford Sierra]]<br />[[w:Ford Sapphire|Ford Sapphire]]<br />[[w:Ford Telstar|Ford Telstar]]<br />[[w:Mazda 626|Mazda 626]]<br />[[w:Mazda MX-6|Mazda MX-6]]<br />[[w:Ford Mondeo (first generation)|Ford Mondeo]]<br />[[w:Ford Courier#Third generation (1985–1998)|Ford Courier]]<br />[[w:Mazda B-Series|Mazda B-Series]]<br />[[w:Mazda Drifter|Mazda Drifter]]<br />[[w:Mazda BT-50|Mazda BT-50]] Gen 1 & Gen 2<br />[[w:Ford Spectron|Ford Spectron]]<br />[[w:Mazda Bongo|Mazda Marathon]]<br /> [[w:Mitsubishi Fuso Canter#Fourth generation|Mitsubishi Canter]]<br />[[w:Land Rover Defender|Land Rover Defender]] <br/>[[w:Volvo S40|Volvo S40/V40]] |- valign="top" | | style="text-align:left;"| [[w:Ford Motor Company of Southern Africa|Ford Motor Company of Southern Africa]] Struandale Engine Plant | style="text-align:left;"| Struandale, [[w:Port Elizabeth|Port Elizabeth]] | style="text-align:left;"| [[w:South Africa|South Africa]] | style="text-align:center;"| 1964 | style="text-align:right;"| 850 | style="text-align:left;"| [[w:Ford EcoBlue engine|Ford 2.0L Panther EcoBlue single-turbodiesel & twin-turbodiesel I4]]<br />[[w:Ford Power Stroke engine#3.0 Power Stroke|Ford 3.0 Lion turbodiesel V6]]<br />[[w:Ford Duratorq engine#ZSD ("Puma")|Ford 2.2/3.2 Puma diesel engine]]<br />Machining of engine components | Previously: [[w:Ford Kent engine#Crossflow|Ford Kent Crossflow I4 engine]]<br />[[w:Ford CVH engine#CVH-PTE|Ford 1.4L CVH-PTE engine]]<br />[[w:Ford Zeta engine|Ford 1.6L EFI Zetec I4]]<br /> [[w:Ford Sigma engine#Zetec RoCam|Ford Zetec RoCam engine]]<br />[[w:Ford Essex V6 engine (UK)|Ford Essex V6 engine (UK)]] |- valign="top" | style="text-align:center;"|T (EU) [when following T],<br> T (NA) ('10-'13 Transit Connect) | style="text-align:left;"| [[w:Otosan|Ford Otosan Assembly - Gölcük]] | style="text-align:left;"| [[w:Gölcük, Kocaeli|Gölcük, Kocaeli]] | style="text-align:left;"| [[w:Turkey|Turkey]] | style="text-align:center;"| 2001 | style="text-align:right;"| 7,530 | style="text-align:left;"| [[w:Ford Transit#Fourth generation (2014)|Ford Transit]] (Gen 4) | style="text-align:left;"| Ford Otosan is 41% owned by Ford, 41% owned by Koç Holding and 18% publicly traded in Turkey. Transit Connect started shipping to the US in fall of 2009. <br /> Previously: <br />[[w:Ford Transit#Third generation (2000)|Ford Transit]] (Gen 3)<br /> [[w:Ford Transit Connect#First generation (2002)|Ford Transit Connect]] (Gen 1)<br />[[w:Ford Transit Connect#First generation (2002)|Ford Tourneo Connect]] (Gen 1)<br /> [[w:Ford Transit Custom# First generation (2012)|Ford Transit Custom]] (Gen 1)<br />[[w:Ford Transit Custom# First generation (2012)|Ford Tourneo Custom]] (Gen 1) |- valign="top" | style="text-align:center;"| A (EU) [when following T] (for Ford),<br> K (for VW) | style="text-align:left;"| [[w:Otosan|Ford Otosan Assembly - Yeniköy]] | style="text-align:left;"| [[w:tr:Yeniköy Merkez, Başiskele|Yeniköy Merkez]], [[w:Başiskele|Başiskele]], [[w:Kocaeli Province|Kocaeli]] | style="text-align:left;"| [[w:Turkey|Turkey]] | style="text-align:center;"| 2014 | style="text-align:right;"| | style="text-align:left;"| [[w:Ford Transit Custom#Second generation (2023)|Ford Transit Custom]] (Gen 2)<br /> [[w:Ford Transit Custom#Second generation (2023)|Ford Tourneo Custom]] (Gen 2) <br /> [[w:Volkswagen Transporter (T7)|Volkswagen Transporter/Caravelle (T7)]] | style="text-align:left;"| Ford Otosan is 41% owned by Ford, 41% owned by Koç Holding and 18% publicly traded in Turkey. <br /> Previously: [[w:Ford Transit Courier#First generation (2014)| Ford Transit Courier]] (Gen 1) <br /> [[w:Ford Transit Courier#First generation (2014)|Ford Tourneo Courier]] (Gen 1) |- valign="top" |style="text-align:center;"| P (EU) [when following T] | style="text-align:left;"| [[w:Otosan|Ford Otosan Truck Assembly & Engine Plant]] | style="text-align:left;"| [[w:Inonu, Eskisehir|Inonu, Eskisehir]] | style="text-align:left;"| [[w:Turkey|Turkey]] | style="text-align:center;"| 1982 | style="text-align:right;"| 350 | style="text-align:left;"| [[w:Ford EcoBlue engine|Ford 2.0L "Panther" EcoBlue diesel I4]]<br /> [[w:Ford Cargo|Ford F-Line]] truck<br />[[w:Ford F-MAX|Ford F-MAX]]<br />[[w:Ford Ecotorq engine|Ford 9.0L/12.7L Ecotorq diesel I6]]<br />Ford EcoTorq transmission<br /> Rear Axle for Ford Transit | Ford Otosan is 41% owned by Ford, 41% owned by Koç Holding and 18% publicly traded in Turkey. <br /> Previously: <br /> [[w:Ford D series|Ford D series]]<br /> [[w:Ford Cargo|Ford Cargo]] truck<br />[[w:Ford Zeta engine|Ford 1.6 Zetec I4]]<br />[[w:Ford York engine|Ford 2.5 DI diesel I4]]<br />[[w:Ford Duratorq engine#ZSD ("Puma")|Ford Puma I4/I5 diesel engine]]<br />[[w:Ford Dorset/Dover engine|Ford 6.0/6.2 diesel inline-6]]<br />[[w:Ford Ecotorq engine|7.3L Ecotorq diesel I6]]<br />[[w:Ford MT75 transmission|Ford MT75 transmission]] for Transit |- valign="top" | style="text-align:center;"| R (EU) [when following E] | style="text-align:left;"| [[w:Ford Romania|Ford Romania/<br>Ford Otosan Romania]]<br> Craiova Assembly & Engine Plant | style="text-align:left;"| [[w:Craiova|Craiova]] | style="text-align:left;"| [[w:Romania|Romania]] | style="text-align:center;"| 2009 | style="text-align:right;"| 4,000 | style="text-align:left;"| [[w:Ford Puma (crossover)|Ford Puma]] (2020-)<br />[[w:Ford Puma Gen-E|Ford Puma Gen-E]] EV (2025-)<br />[[w:Ford Transit Courier#Second generation (2023)|Ford Transit Courier/Tourneo Courier]] (Gen 2) (2023-)<br /> [[w:Ford EcoBoost engine#Inline three-cylinder|Ford 1.0 Fox EcoBoost I3]] | Plant was originally Oltcit, a 64/36 joint venture between Romania and Citroen established in 1976. In 1991, Citroen withdrew and the car brand became Oltena while the company became Automobile Craiova. In 1994, it established a 49/51 joint venture with Daewoo called Rodae Automobile which was renamed Daewoo Automobile Romania in 1997. Engine and transmission plants were added in 1997. Following Daewoo’s collapse in 2000, the Romanian government bought out Daewoo’s 51% stake in 2006. Ford bought a 72.4% stake in Automobile Craiova in 2008, which was renamed Ford Romania. Ford increased its stake to 95.63% in 2009. In 2022, Ford transferred ownership of the Craiova plant to its Turkish joint venture Ford Otosan. <br /> Previously:<br> [[w:Ford Transit Connect#First generation (2002)|Ford Transit Connect]] (Gen 1) (2010-2012)<br /> [[w:Ford B-Max|Ford B-Max]] (2012-2017) <br /> [[w:Ford EcoSport#Second generation (B515; 2012)|Ford EcoSport]] (2018-2022) <br /> [[w:Ford EcoBoost engine#Inline four-cylinder|Ford 1.5 Sigma EcoBoost I4]] |- valign="top" | | style="text-align:left;"| [[w:Ford Thailand Manufacturing|Ford Thailand Manufacturing]] | style="text-align:left;"| [[w:Pluak Daeng district|Pluak Daeng district]], [[w:Rayong|Rayong]] | style="text-align:left;"| [[w:Thailand|Thailand]] | style="text-align:center;"| 2012 | style="text-align:right;"| 3,000 | style="text-align:left;"| [[w:Ford Ranger (T6)|Ford Ranger (T6)]] | Previously: [[w:Ford EcoSport#Second generation (B515; 2012)|Ford EcoSport]]<br /> [[w:Ford Focus (third generation)|Ford Focus]]<br /> [[w:Ford Fiesta (sixth generation)|Ford Fiesta]] |- valign="top" | | style="text-align:left;"| [[w:Ford Vietnam|Hai Duong Assembly, Ford Vietnam, Ltd.]] | style="text-align:left;"| [[w:Hai Duong|Hai Duong]] | style="text-align:left;"| [[w:Vietnam|Vietnam]] | style="text-align:center;"| 1995 | style="text-align:right;"| 1,250 | style="text-align:left;"| [[w:Ford Transit#Transit T8 (2023-present)|Ford Transit]] (Gen 4-based)<br /> [[w:Ford Ranger (T6)|Ford Ranger (T6)]]<br /> [[w:Ford Territory (China)#Second generation (CX743MCA; 2022)|Ford Territory]] | Joint venture 75% owned by Ford and 25% owned by Song Cong Diesel Company. <br />Previously: [[w:Ford Laser|Ford Laser]]<br />[[w:Ford Econovan|Ford Econovan]]<br /> [[w:Ford Tourneo|Ford Tourneo]]<br /> [[w:Ford Ranger (international)|Ford Ranger]]<br /> [[w:Ford Escape|Ford Escape]]<br /> [[w:Ford Mondeo|Ford Mondeo]]<br /> [[w:Ford Fiesta (sixth generation)|Ford Fiesta]]<br />[[w:Ford Focus|Ford Focus]]<br />[[w:Ford EcoSport#Second generation (B515; 2012)|Ford Ecosport]]<br />[[w:Ford Everest|Ford Everest]] <br /> [[w:Ford Transit#2021 Ford Transit Pro|Ford Transit]] (Gen 3-based) |- valign="top" | | style="text-align:left;"| [[w:Halewood Transmission|Halewood Transmission]] | style="text-align:left;"| [[w:Halewood|Halewood]], [[w:Merseyside|Merseyside]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| 1964 | style="text-align:right;"| 450 | style="text-align:left;"| [[w:Ford MT75 transmission|Ford MT75 transmission]]<br />Ford MT82 transmission<br /> [[w:Ford BC-series transmission#iB5 Version|Ford IB5 transmission]]<br />Ford iB6 transmission<br />PTO Transmissions | Formerly part of the [[w:Getrag Ford Transmission|Getrag Ford Transmission]] joint venture. Returned to 100% Ford ownership in 2021. |- valign="top" | style="text-align:center;"| R (NA) | style="text-align:left;"| [[w:Hermosillo Stamping and Assembly|Hermosillo Stamping and Assembly]] | style="text-align:left;"| [[w:Hermosillo|Hermosillo]], [[w:Sonora|Sonora]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| 1986 | style="text-align:right;"| 2,870 | style="text-align:left;"| [[w:Ford Bronco Sport|Ford Bronco Sport]] (2021-)<br />[[w:Ford Maverick (2022)|Ford Maverick pickup]] (2022-) | Hermosillo produced its 7 millionth vehicle, a blue Ford Bronco Sport, in June 2024.<br /> Previously: [[w:Ford Fusion (Americas)|Ford Fusion]] (2006-2020)<br />[[w:Mercury Milan|Mercury Milan]] (2006-2011)<br />[[w:Lincoln MKZ|Lincoln Zephyr]] (2006)<br />[[w:Lincoln MKZ|Lincoln MKZ]] (2007-2020)<br />[[w:Ford Focus (North America)|Ford Focus]] (hatchback) (2000-2005)<br />[[w:Ford Escort (North America)|Ford Escort]] (1991-2002)<br />[[w:Ford Escort (North America)#ZX2|Ford Escort ZX2]] (1998-2003)<br />[[w:Mercury Tracer|Mercury Tracer]] (1988-1999) |- valign="top" | | style="text-align:left;"| Irapuato Electric Powertrain Center (formerly Irapuato Transmission Plant) | style="text-align:left;"| [[w:Irapuato|Irapuato]], [[w:Guanajuato|Guanajuato]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| | style="text-align:right;"| 700 | style="text-align:left;"| E-motor and <br> E-transaxle (1T50LP) <br> for Mustang Mach-E | Formerly Getrag Americas, a joint venture between [[w:Getrag|Getrag]] and the [[w:Getrag Ford Transmission|Getrag Ford Transmission]] joint venture. Became 100% owned by Ford in 2016 and launched conventional automatic transmission production in July 2017. Previously built the [[w:Ford PowerShift transmission|Ford PowerShift transmission]] (6DCT250 DPS6) <br /> [[w:Ford 6F transmission|Ford 6F15 transmission]]<br />[[w:Ford 8F transmission|Ford 8F24 transmission]]. |- valign="top" | | style="text-align:left;"| [[w:Jiangling Motors|Jiangling Motors Corp., Ltd.]] (JMC Fushan Assembly Plant) | style="text-align:left;"| Xiaolan Economic Development Zone, [[w:Nanchang|Nanchang]], [[w:Jiangxi|Jiangxi]] | style="text-align:left;"| China | style="text-align:center;"| | style="text-align:right;"| 1,725 | style="text-align:left;"| [[w:Ford Equator|Ford Equator]]<br />[[w:Ford Equator Sport|Ford Equator Sport]]<br />[[w:Ford Territory (China)|Ford Territory]] <br> [[w:Ford Bronco New Energy|Ford Bronco New Energy EV/EREV]] <br /> JMC models | style="text-align:left;"| Partnership with [[w:Jiangling Motors Corporation Group#Jiangling Motor Holding and Jiangling Investment|Jiangling Investment Co., Ltd.]] Jiangling Motors is 32% owned by Ford. <br /> |- valign="top" | | style="text-align:left;"| [[w:Jiangling Motors|Jiangling Motors Corp., Ltd.]] (JMC Xiaolan Assembly Plant) | style="text-align:left;"| Xiaolan Economic Development Zone, [[w:Nanchang|Nanchang]], [[w:Jiangxi|Jiangxi]] | style="text-align:left;"| China | style="text-align:center;"| 1997 | style="text-align:right;"| 1,660 | style="text-align:left;"| [[w:Ford Transit#Transit T8 (2023-present)|Ford Transit T8]]<br />[[w:Ford Transit Custom|Ford Transit]]<br />[[w:Ford Transit Custom|Ford Tourneo]] <br />[[w:Ford Ranger (T6)#Second generation (P703/RA; 2022)|Ford Ranger (T6)]]<br /> [[w:Ford Bronco#Sixth generation (U725; 2021)|Ford Bronco (U725)]] <br /> JMC models | style="text-align:left;"| Partnership with [[w:Jiangling Motors Corporation Group#Jiangling Motor Holding and Jiangling Investment|Jiangling Investment Co., Ltd.]] Jiangling Motors is 32% owned by Ford. <br /> Previously: <br />[[w:Ford Transit#Chinese production|Ford Transit & Transit Classic]] <br /> [[w:Ford Transit#2021 Ford Transit Pro|Ford Transit Pro]]<br />[[w:Ford Everest#Second generation (U375/UA; 2015)|Ford Everest]] |- valign="top" | | style="text-align:left;"| [[w:Jiangling Motors|Jiangling Motors Corp., Ltd.]] (JMC Xiaolan Engine Plant) | style="text-align:left;"| Xiaolan Economic Development Zone, [[w:Nanchang|Nanchang]], [[w:Jiangxi|Jiangxi]] | style="text-align:left;"| China | style="text-align:center;"| 2015 | style="text-align:right;"| | style="text-align:left;"| [[w:Ford EcoBoost engine#2.0 L (2010–2015)|Ford 2.0 L EcoBoost I4]]<br />JMC 1.5/1.8 GTDi engines<br /> | style="text-align:left;"| Partnership with [[w:Jiangling Motors Corporation Group#Jiangling Motor Holding and Jiangling Investment|Jiangling Investment Co., Ltd.]] Jiangling Motors is 32% owned by Ford. |- valign="top" | style="text-align:center;"| K (NA) | style="text-align:left;"| [[W:Kansas City Assembly|Kansas City Assembly]] | style="text-align:left;"| [[W:Claycomo, Missouri|Claycomo, Missouri]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1951 <br><br> 1957 (Vehicle production) | style="text-align:right;"| 9,468 | style="text-align:left;"| [[w:Ford F-Series (fourteenth generation)|Ford F-150]] (2021-)<br /> [[w:Ford Transit#Fourth generation (2014)|Ford Transit]] (2015-) | style="text-align:left;"| Original location at 1025 Winchester Ave. was first Ford factory in the USA built outside the Detroit area, lasted from 1912–1956. Replaced by Claycomo plant at 8121 US 69, which began to produce civilian vehicles on January 7, 1957 beginning with the Ford F-100 pickup. The Claycomo plant only produced for the military (including wings for B-46 bombers) from when it opened in 1951-1956, when it converted to civilian production.<br />Previously:<br /> [[w:Ford F-Series (third generation)|Ford F-Series (third generation)]]<br> (1957-1960)<br />[[w:Ford F-Series (fourth generation)|Ford F-Series (fourth generation)]]<br> (1961-1966)<br />[[w:Ford F-Series (fifth generation)|Ford F-Series (fifth generation)]]<br> (1967-1972)<br />[[w:Ford F-Series (sixth generation)|Ford F-Series (sixth generation)]]<br> (1973-1979)<br />[[w:Ford F-Series (seventh generation)|Ford F-Series (seventh generation)]] (1980-1986)<br />[[w:Ford F-Series (eighth generation)|Ford F-Series (eighth generation)]]<br> (1987-1991)<br />[[w:Ford F-Series (ninth generation)|Ford F-Series (ninth generation)]]<br> (1992-1996)<br />[[w:Ford F-Series (tenth generation)|Ford F-Series (tenth generation)]] [PN96]<br> (1997-2003 F-150, 1997-1999 F-250)<br />[[w:Ford F-Series (eleventh generation)|Ford F-Series (eleventh generation)]] (2004-2008 F-150)<br />[[w:Ford F-Series (twelfth generation)|Ford F-Series (twelfth generation)]] (2009-2014 F-150)<br />[[w:Ford F-Series (thirteenth generation)|Ford F-Series (thirteenth generation)]] (2015-2020 F-150)<br />[[w:Ford Galaxie|Ford Galaxie]] (1959) <br />[[w:Ford Falcon (North America)|Ford Falcon (compact)]] (1960-1962, 1964, 1966-1970)<br />[[w:Mercury Comet#First generation (1960–1963)|Comet]] (1960-1961)<br /> [[w:Mercury Comet|Mercury Comet]] (1962)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane]] (1962-1969)<br />[[w:Ford Torino|Ford Torino]] (1968-1969)<br />[[w:Ford Ranchero|Ford Ranchero]] (1957-1962, 1966-1969)<br /> [[w:Mercury Meteor#Intermediate (1962–1963)|Mercury Meteor]] (1962-1963)<br />[[w:Ford Maverick (1970–1977)|Ford Maverick]] (1970-1977)<br />[[w:Mercury Comet#Fifth generation (1971–1977)|Mercury Comet]] (1971-1977)<br />[[w:Ford Fairmont|Ford Fairmont]] (1978-1983)<br />[[w:Mercury Zephyr|Mercury Zephyr]] (1978-1983)<br />[[w:Ford Tempo|Ford Tempo]] (1984-1994)<br />[[w:Mercury Topaz|Mercury Topaz]] (1984-1994)<br />[[w:Ford Contour|Ford Contour]] (1995-2000)<br />[[w:Mercury Mystique|Mercury Mystique]] (1995-2000)<br />[[w:Ford Escape|Ford Escape]] (2001-2012)<br />[[w:Mercury Mariner|Mercury Mariner]] (2005-2011)<br />[[w:Mazda Tribute|Mazda Tribute]] (2001-2011)<br />[[w:Lincoln Blackwood|Lincoln Blackwood]] (2002) |- valign="top" | style="text-align:center;"| E (NA) for pickups & SUVs<br /> or <br /> V (NA) for med. & heavy trucks & bus chassis | style="text-align:left;"| [[w:Kentucky Truck Assembly|Kentucky Truck Assembly]] | style="text-align:left;"| [[w:Louisville, Kentucky|Louisville, Kentucky]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1969 | style="text-align:right;"| 9,251 | style="text-align:left;"| VIN code E:<br> [[w:Ford Super Duty|Ford Super Duty]] (1999-)<br /> [[w:Ford Expedition|Ford Expedition]] (2009-) <br /> [[w:Lincoln Navigator|Lincoln Navigator]] (2009-) | Located at 3001 Chamberlain Lane. <br /> Previously:<br> VIN code V:<br> [[w:Ford B series|Ford B series]] (1970-1998)<br />[[w:Ford C series|Ford C series]] (1970-1990)<br />Ford W series<br />Ford CL series<br />[[w:Ford Cargo|Ford Cargo]] (1991-1997)<br />[[w:Ford L series|Ford L series/Louisville/Aeromax]]<br> (1970-1998) <br /> [[w:Ford F-Series (medium-duty truck)#Fifth generation (1967–1979)|Ford F-Series (medium-duty truck)]] (1970–1979) <br /> [[w:Ford F-Series (medium-duty truck)#Sixth generation (1980–1999)|Ford F-Series (medium-duty truck)]] (1980–1998)<br />VIN code E:<br> [[w:Ford F-Series (ninth generation)|Ford F-Series (ninth generation)]] - <br> (F-250: 1995-1997/F-350: 1994-1997/<br> F-Super Duty: 1994-1997)<br />[[w:Ford Excursion|Ford Excursion]] (2000-2005) |- valign="top" | | style="text-align:left;"| [[w:Lima Engine|Lima Engine]] | style="text-align:left;"| [[w:Lima, Ohio|Lima, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1957 | style="text-align:right;"| 1,457 | style="text-align:left;"| [[w:Ford EcoBoost engine#2.7 L Nano (first generation)|Ford 2.7/3.0 Nano EcoBoost V6]]<br />[[w:Ford Cyclone engine|Ford 3.3 Cyclone V6]]<br />[[w:Ford Cyclone engine|Ford 3.5/3.7 Cyclone V6 (for FWD vehicles)]] | Previously: [[w:Ford MEL engine|Ford MEL engine]]<br />[[w:Ford 385 engine|Ford 385 engine]]<br />[[w:Ford straight-six engine#Third generation|Ford Thriftpower (Falcon) Six]]<br />[[w:Ford Pinto engine#Lima OHC (LL)|Ford Lima/Pinto I4]]<br />[[w:Ford HSC engine|Ford HSC I4]]<br />[[w:Ford Vulcan engine|Ford Vulcan V6]]<br /> [[w:Jaguar AJ-V8 engine#3.9 L|Jaguar AJ30/AJ35 - Ford 3.9L V8]] |- valign="top" | | style="text-align:left;"| [[w:Livonia Transmission|Livonia Transmission]] | style="text-align:left;"| [[w:Livonia, Michigan|Livonia, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1952 | style="text-align:right;"| 3,075 | style="text-align:left;"| [[w:Ford 6R transmission|Ford 6R transmission]]<br />[[w:Ford-GM 10-speed automatic transmission|Ford 10R60/10R80 transmission]]<br />[[w:Ford 8F transmission|Ford 8F35/8F40 transmission]] <br /> Service components | |- valign="top" | style="text-align:center;"| U (NA) | style="text-align:left;"| [[w:Louisville Assembly Plant|Louisville Assembly Plant]] | style="text-align:left;"| [[w:Louisville, Kentucky|Louisville, Kentucky]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1955 | style="text-align:right;"| 3,483 | style="text-align:left;"| [[w:Ford Escape|Ford Escape]] (2013-2026)<br />[[w:Lincoln Corsair|Lincoln Corsair]] (2020-2026) <br> [[w:Ford Fathom|Ford Fathom]] EV (2028-) | Original location opened in 1913. Ford then moved in 1916 and again in 1925. Current location at 2000 Fern Valley Rd. first opened on April 18, 1955. It produced both cars and trucks. The majority of Edsels were produced here.[https://www.edsel.com/registry/index.html] Passenger car production ended on June 12, 1981 when the last Ford LTD was produced at Louisville.[https://www.google.com/books/edition/The_Encyclopedia_of_Louisville/pXbYITw4ZesC?hl=en&gbpv=1&bsq=ford%20motor] The plant was then converted to build the Ranger pickup and the related Bronco II SUV. Ranger production began on January 18, 1982. The plant was upgraded and expanded to build Explorer, which launched in 1990 and replaced the Bronco II. Explorer was joined by the Mercury Mountaineer in April 1996. Ranger production ended in April 1999 but the Explorer Sport Trac pickup was built here beginning in 2000. The plant was idled in December 2010 and then reopened on April 4, 2012 to build the Ford Escape crossover which was followed by the Escape-based Lincoln MKC, later replaced by the Corsair. Escape and Corsair production ended in mid-December 2025 and the factory was then idled. <br />Previously: [[w:Lincoln MKC|Lincoln MKC]] (2015-2019)<br />[[w:Ford Explorer|Ford Explorer]] (1991-2010)<br />[[w:Mercury Mountaineer|Mercury Mountaineer]] (1997-2010)<br />[[w:Mazda Navajo|Mazda Navajo]] (1991-1994)<br />[[w:Ford Explorer#3-door / Explorer Sport|Ford Explorer Sport]] (2001-2003)<br />[[w:Ford Explorer Sport Trac|Ford Explorer Sport Trac]] (2001-2010)<br />[[w:Ford Bronco II|Ford Bronco II]] (1984-1990)<br />[[w:Ford Ranger (Americas)|Ford Ranger]] (1983-1999)<br /> [[w:Ford F-Series (medium-duty truck)#Third generation (1957–1960)|Ford F-Series (medium-duty truck)]] (1958)<br /> [[w:Ford F-Series (medium-duty truck)#Fifth generation (1967–1979)|Ford F-Series (medium-duty truck)]] (1967-1969)<br />[[w:Ford F-Series|Ford F-Series]] (1955-1957, 1973-1982)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1966, 1970-1981)<br />[[w:Edsel Pacer|Edsel Pacer]] (1958)<br />[[w:Edsel Ranger|Edsel Ranger]] (1958-1960)<br />[[w:Edsel Corsair#1959|Edsel Corsair]] (1959)<br />[[w:Edsel Roundup|Edsel Roundup]] (1958)<br />[[w:Edsel Villager|Edsel Villager]] (1958-1960)<br />[[w:Edsel Bermuda|Edsel Bermuda]] (1958)<br />[[w:Ford Custom|Ford Custom]] (1970)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane]] (1955-1958, 1960-1961)<br />[[w:Ford Ranchero|Ford Ranchero]] (1957)<br />[[w:Ford Galaxie|Ford Galaxie]] (1959-1971)<br />[[w:Ford 300|Ford 300]] (1963)<br />Heavy trucks were produced on a separate line from early 1958 until Kentucky Truck Plant opened in 1969. Includes [[w:Ford B series|Ford B series]] bus, [[w:Ford C series|Ford C series]], [[w:Ford H series|Ford H series]], Ford W series, and [[w:Ford L series#Background|Ford N-Series]] (1963-69). In addition to cars, F-Series light trucks were built from 1973-1981. Louisville Assembly was then converted to build the Ranger compact pickup, production of which began on January 18, 1982. |- valign="top" | style="text-align:center;"| L (NA) (1964-) | style="text-align:left;"| [[w:Michigan Assembly Plant|Michigan Assembly Plant]] <br> Previously: Michigan Truck Plant | style="text-align:left;"| [[w:Wayne, Michigan|Wayne, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1957 | style="text-align:right;"| 5,126 | style="text-align:Left;"| [[w:Ford Ranger (T6)#Second generation (P703/RA; 2022)|Ford Ranger (T6-P703)]] (2024-)<br /> [[w:Ford Bronco#Sixth generation (U725; 2021)|Ford Bronco (U725)]] (2021-) | style="text-align:left;"| Located at 38303 Michigan Ave. Opened in 1957 to build station wagons as the Michigan Station Wagon Plant. Due to a sales slump, the plant was idled in 1959 until 1964. The plant was reopened and converted to build <br> F-Series trucks in 1964, becoming the Michigan Truck Plant. Was original production location for the [[w:Ford Bronco|Ford Bronco]] in 1966. In 1997, F-Series production ended so the plant could focus on the Expedition and Navigator full-size SUVs. In December 2008, Expedition and Navigator production ended and would move to the Kentucky Truck plant during 2009. In 2011, the Michigan Truck Plant was combined with the Wayne Stamping & Assembly Plant, which were then renamed the [[w:Michigan Assembly Plant|Michigan Assembly Plant]]. The plant was converted to build small cars, beginning with the 2012 Focus, followed by the 2013 C-Max. Car production ended in May 2018 and the plant was converted back to building trucks, beginning with the 2019 Ranger, followed by the 2021 Bronco.<br> Previously:<br />[[w:Ford Ranger (T6)#North American version (2019–2023)|Ford Ranger (T6-P375)]] (2019-2023)<br />[[w:Ford Focus (North America)|Ford Focus]] (2012-2018)<br />[[w:Ford C-Max#Second generation (2011)|Ford C-Max]] (2013-2018)<br /> [[w:Ford Bronco|Ford Bronco]] (1966-1996)<br />[[w:Ford Expedition|Ford Expedition]] (1997-2009)<br />[[w:Lincoln Navigator|Lincoln Navigator]] (1998-2009)<br />[[w:Ford F-Series|Ford F-Series]] (1964-1997)<br />[[w:Ford F-Series (ninth generation)#SVT Lightning|Ford F-150 Lightning]] (1993-1995)<br /> [[w:Mercury Colony Park|Mercury Colony Park]] |- valign="top" | style="text-align:center;"| H (NA) | style="text-align:left;"| [[w:Multimatic|Multimatic]] <br> Markham Assembly | style="text-align:left;"| [[w:Markham, Ontario|Markham, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| 2016-2022, 2025- (Ford production) | | [[w:Ford Mustang (seventh generation)#Mustang GTD|Ford Mustang GTD]] (2025-) | Plant owned by [[w:Multimatic|Multimatic]] Inc.<br /> Previously:<br />[[w:Ford GT#Second generation (2016–2022)|Ford GT]] (2017-2022) |- valign="top" | style="text-align:center;"| S (NA) (for Pilot Plant),<br> No plant code for Mark II | style="text-align:left;"| [[w:Ford Pilot Plant|New Model Programs Development Center]] | style="text-align:left;"| [[w:Allen Park, Michigan|Allen Park, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1956 | | style="text-align:left;"| Commonly known as "Pilot Plant" | style="text-align:left;"| Located at 17000 Oakwood Boulevard. Originally Allen Park Body & Assembly to build the 1956-1957 [[w:Continental Mark II|Continental Mark II]]. Then was Edsel Division headquarters until 1959. Later became the New Model Programs Development Center, where new models and their manufacturing processes are developed and tested. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:fr:Nordex S.A.|Nordex S.A.]] | style="text-align:left;"| [[w:Montevideo|Montevideo]] | style="text-align:left;"| [[w:Uruguay|Uruguay]] | style="text-align:center;"| 2021 (Ford production) | style="text-align:right;"| | style="text-align:left;"| [[w:Ford Transit#Fourth generation (2014)|Ford Transit]] | style="text-align:left;"| Plant owned by Nordex S.A. Built under contract for Ford for South American markets. |- valign="top" | style="text-align:center;"| K (1954-1959)<br>/<br> No plant codes used (1960-1965)<br>/<br> B (NA) (1966-present) | style="text-align:left;"| [[w:Oakville Assembly|Oakville Assembly]] | style="text-align:left;"| [[w:Oakville, Ontario|Oakville, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| 1953 | style="text-align:right;"| 3,600 | style="text-align:left;"| [[w:Ford Super Duty|Ford Super Duty]] (2027-) | style="text-align:left;"| Truck production moved to the neighboring Ontario Truck plant when it opened in 1965. After Ontario Truck closed in 2004, it was absorbed into the Oakville Assembly plant. Ford Edge production ended in May 2024 and Oakville Assembly was idled.<br /> Previously: <br />[[w:1952 Ford|1952 Ford]]<br />[[w:1955 Ford|1955 Ford]]<br />[[w:1957 Ford|1957 Ford]]<br />[[w:Ford Galaxie|Ford Galaxie]] (1967-1968, 1971)<br />[[w:Meteor (automobile)|Meteor cars]]<br />[[w:Ford Ranchero#First generation (1957–1959)|Meteor Ranchero]] (1957-1958)<br />[[w:Monarch (marque)|Monarch cars]]<br />[[w:Edsel Citation|Edsel Citation]] (1958)<br />[[w:Edsel Corsair|Edsel Corsair]] (1958-1959)<br />[[w:Edsel Pacer|Edsel Pacer]] (1958)<br />[[w:Edsel Ranger|Edsel Ranger]] (1958-1959)<br />[[w:Ford Falcon (North America)|Ford Falcon (compact)]] (1960-1968)<br />[[w:Frontenac (marque)|Frontenac]] (1960)<br />[[w:Mercury Comet|Mercury Comet]]<br />[[w:Ford Falcon (Americas)#Intermediate Falcon (1970½)|Ford Falcon (intermediate)]] (1970 1/2)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane]] (1970)<br />[[w:Ford Torino|Ford Torino]] (1970, 1972-1974)<br />[[w:Ford Custom#Custom and Custom 500 (1964-1981)|Ford Custom/Custom 500]] (1966-1967)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1969-1970, 1972, 1975-1982)<br />[[w:Ford LTD Crown Victoria|Ford LTD Crown Victoria]] (1983)<br />[[w:Mercury Montclair|Mercury Montclair]] (1966-1967)<br />[[w:Mercury Monterey|Mercury Monterey]] (1971)<br />[[w:Mercury Marquis|Mercury Marquis]] (1972, 1976-1977)<br />[[w:Mercury Park Lane|Mercury Park Lane]] (1968)<br />[[w:Ford Escort (North America)|Ford Escort]] (1984-1987)<br />[[w:Mercury Lynx|Mercury Lynx]] (1984-1987)<br />[[w:Ford Tempo|Ford Tempo]] (1984-1994)<br />[[w:Mercury Topaz|Mercury Topaz]] (1984-1994)<br />[[w:Ford Windstar|Ford Windstar]] (1995-2003)<br />[[w:Ford Freestar|Ford Freestar]] (2004-2007)<br />[[w:Ford Windstar#Mercury Monterey|Mercury Monterey]] (2004-2007)<br /> [[w:Ford Flex|Ford Flex]] (2009-2019)<br /> [[w:Lincoln MKT|Lincoln MKT]] (2010-2019)<br />[[w:Ford Edge|Ford Edge]] (2007-2024)<br />[[w:Lincoln MKX|Lincoln MKX]] (2007-2018) <br />[[w:Lincoln Nautilus#First generation (U540; 2019)|Lincoln Nautilus]] (2019-2023)<br />[[w:Ford E-Series|Ford Econoline]] (1961-1981)<br />[[w:Ford E-Series#First generation (1961–1967)|Mercury Econoline]] (1961-1965)<br />[[w:Ford F-Series|Ford F-Series]] (1954-1965)<br />[[w:Mercury M-Series|Mercury M-Series]] (1954-1965) |- valign="top" | style="text-align:center;"| D (NA) | style="text-align:left;"| [[w:Ohio Assembly|Ohio Assembly]] | style="text-align:left;"| [[w:Avon Lake, Ohio|Avon Lake, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1974 | style="text-align:right;"| 1,802 | style="text-align:left;"| [[w:Ford E-Series|Ford E-Series]]<br> (Body assembly: 1975-,<br> Final assembly: 2006-)<br> (Van thru 2014,<br> Cutaway thru present day)<br /> [[w:Ford F-Series (medium duty truck)#Eighth generation (2016–present)|Ford F-650/750]] (2016-)<br /> [[w:Ford Super Duty|Ford Super Duty <br /> F-350/450/550 Chassis Cab]] (2017-)<br /> [[w:Ford Super Duty|Ford Super Duty <br /> F-600 Chassis Cab]] (2020-) | style="text-align:left;"| Was previously a Fruehauf truck trailer plant.<br />Previously: [[w:Ford Escape|Ford Escape]] (2004-2005)<br />[[w:Mercury Mariner|Mercury Mariner]] (2005-2006)<br />[[w:Mercury Villager|Mercury Villager]] (1993-2002)<br />[[w:Nissan Quest|Nissan Quest]] (1993-2002) |- valign="top" | style="text-align:center;"| B (SA) | style="text-align:left;"| [[w:Pacheco Stamping and Assembly|Pacheco Stamping and Assembly]] | style="text-align:left;"| [[w:General Pacheco|General Pacheco]], [[w:Buenos Aires Province|Buenos Aires Province]] | style="text-align:left;"| [[w:Argentina|Argentina]] | style="text-align:center;"| 1961 | style="text-align:right;"| 3,823 | style="text-align:left;"| [[w:Ford Ranger (T6)|Ford Ranger (T6)]] | style="text-align:left;"| Part of [[w:Autolatina|Autolatina]] venture with VW from 1987 to 1996. Ford kept this side of the Pacheco plant when Autolatina dissolved while VW got the other side of the plant, which it still operates. This plant has made both cars and trucks. <br /> Formerly:<br /> [[w:Ford F-Series|Ford F-100/F-150]]<br />[[w:Ford F-Series|Ford F-250/F-350/F-3500/F-400/F-4000/F-500]]<br />[[w:Ford F-Series (medium duty truck)|Ford F-600/F-6000/F-700/F-7000]]<br />[[w:Ford B-Series|Ford B-Series]] (B-600/B-700/B-7000)<br /> [[w:Ford Falcon (Argentina)|Ford Falcon]] (1962 to 1991)<br />[[w:Ford Ranchero#Argentine Ranchero|Ford Ranchero]]<br /> [[w:Ford Taunus TC#Argentina|Ford Taunus]]<br /> [[w:Ford Sierra|Ford Sierra]]<br /> [[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Verona#Second generation (1993–1996)|Ford Verona]]<br />[[w:Ford Orion|Ford Orion]]<br /> [[w:Ford Fairlane (Americas)#Ford Fairlane in Argentina|Ford Fairlane]]<br />[[w:Ford Focus|Ford Focus]]<br />[[w:Ford Cargo|Ford Cargo]]<br />[[w:Ford Ranger (Americas)|Ford Ranger (US design)]]<br />[[w:Ford straight-six engine|Ford 170/187/188/221 inline-6]]<br />[[w:Ford Y-block engine#292|Ford 292 Y-block V8]]<br />[[w:Ford Duratorq engine#ZSD ("Puma")|Ford 2.2/3.2 Puma diesel engine]]<br />[[w:Volkswagen Pointer|VW Pointer]] |- valign="top" | | style="text-align:left;"| Rawsonville Components | style="text-align:left;"| [[w:Ypsilanti, Michigan|Ypsilanti, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1956 | style="text-align:right;"| 788 | style="text-align:left;"| Integrated Air/Fuel Modules<br /> Air Induction Systems<br> Transmission Oil Pumps<br />HEV and PHEV Batteries<br /> Fuel Pumps<br /> Carbon Canisters<br />Ignition Coils<br />Transmission components for Van Dyke Transmission Plant | style="text-align:left;"| Located at 10300 Textile Road. Spun off as part of [[w:Visteon|Visteon]] in 2000. Taken back by Ford in 2005 as part of [[w:Automotive Components Holdings|Automotive Components Holdings]] LLC. Sold to parent Ford in 2009. |- valign="top" | style="text-align:center;"| L (N. American-style VIN position) | style="text-align:left;"| RMA Automotive Cambodia | style="text-align:left;"| [[w:Krakor district|Krakor district]], [[w:Pursat province|Pursat province]] | style="text-align:left;"| [[w:Cambodia|Cambodia]] | style="text-align:center;"| 2022 | style="text-align:right;"| | style="text-align:left;"| [[w:Ford Ranger (T6)|Ford Ranger (T6)]]<br />[[w:Ford Everest|Ford Everest]] <br /> [[w:Ford Territory (China)#Second generation (CX743MCA; 2022)|Ford Territory]] [https://cambodianess.com/article/rma-cambodia-plc-officially-launches-new-ford-production-line-and-ford-sub-assembly-plant-in-pursat-province] | style="text-align:left;"| Plant belongs to RMA Group, Ford's distributor in Cambodia. Builds vehicles under license from Ford. |- valign="top" | style="text-align:center;"| C (EU) [when following G] [includes <br> US-mkt. '78-'80 Ford Fiesta] <br>/<br> 4 (NA) ['16-'18 US-mkt. <br> Focus RS] | style="text-align:left;"| [[w:Saarlouis Body & Assembly|Saarlouis Body & Assembly]] | style="text-align:left;"| [[w:Saarlouis|Saarlouis]], [[w:Saarland|Saarland]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| 1968 (components), 1970 (vehicle prod.) | style="text-align:right;"| 1,276 | style="text-align:left;"| | style="text-align:left;"| Plant was built on the site of the former Roderberg airfield. First opened as a components plant in 1968, supplying other Ford plants and also supplying Renault with body panels. This production ended once Ford Escort production began in 1970. The first Escort body shell was completed on October 20, 1969. Began vehicle production with the Escort on January 16, 1970. Saarlouis shared Escort production with Ford's Halewood, UK plant. About 150,000 Capris were built at Saarlouis from 1971-1975, including the 1 millionth Capri built, an RS2600 completed on August 29, 1973. Fiesta began production at Saarlouis on May 11, 1976 and ended in 1980. Over 700,000 Fiestas were built in Saarlouis. Escort was replaced by the Focus in 1998. Saarlouis produced over 6.5 million Escorts from 1970-1998. Focus began production on August 10, 1998. All Focus RS & RS500 models were made in Saarlouis. In June 2013, the Ford Focus Electric began production in Saarlouis. It was the first fully electric Ford in Europe and the first fully electric car to be produced in Germany. Production ended by April 2017. C-Max production began in Saarlouis in November 2003. C-Max production shifted to Valencia, Spain in 2010 but returned to Saarlouis in 2014. C-Max production ended in June 2019 and was discontinued. About 1.2 million <br> C-Max vehicles were built at Saarlouis. Last Focus ST produced September 26, 2025. Last Focus, a white 5-d hatchback, was produced on November 14, 2025. That was the end of vehicle production at Saarlouis. In 1980, Saarlouis built its 2 millionth vehicle, a Fiesta 3-d. In February 1990, Saarlouis produced its 5 millionth vehicle, a 4th gen. Escort. In July 2005, Saarlouis produced its 10 millionth vehicle, a blue Focus wagon. On November 19, 2007, Saarlouis produced its 11 millionth vehicle, a silver C-Max. On August 26, 2010, the 12 millionth vehicle, a white Focus 5-d hatchback, was produced. On June 16, 2016, the 14 millionth vehicle, a red Focus 5-d hatchback, was produced. In December 2019, Saarlouis produced its 15 millionth vehicle, a red Focus ST 5-d. About 15.6 million vehicles were produced in total at Saarlouis.<br /> Previously: [[w:Ford Escort (Europe)|Ford Escort]] (1970-1998)<br />[[w:Ford Orion|Ford Orion]] (1983-1993)<br />[[w:Ford Capri|Ford Capri]] (1971-1975)<br />[[w:Ford Fiesta|Ford Fiesta]] (1976-1980)<br />[[w:Ford Focus|Ford Focus]] (1998-2025)<br />[[w:Ford C-Max|Ford C-Max]] (2003-2010, 2015-2019)<br />[[w:Ford Kuga#First generation (C394; 2008)|Ford Kuga]] (Gen 1: 2008-2012) |- valign="top" | | [[w:Ford India|Sanand Engine Plant]] | [[w:Sanand|Sanand]], [[w:Gujarat|Gujarat]] | [[w:India|India]] | style="text-align:center;"| 2015 | | [[w:Ford EcoBlue engine|Ford EcoBlue/Panther 2.0L Diesel I4 engine]] | Although the Sanand property including the assembly plant was sold to [[w:Tata Motors|Tata Motors]] in 2022, the engine plant buildings and property were leased back from Tata by Ford India so that the engine plant could continue building diesel engines for export to Thailand, Vietnam, and Argentina. <br /> Previously: [[w:List of Ford engines#1.2 L Dragon|1.2/1.5 Ti-VCT Dragon I3]] |- valign="top" | | style="text-align:left;"| [[w:Sharonville Transmission|Sharonville Transmission]] | style="text-align:left;"| [[w:Sharonville, Ohio|Sharonville, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1958 | style="text-align:right;"| 2,003 | style="text-align:left;"| Ford 6R140 transmission<br /> [[w:Ford-GM 10-speed automatic transmission|Ford 10R80/10R140 transmission]]<br /> Gears for 6R80/140, 6F35/50/55, & 8F57 transmissions <br /> | Located at 3000 E Sharon Rd. <br /> Previously: [[w:Ford 4R70W transmission|Ford 4R70W transmission]]<br /> [[w:Ford C6 transmission#4R100|Ford 4R100 transmission]]<br /> Ford 5R110W transmission<br /> [[w:Ford C3 transmission#5R44E/5R55E/N/S/W|Ford 5R55S transmission]]<br /> [[w:Ford CD4E transmission|Ford CD4E transmission]]<br /> Ford FN transmission |- valign="top" | | tyle="text-align:left;"| Sterling Axle | style="text-align:left;"| [[w:Sterling Heights, Michigan|Sterling Heights, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1956 | style="text-align:right;"| 2,391 | style="text-align:left;"| Front axles<br /> Rear axles<br /> Rear drive units | style="text-align:left;"| Located at 39000 Mound Rd. Spun off as part of [[w:Visteon|Visteon]] in 2000; taken back by Ford in 2005 as part of [[w:Automotive Components Holdings|Automotive Components Holdings]] LLC. |- valign="top" | style="text-align:center;"| P (EU) [when following W] /<br> 1 (NA) ('14-'23 Transit Connect) | style="text-align:left;"| [[w:Ford Valencia Body and Assembly|Ford Valencia Body and Assembly]] | style="text-align:left;"| [[w:Almussafes|Almussafes]], [[w:Province of Valencia|Valencia]] | style="text-align:left;"| [[w:Spain|Spain]] | style="text-align:center;"| 1976 | style="text-align:right;"| 5,400 | style="text-align:left;"| [[w:Ford Kuga#Third generation (C482; 2019)|Ford Kuga]] (Gen 3) | Previously: [[w:Ford C-Max#Second generation (2011)|Ford C-Max]]<br />[[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Fiesta|Ford Fiesta]]<br />[[w:Ford Focus|Ford Focus]]<br />[[w:Ford Galaxy#Third generation (CD390; 2015)|Ford Galaxy]]<br />[[w:Ford Ka#First generation (BE146; 1996)|Ford Ka]]<br />[[w:Ford Kuga#Second generation (C520; 2012)|Ford Kuga]] (Gen 2)<br />[[w:Ford Mondeo (fourth generation)|Ford Mondeo]]<br />[[w:Ford Orion|Ford Orion]] <br /> [[w:Ford S-Max#Second generation (CD539; 2015)|Ford S-Max]] <br /> [[w:Ford Transit Connect#Second generation (2012)|Ford Transit Connect]]<br /> [[w:Ford Transit Connect#Second generation (2012)|Ford Tourneo Connect]]<br />[[w:Mazda2#First generation (DY; 2002)|Mazda 2]] |- valign="top" | | style="text-align:left;"| Valencia Engine | style="text-align:left;"| [[w:Almussafes|Almussafes]], [[w:Province of Valencia|Valencia]] | style="text-align:left;"| [[w:Spain|Spain]] | style="text-align:center;"| 1976 | style="text-align:right;"| 1,000 | style="text-align:left;"| [[w:Mazda L engine|Ford Duratec HE 1.8/2.0]]<br /> [[w:Ford EcoBoost engine#2.0 L (2010–2015)|Ford Ecoboost 2.0L]]<br />[[w:Ford EcoBoost engine#2.3 L|Ford Ecoboost 2.3L]] | Previously: [[w:Ford Kent engine#Valencia|Ford Kent/Valencia engine]] |- valign="top" | | style="text-align:left;"| Van Dyke Electric Powertrain Center | style="text-align:left;"| [[w:Sterling Heights, Michigan|Sterling Heights, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1968 | style="text-align:right;"| 1,444 | style="text-align:left;"| [[w:Ford 6F transmission|Ford 6F35/6F55]]<br /> Ford HF35/HF45 transmission for hybrids & PHEVs<br />Ford 8F57 transmission<br />Electric motors (eMotor) for hybrids & EVs<br />Electric vehicle transmissions | Located at 41111 Van Dyke Ave. Formerly known as Van Dyke Transmission Plant.<br />Originally made suspension parts. Began making transmissions in 1993.<br /> Previously: [[w:Ford AX4N transmission|Ford AX4N transmission]]<br /> Ford FN transmission |- valign="top" | style="text-align:center;"| X (for VW & for Ford) | style="text-align:left;"| Volkswagen Poznań | style="text-align:left;"| [[w:Poznań|Poznań]] | style="text-align:left;"| [[w:Poland|Poland]] | style="text-align:center;"| | | [[w:Ford Transit Connect#Third generation (2021)|Ford Tourneo Connect]]<br />[[w:Ford Transit Connect#Third generation (2021)|Ford Transit Connect]]<br />[[w:Volkswagen Caddy#Fourth generation (Typ SB; 2020)|VW Caddy]]<br /> | Plant owned by [[W:Volkswagen|Volkswagen]]. Production for Ford began in 2022. <br> Previously: [[w:Volkswagen Transporter (T6)|VW Transporter (T6)]] |- valign="top" | | style="text-align:left;"| Windsor Engine Plant | style="text-align:left;"| [[w:Windsor, Ontario|Windsor, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| 1923 | style="text-align:right;"| 1,850 | style="text-align:left;"| [[w:Ford Godzilla engine|Ford 6.8/7.3L Godzilla V8]] | Main Windsor Engine Plant closed but the Windsor Annex Engine Plant, located on the south end of the Windsor Engine Plant property off Seminole Street, is still open. <br> Previously: [[w:Ford small block engine|Ford 255/289/302/351 Windsor V8]]<br />[[w:Ford Modular engine|Ford Modular engine]]: 4.6/5.4L V8 & 6.8L V10 |- valign="top" | | style="text-align:left;"| Woodhaven Forging | style="text-align:left;"| [[w:Woodhaven, Michigan|Woodhaven, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1995 | style="text-align:right;"| 86 | style="text-align:left;"| Crankshaft forgings for 2.7/3.0 Nano EcoBoost V6, 3.5 Cyclone V6, & 3.5 EcoBoost V6 | Located at 24189 Allen Rd. |- valign="top" | | style="text-align:left;"| Woodhaven Stamping | style="text-align:left;"| [[w:Woodhaven, Michigan|Woodhaven, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1964 | style="text-align:right;"| 499 | style="text-align:left;"| Body panels | Located at 20900 West Rd. |} ==Future production facilities== {| class="wikitable sortable" style="font-size:90%" |- ! style="width:120px;"| VIN ! style="width:200px;"| Name ! style="width:100px;"| City/state ! style="width:100px;"| Country ! style="width:120px;" class="unsortable"| Status ! style="width:150px;"| Employees ! style="width:200px;"| Products ! style="width:300px;" class="unsortable"| Comments |- valign="top" | | style="text-align:left;"| [[w:Blue Oval City|Tennessee Truck Plant]] | style="text-align:left;"| [[w:Stanton, Tennessee|Stanton, Tennessee]] | style="text-align:left;"| U.S. | style="background:lightyellow; text-align:center;"| Announced | style="text-align:right;"| ~6,000 | style="text-align:left;"| Ford gas-powered pickup | Was scheduled to start EV production in 2028, following delays. As of December 2025, plant is renamed Tennessee Truck Plant and production of a gas-powered truck is scheduled to start in 2029. Battery manufacturing onsite would have been part of BlueOval SK, a joint venture with SK On, a subsidiary of [[w:SK Innovation|SK Innovation]].<ref name=BlueOval>{{cite news|url=https://www.detroitnews.com/story/business/autos/ford/2021/09/27/ford-four-new-plants-tennessee-kentucky-electric-vehicles/5879885001/|title=Ford, partner to spend $11.4B on four new plants in Tennessee, Kentucky to support EVs|first1=Jordyn|last1=Grzelewski|first2=Riley|last2=Beggin|newspaper=The Detroit News|date=September 27, 2021|accessdate=September 27, 2021}}</ref> However, as of December 2025, the venture is being dissolved. Ford will keep the Kentucky battery plants while SK On will keep the Tennessee battery plant. |- valign="top" | | style="text-align:left;"| BlueOval SK Battery Park | style="text-align:left;"| [[w:Glendale, Kentucky|Glendale, Kentucky]] | style="text-align:left;"| U.S. | style="background:lightyellow; text-align:center;"| Announced | style="text-align:right;"| ~5,000 | style="text-align:left;"| Batteries for F-150 Lightning & E-Transit | Consists of 2 battery plants. Both were originally scheduled to start production in 2025. Plant 1 began commercial production on August 19, 2025 but Plant 2 has been delayed to 2027. Part of BlueOval SK, a joint venture between Ford Motor Company and SK On, a subsidiary of SK Innovation.<ref name=BlueOval/> As of December 2025, the venture is being dissolved. Ford will keep the Kentucky battery plants while SK On will keep the Tennessee battery plant. The Glendale plant is now making battery packs for Ford Energy, a new Ford subsidiary making battery energy storage systems for data centers, utilities, and large industrial and commercial customers in the U.S. |} ==Former production facilities== {| class="wikitable sortable" style="font-size:90%" |- ! style="width:120px;"| VIN ! style="width:220px;"| Name ! style="width:100px;"| City/State ! style="width:100px;"| Country ! style="width:100px;" class="unsortable"| Years ! style="width:250px;"| Products ! style="width:350px;" class="unsortable"| Comments | |- valign="top" | style="text-align:center;"| F (EU) [serial# starts with BF] | style="text-align:left;"| Advanced Vehicle Operations (AVO) "Aveley plant" | style="text-align:left;"| [[w:South Ockendon|South Ockendon]], [[w:Essex|Essex]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Vehicle production from Nov. 1970 - Early 1975 | style="text-align:left;"| [[w:Ford Escort (Europe)#First generation (1967)|Ford Escort]] Mexico, RS1600, & RS2000 models | Was located on Arisdale Avenue in South Ockendon. Plant was set up to build special, high performance Escort models that needed extra work to build, which the Halewood plant was struggling to do. Escort two-door bodyshells, already painted, trimmed, and built to strengthened Type 49 specification, were shipped in directly from the Halewood plant that built mainstream Escorts. Once at the AVO plant, the bodies were placed on an overhead carousel which ran around the factory. As the cars moved around, the engine, transmission, and suspension were fitted from below. When auto sales declined following the 1973 Energy Crisis, spare capacity opened up at the mainstream Escort plants and a dedicated plant for performance versions was no longer needed and the AVO plant closed in early 1975. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Alexandria Assembly | style="text-align:left;"| [[w:Alexandria|Alexandria]] | style="text-align:left;"| [[w:Egypt|Egypt]] | style="text-align:center;"| 1950-1966 | style="text-align:left;"| Ford trucks including [[w:Thames Trader|Thames Trader]] trucks | Opened in 1950. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Ali Automobiles | style="text-align:left;"| [[w:Karachi|Karachi]] | style="text-align:left;"| [[w:Pakistan|Pakistan]] | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Anglia|Ford Anglia]], [[w:Ford Cortina|Ford Cortina]], [[w:Ford Transit#Taunus Transit (1953)|Ford Kombi]], [[w:Ford F-Series second generation|Ford F-Series pickups]] | Ford production ended. Ali Automobiles was nationalized in 1972, becoming Awami Autos. Today, Awami is partnered with Suzuki in the Pak Suzuki joint venture. |- valign="top" | style="text-align:center;"| N (EU) [when following C] | style="text-align:left;"| Amsterdam Assembly | style="text-align:left;"| [[w:Amsterdam|Amsterdam]] | style="text-align:left;"| [[w:Netherlands|Netherlands]] | style="text-align:center;"| 1932-1981 | style="text-align:left;"| [[w:Ford Transit|Ford Transit]], [[w:Ford Transcontinental|Ford Transcontinental]], [[w:Ford D Series|Ford D-Series]],<br> Ford N-Series (EU) | Assembled a wide range of Ford products primarily for the local market from Sept. 1932–Nov. 1981. Began with the [[w:1932 Ford|1932 Ford]]. Car assembly (latterly [[w:Ford Anglia|Ford Anglia]], [[w:Ford Corsair|Ford Corsair]], [[w:Ford Cortina|Ford Cortina]], [[w:Ford Zephyr|Ford Zephyr]], [[w:Ford Zodiac|Ford Zodiac]], [[w:Ford Escort (Europe)|Ford Escort]], [[w:Ford Vedette|Ford Vedette]], and [[w:Ford Taunus|Ford Taunus]]) ended 1978. Also, [[w:Ford Mustang (first generation)|Ford Mustang]], [[w:Ford Custom 500|Ford Custom 500]] |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Antwerp Assembly | style="text-align:left;"| [[w:Antwerp|Antwerp]] | style="text-align:left;"| [[w:Belgium|Belgium]] | style="text-align:center;"| 1922-1964 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:Ford Model Y|Ford Model Y]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:1949 Ford|1949 Ford]]<br />[[w:Ford Taunus P3|Ford Taunus P3]]<br />[[w:Ford Taunus P4|Ford Taunus P4]]<br />[[w:Ford Falcon (North America)|Ford Falcon]]<br />[[w:Ford Fairlane (Americas)|Ford Fairlane]]<br />[[w:Edsel|Edsel]] (CKD)<br />[[w:Ford F-Series|Ford F-Series]] | Original plant was on Rue Dubois from 1922 to 1926. Ford then moved to the Hoboken District of Antwerp in 1926 until they moved to a plant near the Bassin Canal in 1931. Replaced by the Genk plant that opened in 1964, however tractors were then made at Antwerp for some time after car & truck production ended. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford France|Asnières-sur-Seine Assembly]] | style="text-align:left;"| [[w:Asnières-sur-Seine|Asnières-sur-Seine]] | style="text-align:left;"| [[w:France|France]] | style="text-align:center;"| Sold | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:Ford Model Y|Ford Model Y]] (Ford 6CV) | Ford sold the plant to Société Immobilière Industrielle d'Asnières or SIIDA on April 30, 1941. SIIDA leased it to the LAFFLY company (New Machine Tool Company) on October 30, 1941. [[w:Citroën|Citroën]] then bought most of the shares in LAFFLY in 1948 and the lease was transferred from LAFFLY to [[w:Citroën|Citroën]] in 1949, which then began to move in and set up production. A hydraulics building for the manufacture of the hydropneumatic suspension of the DS was built in 1953. [[w:Citroën|Citroën]] manufactured machined parts and hydraulic components for its hydropneumatic suspension system (also supplied to [[w:Rolls-Royce Motors|Rolls-Royce Motors]]) at Asnières as well as steering components and connecting rods & camshafts after Nanterre was closed. SIIDA was taken over by Citroën on September 2, 1968. In 2000, the Asnières site became a joint venture between [[w:Siemens|Siemens Automotive]] and [[w:PSA Group|PSA Group]] (Siemens 52% -PSA 48%) called Siemens Automotive Hydraulics SA (SAH). In 2007, when [[w:Continental AG|Continental AG]] took over [[w:Siemens VDO|Siemens VDO]], SAH became CAAF (Continental Automotive Asnières France) and PSA sold off its stake in the joint venture. Continental closed the Asnières plant in 2009. Most of the site was demolished between 2011 and 2013. |- valign="top" | style="text-align:center;"| G | style="text-align:left;"| Aston Martin Gaydon Assembly | style="text-align:left;"| [[w:Gaydon|Gaydon, Warwickshire]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| | style="text-align:left;"| [[w:Aston Martin DB9|Aston Martin DB9]]<br />[[w:Aston Martin Vantage (2005)|Aston Martin V8 Vantage/V12 Vantage]]<br />[[w:Aston Martin DBS V12|Aston Martin DBS V12]] | style="text-align:left;"| Sold along with [[w:Aston Martin|Aston Martin]]. |- valign="top" | style="text-align:center;"| T (DBS-based V8 & Lagonda sedan), <br /> B (Virage & Vanquish) | style="text-align:left;"| Aston Martin Newport Pagnell Assembly | style="text-align:left;"| [[w:Newport Pagnell|Newport Pagnell]], [[w:Buckinghamshire|Buckinghamshire]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Sold | style="text-align:left;"| [[w:Aston Martin Vanquish#First generation (2001–2007)|Aston Martin V12 Vanquish]]<br />[[w:Aston Martin Virage|Aston Martin Virage]] 1st generation <br />[[w:Aston Martin V8|Aston Martin V8]]<br />[[w:Aston Martin Lagonda|Aston Martin Lagonda sedan]] <br />[[w:Aston Martin V8 engine|Aston Martin V8 engine]] | style="text-align:left;"| Sold along with [[w:Aston Martin|Aston Martin]]. |- valign="top" | style="text-align:center;"| AT/A (NA) | style="text-align:left;"| [[w:Atlanta Assembly|Atlanta Assembly]] | style="text-align:left;"| [[w:Hapeville, Georgia|Hapeville, Georgia]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1947-2006 | style="text-align:left;"| [[w:Ford Taurus|Ford Taurus]] (1986-2007)<br /> [[w:Mercury Sable|Mercury Sable]] (1986-2005) | Began F-Series production December 3, 1947. Demolished. Site now occupied by the headquarters of Porsche North America.<ref>{{cite web|title=Porsche breaks ground in Hapeville on new North American HQ|url=http://www.cbsatlanta.com/story/20194429/porsche-breaks-ground-in-hapeville-on-new-north-american-hq|publisher=CBS Atlanta}}</ref> <br />Previously: <br /> [[w:Ford F-Series|Ford F-Series]] (1951-1956, 1958, 1960)<br />[[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1967)<br />[[w:Ford Galaxie|Ford Galaxie]] (1959-1961, 1963-1967)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1966, 1969, 1979-1980)<br />[[w:Mercury Marquis|Mercury Marquis]]<br />[[w:Ford Falcon (North America)|Ford Falcon (compact)]] (1961-1964)<br />[[w:Ford Falcon (North America)#Intermediate Falcon (1970½)|Ford Falcon (intermediate)]] (1970 1/2)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane]] (1962-1963, 1965-1970)<br />[[w:Ford Torino|Ford Torino]] (1968-1976)<br />[[w:Ford Ranchero|Ford Ranchero]] (1969-1977)<br />[[w:Mercury Montego|Mercury Montego]]<br />[[w:Mercury Cougar#Third generation (1974–1976)|Mercury Cougar]] (1974-1976)<br />[[w:Ford LTD II|Ford LTD II]] (1977-1978)<br />[[w:Mercury Cougar#Fourth generation (1977–1979)|Mercury Cougar XR-7]] (1977)<br />[[w:Ford Fairmont|Ford Fairmont]] (1981-1982)<br />[[w:Mercury Zephyr|Mercury Zephyr]] (1981-1982)<br />[[w:Ford Granada (North America)#Second generation (1981–1982)|Ford Granada]] (1981-1982)<br />[[w:Mercury Cougar#Fifth generation (1980–1982)|Mercury Cougar]] (non-XR-7 models only) (1981-1982)<br />[[w:Ford Thunderbird (ninth generation)|Ford Thunderbird (Gen 9)]] (1983-1985)<br />[[w:Mercury Cougar#Sixth generation (1983–1988)|Mercury Cougar]] (1984-1985) |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Auckland Operations | style="text-align:left;"| [[w:Wiri|Wiri]] | style="text-align:left;"| [[w:New Zealand|New Zealand]] | style="text-align:center;"| 1973-1997 | style="text-align:left;"| [[w:Ford Laser|Ford Laser]]<br />[[w:Ford Telstar|Ford Telstar]]<br />[[w:Ford Falcon (Australia)|Ford Falcon]]<br /> [[w:Mazda 323|Mazda 323]]<br /> [[w:Mazda 626|Mazda 626]] | style="text-align:left;"| Opened in 1973 as Wiri Assembly (also included transmission & chassis component plants), name changed in 1983 to Auckland Operations, became a joint venture with Mazda called Vehicles Assemblers of New Zealand (VANZ) in 1987, closed in 1997. |- valign="top" | style="text-align:center;"| S (EU) [when following P] (for Ford),<br> V (for VW & Seat) | style="text-align:left;"| [[w:Autoeuropa|Autoeuropa]] | style="text-align:left;"| [[w:Palmela|Palmela]] | style="text-align:left;"| [[w:Portugal|Portugal]] | style="text-align:center;"| Sold to [[w:Volkswagen|Volkswagen]] in 1999, Ford production ended in 2006 | [[w:Ford Galaxy#First generation (V191; 1995)|Ford Galaxy (1995–2006)]]<br />[[w:Volkswagen Sharan|Volkswagen Sharan]]<br />[[w:SEAT Alhambra|SEAT Alhambra]] | Autoeuropa was a 50/50 joint venture between Ford & VW created in 1991. Production began in 1995. Ford sold its half of the plant to VW in 1999 but the Ford Galaxy continued to be built at the plant until the first generation ended production in 2006. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Automotive Industries|Automotive Industries]], Ltd. (AIL) | style="text-align:left;"| [[w:Nazareth Illit|Nazareth Illit]] | style="text-align:left;"| [[w:Israel|Israel]] | style="text-align:center;"| 1968-1985? | style="text-align:left;"| [[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Transit|Ford Transit]]<br />[[w:Ford D Series|Ford D Series]]<br />[[w:Ford L-Series|Ford L-9000]] | Car production began in 1968 in conjunction with Ford's local distributor, Israeli Automobile Corp. Truck production began in 1973. Ford Escort production ended in 1981. Truck production may have continued to c.1985. |- valign="top" | | style="text-align:left;"| [[w:Avtotor|Avtotor]] | style="text-align:left;"| [[w:Kaliningrad|Kaliningrad]] | style="text-align:left;"| [[w:Russia|Russia]] | style="text-align:center;"| Suspended | style="text-align:left;"| [[w:Ford Cargo|Ford Cargo]] truck<br />[[w:Ford F-MAX|Ford F-MAX]] | Produced trucks under contract for Ford Otosan. Production began with the Cargo in 2015; the F-Max was added in 2019. |- valign="top" | style="text-align:center;"| P (EU) [when following C] | style="text-align:left;"| Azambuja Assembly | style="text-align:left;"| [[w:Azambuja|Azambuja]] | style="text-align:left;"| [[w:Portugal|Portugal]] | style="text-align:center;"| Closed in 2000 | style="text-align:left;"| [[w:Ford Anglia|Ford Anglia]]<br /> [[w:Ford Cortina|Ford Cortina]]<br />[[w:Ford Escort (Europe)|Ford Escort]]<br /> [[w:Ford Granada (Europe)|Ford Granada]]<br />[[w:Ford P100#Sierra-based model|Ford P100]]<br />[[w:Ford Taunus P4|Ford Taunus P4]] (12M)<br />[[w:Ford Transit#Taunus Transit (1953)|Ford Taunus Transit]]<br />[[w:Ford Thames 400E|Ford Thames 400E]]<br />[[w:Ford Transit|Ford Transit]]<br />[[w:Thames Trader|Thames Trader]] | |- valign="top" | style="text-align:center;"| G (EU) [when following W] (Ford Maverick made by Nissan) | style="text-align:left;"| Barcelona Assembly | style="text-align:left;"| [[w:Barcelona|Barcelona]] | style="text-align:left;"| [[w:Spain|Spain]] | style="text-align:center;"| 1923-1954 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model Y|Ford Model Y]], [[w:Ford Model C Ten|Ford Model C Ten]] | Became Motor Iberica SA after nationalization in 1954. Built Ford's [[w:Thames Trader|Thames Trader]] trucks under license which were sold under the [[w:Ebro trucks|Ebro]] name. Later taken over in stages by Nissan from 1979 to 1987 when it became [[w:Nissan Motor Ibérica|Nissan Motor Ibérica]] SA. Under Nissan, the [[w:Nissan Terrano II|Ford Maverick]] SUV was built in the Barcelona plant under an OEM agreement. |- valign="top" | style="text-align:left;"| | style="text-align:left;"| [[w:Ford Motor Argentina|Barracas Assembly]] | style="text-align:left;"| [[w:Barracas, Buenos Aires|Barracas]], [[w:Buenos Aires|Buenos Aires]] | style="text-align:left;"| [[w:Argentina|Argentina]] | style="text-align:center;"| 1916-1922 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| First Ford assembly plant in Latin America and the second outside North America after Britain. Replaced by the La Boca plant in 1922. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Basildon | style="text-align:left;"| [[w:Basildon|Basildon]], [[w:Essex|Essex]] | style="text-align:left;"| [[w:England|England]], [[w:UK|U.K.]] | style="text-align:center;"| 1964-1991 | style="text-align:left;"| Ford tractor range | style="text-align:left;"| Sold with New Holland tractor business |- valign="top" | | style="text-align:left;"| [[w:Batavia Transmission|Batavia Transmission]] | style="text-align:left;"| [[w:Batavia, Ohio|Batavia, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1980-2008 | style="text-align:left;"| [[w:Ford CD4E transmission|Ford CD4E transmission]]<br /> [[w:Ford ATX transmission|Ford ATX transmission]]<br />[[w:Batavia Transmission#Partnership|CFT23 & CFT30 CVT transmissions]] produced as part of ZF Batavia joint venture with [[w:ZF Friedrichshafen|ZF Friedrichshafen]] | ZF Batavia joint venture was created in 1999 and was 49% owned by Ford and 51% owned by [[w:ZF Friedrichshafen|ZF Friedrichshafen]]. Jointly developed CVT production began in late 2003. Ford bought out ZF in 2005 and the plant became Batavia Transmissions LLC, owned 100% by Ford. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Germany|Berlin Assembly]] | style="text-align:left;"| [[w:Berlin|Berlin]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| Closed 1931 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model TT|Ford Model TT]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]] | Replaced by Cologne plant. |- valign="top" | | style="text-align:left;"| Ford Aquitaine Industries Bordeaux Automatic Transmission Plant | style="text-align:left;"| [[w:Blanquefort, Gironde|Blanquefort]] | style="text-align:left;"| [[w:France|France]] | style="text-align:center;"| 1973-2019 | style="text-align:left;"| [[w:Ford C3 transmission|Ford C3/A4LD/A4LDE/4R44E/4R55E/5R44E/5R55E/5R55S/5R55W 3-, 4-, & 5-speed automatic transmissions]]<br />[[w:Ford 6F transmission|Ford 6F35 6-speed automatic transmission]]<br />Components | Sold to HZ Holding in 2009 but the deal collapsed and Ford bought the plant back in 2011. Closed in September 2019. Demolished in 2021. |- valign="top" | style="text-align:center;"| K (for DB7) | style="text-align:left;"| Bloxham Assembly | style="text-align:left;"| [[w:Bloxham|Bloxham]], [[w:Oxfordshire|Oxfordshire]] | style="text-align:left;"| [[w:England|England]], [[w:UK|U.K.]] | style="text-align:center;"| Closed 2003 | style="text-align:left;"| [[w:Aston Martin DB7|Aston Martin DB7]]<br />[[w:Jaguar XJ220|Jaguar XJ220]] | style="text-align:left;"| Originally a JaguarSport plant. After XJ220 production ended, plant was transferred to Aston Martin to build the DB7. Closed with the end of DB7 production in 2003. Aston Martin has since been sold by Ford in 2007. |- valign="top" | style="text-align:center;"| V (NA) | style="text-align:left;"| [[w:International Motors#Blue Diamond Truck|Blue Diamond Truck]] | style="text-align:left;"| [[w:General Escobedo|General Escobedo, Nuevo León]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"|Joint venture ended in 2015 | style="text-align:left;"|[[w:Ford F-Series (medium duty truck)#Seventh generation (2000-2015)|Ford F-650]] (2004-2015)<br />[[w:Ford F-Series (medium duty truck)#Seventh generation (2000-2015)|Ford F-750]] (2004-2015)<br /> [[w:Ford LCF|Ford LCF]] (2006-2009) | style="text-align:left;"| Commercial truck joint venture with Navistar until 2015 when Ford production moved back to USA and plant was returned to Navistar. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford India|Bombay Assembly]] | style="text-align:left;"| [[w:Bombay|Bombay]] | style="text-align:left;"| [[w:India|India]] | style="text-align:center;"| 1926-1954 | style="text-align:left;"| | Ford's original Indian plant. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford France|Bordeaux Assembly]] | style="text-align:left;"| [[w:Bordeaux|Bordeaux]] | style="text-align:left;"| [[w:France|France]] | style="text-align:center;"| Closed 1925 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | Replaced by Asnières-sur-Seine plant. |- valign="top" | | style="text-align:left;"| [[w:Bridgend Engine|Bridgend Engine]] | style="text-align:left;"| [[w:Bridgend|Bridgend]] | style="text-align:left;"| [[w:Wales|Wales]], [[w:UK|U.K.]] | style="text-align:center;"| Closed September 2020 | style="text-align:left;"| [[w:Ford CVH engine|Ford CVH engine]]<br />[[w:Ford Sigma engine|Ford Sigma engine]]<br />[[w:Ford EcoBoost engine#Inline four-cylinder|Ford 1.5/1.6 Sigma EcoBoost I4]]<br />[[w:Ford Zeta engine|Ford Zeta engine]]<br />[[w:Ford EcoBoost engine#1.5 L Dragon|Ford 1.5L Dragon EcoBoost I3]]<br /> [[w:Jaguar AJ-V8 engine|Jaguar AJ-V8 engine]] 4.0/4.2/4.4L<br />[[w:Jaguar AJ-V8 engine#V6|Jaguar AJ126 3.0L V6]]<br />[[w:Jaguar AJ-V8 engine#AJ-V8 Gen III|Jaguar AJ133 5.0L V8]]<br /> [[w:Volvo SI6 engine|Volvo SI6 engine]] | |- valign="top" | style="text-align:center;"| JG (AU) /<br> G (AU) /<br> 8 (NA) | style="text-align:left;"| [[w:Broadmeadows Assembly Plant|Broadmeadows Assembly Plant]] (Broadmeadows Car Assembly) (Plant 1) | style="text-align:left;"| [[w:Campbellfield|Campbellfield]], [[w:Victoria (Australia)|Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| 1959-2016<ref name="abc_4707960">{{cite news|title=Ford Australia to close Broadmeadows and Geelong plants, 1,200 jobs to go|url=http://www.abc.net.au/news/2013-05-23/ford-to-close-geelong-and-broadmeadows-plants/4707960|work=abc.net.au|access-date=25 May 2013}}</ref> | style="text-align:left;"| [[w:Ford Consul|Ford Consul]]<br />[[w:Ford Zephyr|Ford Zephyr]]<br />[[w:Ford Zodiac|Ford Zodiac]]<br />[[w:Ford Anglia#Anglia 105E (1959–1968)|Ford Anglia 105E]]<br />[[w:Ford Prefect|Ford Prefect]]<br />[[w:Ford Cortina|Ford Cortina]] TC-TF<br />[[w:Ford Telstar#First generation (AR, AS; 1982–1987)|Ford Telstar]]<br />[[w:Ford Falcon (Australia)|Ford Falcon]]<br /> Ford Falcon Ute<br /> [[w:Nissan Ute|Nissan Ute]] (XFN)<br />Ford Falcon Panel Van<br />[[w:Ford Fairlane (Australia)|Ford Fairlane]]<br />[[w:Ford LTD (Australia)|Ford LTD]]<br /> [[w:Ford Territory (Australia)|Ford Territory]]<br /> [[w:Ford Capri (Australia)|Ford Capri Convertible]]<br />[[w:Mercury Capri#Third generation (1991–1994)|Mercury Capri convertible]] (1991–1994)<br />[[w:1957 Ford|1959-1961 Ford Custom 300/Fairlane 500/Ranch Wagon]]<br />[[w:Ford Galaxie#Australian production|Ford Galaxie (1969-1972) (conversion to right hand drive)]] | Plant opened August 1959. Closed Oct 7th 2016. |- valign="top" | style="text-align:center;"| JL (AU) /<br> L (AU) | style="text-align:left;"| Broadmeadows Commercial Vehicle Plant (Assembly Plant 2) | style="text-align:left;"| [[w:Campbellfield|Campbellfield]],[[w:Victoria (Australia)|Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| 1971-1992 | style="text-align:left;"| [[w:Ford F-Series|Ford F-Series]] (F-100/F-150/F-250/F-350)<br />[[w:Ford F-Series (medium duty truck)|Ford F-Series medium duty]] (F-500/F-600/F-700/F-750/F-800/F-8000)<br />[[w:Ford L-Series|Ford L-Series/Louisville/Aeromax]]<br />[[w:Ford Transit#First generation (1965)|Ford Transit]]<br />[[w:Ford Bronco#Australian assembly|Ford Bronco]] | |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Cadiz Assembly | style="text-align:left;"| [[w:Cadiz|Cadiz]] | style="text-align:left;"| [[w:Spain|Spain]] | style="text-align:center;"| 1920-1923 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | Replaced by Barcelona plant. |- | style="text-align:center;"| 8 (SA) | style="text-align:left;"| [[w:Ford Brasil|Camaçari Plant]] | style="text-align:left;"| [[w:Camaçari, Bahia|Camaçari, Bahia]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| 2001-2021<ref name="camacari">{{cite web |title=Ford Advances South America Restructuring; Will Cease Manufacturing in Brazil, Serve Customers With New Lineup {{!}} Ford Media Center |url=https://media.ford.com/content/fordmedia/fna/us/en/news/2021/01/11/ford-advances-south-america-restructuring.html |website=media.ford.com |access-date=6 June 2022 |date=11 January 2021}}</ref><ref>{{cite web|title=Rui diz que negociação para atrair nova montadora de veículos para Camaçari está avançada|url=https://destaque1.com/rui-diz-que-negociacao-para-atrair-nova-montadora-de-veiculos-para-camacari-esta-avancada/|website=destaque1.com|access-date=30 May 2022|date=24 May 2022}}</ref> | [[w:Ford Ka|Ford Ka]]<br /> [[w:Ford Ka|Ford Ka+]]<br /> [[w:Ford EcoSport|Ford EcoSport]]<br /> [[w:List of Ford engines#1.0 L Fox|Fox 1.0L I3 Engine]] | [[w:Ford Fiesta (fifth generation)|Ford Fiesta & Fiesta Rocam]]<br />[[w:Ford Courier#Brazil (1998–2013)|Ford Courier]] |- valign="top" | | style="text-align:left;"| Canton Forge Plant | style="text-align:left;"| [[w:Canton, Ohio|Canton, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed 1988 | | Located on Georgetown Road NE. |- | | Casablanca Automotive Plant | [[w:Casablanca, Chile|Casablanca, Chile]] | [[w:Chile|Chile]] | style="text-align:center;" | 1969-1971<ref>{{Cite web |last=U |first=Juan Ignacio Alamos |date=2011-12-06 |title=AUTOS CHILENOS: PLANTA FORD CASABLANCA (1971) |url=https://autoschilenos.blogspot.com/2011/12/planta-ford-casablanca-1971.html |access-date=2022-08-04 |website=AUTOS CHILENOS}}</ref><ref>{{Cite web |title=Reuters Archive Licensing |url=https://reuters.screenocean.com/record/1076777 |access-date=2022-08-04 |website=Reuters Archive Licensing |language=en}}</ref> | [[w:Ford Falcon (North America)|Ford Falcon]], [[w:Ford F-Series|Ford F-series]], [[w:Ford F-Series (medium duty truck)#Fifth generation (1967-1979)|Ford F-600]] | Nationalized by the Chilean government.<ref>{{Cite book |last=Trowbridge |first=Alexander B. |title=Overseas Business Reports, US Department of Commerce |date=February 1968 |publisher=US Government Printing Office |edition=OBR 68-3 |location=Washington, D.C. |pages=18 |language=English}}</ref><ref name=":1">{{Cite web |title=EyN: Henry Ford II regresa a Chile |url=http://www.economiaynegocios.cl/noticias/noticias.asp?id=541850 |access-date=2022-08-04 |website=www.economiaynegocios.cl}}</ref> |- valign="top" | | style="text-align:left;"| [[w:Changan Ford Mazda|Changan Ford Mazda Automobile Co.]] | style="text-align:left;"| [[w:Nanjing|Nanjing]], [[w:Jiangsu|Jiangsu]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| -2012 | style="text-align:left;"| [[w:Ford Fiesta (sixth generation)|Ford Fiesta]]<br />[[w:Mazda2#DE|Mazda 2]]<br />[[w:Mazda 3|Mazda 3]] | style="text-align:left;"| Joint venture: Chongqing Changan Automobile Co., Ltd. (50%). Ford Motor Company (35%), Mazda Motor Company (15%). JV was divided in 2012 into [[w:Changan Ford|Changan Ford]] and [[w:Changan Mazda|Changan Mazda]]. Changan Mazda took the Nanjing plant while Changan Ford kept the other plants. |- valign="top" | | style="text-align:left;"| [[w:Changan Ford Mazda Engine|Changan Ford Mazda Engine Co.]] | style="text-align:left;"| [[w:Nanjing|Nanjing]], [[w:Jiangsu|Jiangsu]] | style="text-align:left;"| [[w:China|China]] | style="text-align:center;"| -2019 | style="text-align:left;"| [[w:Ford Sigma engine|Ford Sigma engine]]<br />[[w:Mazda L engine|Mazda L engine]]<br />[[w:Mazda Z engine|Mazda BZ series 1.3/1.6 engine]]<br />[[w:Skyactiv#Skyactiv-G|Mazda Skyactiv-G 1.5/2.0/2.5]] | style="text-align:left;"| Joint venture: Chongqing Changan Automobile Co., Ltd. (50%), Ford Motor Company (25%), Mazda Motor Company (25%). Ford sold its stake to Mazda in 2019. Now known as Changan Mazda Engine Co., Ltd. owned 50% by Mazda & 50% by Changan. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Charles McEnearney & Co. Ltd. | style="text-align:left;"| Tumpuna Road, [[w:Arima|Arima]] | style="text-align:left;"| [[w:Trinidad and Tobago|Trinidad and Tobago]] | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Cortina|Ford Cortina]], [[w:Ford Laser|Ford Laser]] | Ford production ended & factory closed in 1990's. |- valign="top" | | [[w:Ford India|Chennai Engine Plant]] | [[w:Maraimalai Nagar|Maraimalai Nagar]], [[w:Tamil Nadu|Tamil Nadu]] | [[w:India|India]] | style="text-align:center;"| 2010–2022 <ref name=":0">{{cite web|date=2021-09-09|title=Ford to stop making cars in India|url=https://www.reuters.com/business/autos-transportation/ford-motor-cease-local-production-india-shut-down-both-plants-sources-2021-09-09/|access-date=2021-09-09|website=Reuters|language=en}}</ref> | [[w:Ford DLD engine#DLD-415|Ford DLD engine]] (DLD-415/DV5)<br /> [[w:Ford Sigma engine|Ford Sigma engine]] | |- valign="top" | C (NA)<br>/<br> R (EU) [when following M] | [[w:Ford India|Chennai Vehicle Assembly Plant]] | [[w:Maraimalai Nagar|Maraimalai Nagar]], [[w:Tamil Nadu|Tamil Nadu]] | [[w:India|India]] | style="text-align:center;"| Opened in 1999 <br> Closed in 2022<ref name=":0"/> | [[w:Ford Endeavour|Ford Endeavour]]<br /> [[w:Ford Fiesta|Ford Fiesta]] 5th & 6th generations<br /> [[w:Ford Figo#First generation (B517; 2010)|Ford Figo]]<br /> [[w:Ford EcoSport#Second generation (B515; 2012)|Ford EcoSport]]<br />[[w:Ford Ikon|Ford Ikon]]<br />[[w:Ford Fusion (Europe)|Ford Fusion]] | |- valign="top" | style="text-align:center;"| N (NA) | style="text-align:left;"| Chicago SHO Center | style="text-align:left;"| [[w:Chicago|Chicago]], [[w:Illinois|Illinois]] | style="text-align:left;"| U.S. | style="text-align:center;"| 2021-2023 | style="text-align:left;"| [[w:Ford Explorer#Sixth generation (U625; 2020)|Ford Explorer]] (2021-2023)<br />[[w:Lincoln Aviator#Second generation (U611; 2020)|Lincoln Aviator]] (2021-2023) | style="text-align:left;"| 12429 S Burley Ave in Chicago. Located about 1.2 miles away from Ford's Chicago Assembly Plant. |- valign="top" | | style="text-align:left;"| Cleveland Aluminum Casting Plant | style="text-align:left;"| [[w:Brook Park, Ohio|Brook Park, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Opened in 2000,<br> Closed in 2003 | style="text-align:left;"| Aluminum engine blocks for 2.3L Duratec 23 I4 | |- valign="top" | | style="text-align:left;"| Cleveland Casting | style="text-align:left;"| [[w:Brook Park, Ohio|Brook Park, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Opened in 1952,<br>Closed in 2010 | style="text-align:left;"| Iron engine blocks, heads, crankshafts, and main bearing caps | style="text-align:left;"|Located at 5600 Henry Ford Blvd. (Engle Rd.), immediately to the south of Cleveland Engine Plant 1. Construction 1950, operational 1952 to 2010.<ref>{{cite web|title=Ford foundry in Brook Park to close after 58 years of service|url=http://www.cleveland.com/business/index.ssf/2010/10/ford_foundry_in_brook_park_to.html|website=Cleveland.com|access-date=9 February 2018|date=23 October 2010}}</ref> Demolished 2011.<ref>{{cite web|title=Ford begins plans to demolish shuttered Cleveland Casting Plant|url=http://www.crainscleveland.com/article/20110627/FREE/306279972/ford-begins-plans-to-demolish-shuttered-cleveland-casting-plant|website=Cleveland Business|access-date=9 February 2018|date=27 June 2011}}</ref> |- valign="top" | | style="text-align:left;"| [[w:Cleveland Engine|Cleveland Engine]] #2 | style="text-align:left;"| [[w:Brook Park, Ohio|Brook Park, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Opened in 1955,<br>Closed in 2012 | style="text-align:left;"| [[w:Ford Duratec V6 engine#2.5 L|Ford 2.5L Duratec V6]]<br />[[w:Ford Duratec V6 engine#3.0 L|Ford 3.0L Duratec V6]]<br />[[w:Jaguar AJ-V6 engine|Jaguar AJ-V6 engine]] | style="text-align:left;"| Located at 18300 Five Points Rd., south of Cleveland Engine Plant 1 and the Cleveland Casting Plant. Opened in 1955. Partially demolished and converted into Forward Innovation Center West. Source of the [[w:Ford 351 Cleveland|Ford 351 Cleveland]] V8 & the [[w:Ford 335 engine#400|Cleveland-based 400 V8]] and the closely related [[w:Ford 335 engine#351M|400 Cleveland-based 351M V8]]. Also, [[w:Ford Y-block engine|Ford Y-block engine]] & [[w:Ford Super Duty engine|Ford Super Duty engine]]. |- valign="top" | | style="text-align:left;"| [[w:Compañía Colombiana Automotriz|Compañía Colombiana Automotriz]] (Mazda) | style="text-align:left;"| [[w:Bogotá|Bogotá]] | style="text-align:left;"| [[w:Colombia|Colombia]] | style="text-align:center;"| Ford production ended. Mazda closed the factory in 2014. | style="text-align:left;"| [[w:Ford Laser#Latin America|Ford Laser]]<br />[[w:Mazda 323|Mazda 323]]<br />[[w:Ford Ranger (international)|Ford Ranger]]<br />[[w:Mazda B series|Mazda B series]]<br />[[w:Mazda BT-50#First generation (UN; 2006)|Mazda BT-50]] | style="text-align:left;"| Plant owned by Mazda. |- valign="top" | style="text-align:center;"| E (EU) [when following C] | style="text-align:left;"| [[w:Henry Ford & Sons Ltd|Henry Ford & Sons Ltd]] | style="text-align:left;"| Marina, [[w:Cork (city)|Cork]] | style="text-align:left;"| [[w:Munster|Munster]], [[w:Republic of Ireland|Ireland]] | style="text-align:center;"| Closed (1984) | style="text-align:left;"| [[w:Fordson|Fordson]] tractor (1919-1922, 1929-1932) and car assembly, including [[w:Ford Escort (Europe)|Ford Escort]] and [[w:Ford Cortina|Ford Cortina]] in the 1970s finally ending with the [[w:Ford Sierra|Ford Sierra]] in 1980s.<ref>{{cite web|title=The history of Ford in Ireland|url=http://www.ford.ie/AboutFord/CompanyInformation/HistoryOfFord|work=Ford|access-date=10 July 2012}}</ref> Also [[w:Ford Transit|Ford Transit]], [[w:Ford A series|Ford A-series]], and [[w:Ford D Series|Ford D-Series]]. Also [[w:Ford Model T|Ford Model T]] (1923-1927), [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:Ford Model Y|Ford Model Y]], [[w:Ford Anglia|Ford Anglia]], [[w:Ford Corsair|Ford Corsair]], [[w:Ford Consul|Ford Consul]], [[w:Ford Prefect|Ford Prefect]], and [[w:Ford Zephyr|Ford Zephyr]]. | style="text-align:left;"| Founded in 1917 with production from 1919 to 1984. Produced Model T components beginning in 1921 before complete cars began to be assembled (Model T in 1923). Supplied components to the Manchester, England Model T plant. |- valign="top" | | style="text-align:left;"| Croydon Stamping | style="text-align:left;"| [[w:Croydon|Croydon]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (2003) | style="text-align:left;"| Parts - Small metal stampings and assemblies | Opened in 1949 as Briggs Motor Bodies & purchased by Ford in 1957. Expanded in 1989. Site completely vacated in 2005. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Cuautitlán Engine | style="text-align:left;"| [[w:Cuautitlán Izcalli|Cuautitln Izcalli]], [[w:Mexico State|Mexico State]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| Closed | style="text-align:left;"| Opened in 1964. Included a foundry and machining plant. <br /> [[w:Ford small block engine#289|Ford 289 V8]]<br />[[w:Ford small block engine#302|Ford 302 V8]]<br />[[w:Ford small block engine#351W|Ford 351 Windsor V8]] | |- valign="top" | style="text-align:center;"| A (EU) [when following B] | style="text-align:left;"| [[w:Ford Dagenham assembly plant|Dagenham Assembly]] | style="text-align:left;"| [[w:Dagenham|Dagenham]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (2002) | style="text-align:left;"| [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model Y|Ford Model Y]], [[w:Ford Model C Ten|Ford Model C Ten]], [[w:Ford CX|Ford CX]], [[w:Ford 7W|Ford 7W]], [[w:Ford 7Y|Ford 7Y]], [[w:Ford Model 91|Ford Model 91]], [[w:Ford Pilot|Ford Pilot]], [[w:Ford Anglia|Ford Anglia]], [[w:Ford Prefect|Ford Prefect]], [[w:Ford Popular|Ford Popular]], [[w:Ford Squire|Ford Squire]], [[w:Ford Consul|Ford Consul]], [[w:Ford Zephyr|Ford Zephyr]], [[w:Ford Zodiac|Ford Zodiac]], [[w:Ford Consul Classic|Ford Consul Classic]], [[w:Ford Corsair|Ford Corsair]], [[w:Ford Cortina|Ford Cortina]], [[w:Ford Granada (Europe)|Ford Granada]], [[w:Ford Fiesta|Ford Fiesta]], [[w:Ford Sierra|Ford Sierra]], [[w:Ford Courier#Europe (1991–2002)|Ford Courier]], [[w:Ford Fiesta (fourth generation)#Mazda 121|Mazda 121]], [[w:Fordson E83W|Fordson E83W]], [[w:Thames (commercial vehicles)#Fordson 7V|Fordson 7V]], [[w:Fordson WOT|Fordson WOT]], [[w:Thames (commercial vehicles)#Fordson Thames ET|Fordson Thames ET]], [[w:Ford Thames 300E|Ford Thames 300E]], [[w:Ford Thames 307E|Ford Thames 307E]], [[w:Ford Thames 400E|Ford Thames 400E]], [[w:Thames Trader|Thames Trader]], [[w:Thames Trader#Normal Control models|Thames Trader NC]], [[w:Thames Trader#Normal Control models|Ford K-Series]] | style="text-align:left;"| 1931–2002, formerly principal Ford UK plant |- valign="top" | | style="text-align:left;"| [[w:Ford Dagenham|Dagenham Stamping & Tooling]] | style="text-align:left;"| [[w:Dagenham|Dagenham]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (2013)<ref name="End of an era">{{cite news|title=End of an era|url=https://www.bbc.co.uk/news/uk-england-20078108|work=BBC News|access-date=26 October 2012}}</ref> Demolished. | Body panels, wheels | |- valign="top" | style="text-align:center;"| DS/DL/D (NA) | style="text-align:left;"| Dallas Assembly Plant | style="text-align:left;"| [[w:Dallas|Dallas, TX]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1925 to 1970 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:Ford Model 48|Ford Model 48]]<br />[[w:1937 Ford|1937 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />[[w:Ford GPW|Ford GPW]] (93,748 units)<ref>{{cite web|title=Arsenal of Democracy; The American Automobile Industry in World War II|date=2013 |url=https://www.google.com/books/edition/Arsenal_of_Democracy/P-PCAgAAQBAJ?hl=en&gbpv=1&pg=PA150&printsec=frontcover|author=Charles K. Hyde|publisher=Wayne State University Press|page=150-151}}</ref><br />[[w:1949 Ford|1949 Ford]]<br />[[w:1952 Ford|1952 Ford]]<br />[[w:1955 Ford|1955 Ford]]<br />[[w:1957 Ford|1957 Ford]]<br />[[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1960) <br />[[w:Ford Galaxie|Ford Galaxie]] (1959-1969)<br />[[w:Ford 300|Ford 300]] (1963)<br />[[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1968)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1968)<br />[[w:Ford F-Series|Ford F-Series]] (1951-1970) | style="text-align:left;"| Located at 5200 E. Grand Ave. near Fair Park. Replaced original Dallas plant at 2700 Canton St. in 1925. Assembly stopped February 1933 but resumed in 1934. Closed February 20, 1970. Over 3 million vehicles built. 5200 E. Grand Ave. is now owned by City Warehouse Corp. and is used by multiple businesses. |- valign="top" | style="text-align:center;"| DA/F (NA) | style="text-align:left;"| [[w:Dearborn Assembly Plant|Dearborn Assembly Plant]] | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (2004) | style="text-align:left;"| [[w:Eagle-class patrol craft|Eagle-class patrol craft]] during WWI<br />[[w:Fordson|Fordson]] tractors (1921-1928) <br />Parts for Ford Model T<br />[[w:Ford Model A (1927–1931)|Ford Model A]] (1928-1932)<br />[[w:Ford Model B (1932)|Ford Model B]] (1932-1934)<br />[[w:Ford Model 48|Ford Model 48]] (1935-1936)<br />[[w:1937 Ford|1937 Ford]] (1937-1940)<br />[[w:1941 Ford|1941 Ford]] (1941-1942, 1946-1948)<br />[[w:1949 Ford|1949 Ford]] (1949-1951)<br />[[w:1952 Ford|1952 Ford]] (1952-1954)<br />[[w:1955 Ford|1955 Ford]] (1955-1956)<br />[[w:1957 Ford|1957 Ford]] (1957-1959)<br />[[w:Mercury Eight|Mercury Eight]] (1939-1951)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1955-1961)<br /> [[w:Ford Galaxie|Ford Galaxie]] (1959-1960)<br /> [[w:Ford Ranchero|Ford Ranchero]] (1957-1958)<br /> [[w:Ford Fairlane (Americas)|Ford Fairlane (midsize)]] (1962-1964)<br /> [[w:Mercury Meteor#Intermediate (1962–1963)|Mercury Meteor]] (1962-1963)<br />[[w:Ford Thunderbird (first generation)|Ford Thunderbird]] (1955-1957)<br />[[w:Ford Mustang|Ford Mustang]] (1965-2004)<br />[[w:Mercury Cougar|Mercury Cougar]] (1967-1973)<br />[[w:Mercury Capri#Second generation (1979–1986)|Mercury Capri]] (1979-1986)<br />[[w:Ford Falcon (North America)|Ford Falcon]] (1966)<br />[[w:Ford Maverick (1970–1977)|Ford Maverick]] (1972-1973)<br />[[w:Mercury Comet#Fifth generation (1971–1977)|Mercury Comet]] (1972-1973)<br />[[w:Ford GPW|Ford GPW]] (21,559 units)<ref>{{cite web|title=Arsenal of Democracy; The American Automobile Industry in World War II|date=2013 |url=https://www.google.com/books/edition/Arsenal_of_Democracy/P-PCAgAAQBAJ?hl=en&gbpv=1&pg=PA150&printsec=frontcover|author=Charles K. Hyde|publisher=Wayne State University Press|page=150-151}}</ref> <br>[[w:Ford GPA|Ford GPA]] 'Seep' (Sea Jeep) | style="text-align:left;"| Part of the River Rouge Complex. Started building Eagle-class patrol boats in 1918 during World War I. After the war ended, builtt Fordson tractors and parts for the Model T but didn't assemble any complete Model Ts. The Model A was the first complete car built at the Rouge complex. During World War II, the Rouge complex produced Jeeps (GPW), aircraft engines and engine parts, aircraft components, tires and tubes, armor plating, and tractors. During 2004, Mustangs built at Dearborn Assembly and F-150s built at Dearborn Truck were painted in the same new paint shop that opened in 2000. On May 10, 2004, the final vehicle was built at Dearborn Assembly: a '04 Mustang GT convertible. Replaced by Dearborn Truck Plant for 2005MY. This plant within the Rouge complex was demolished in 2008. It is now a parking lot to hold trucks from the Dearborn Truck Plant. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Dearborn Iron Foundry | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1974) | style="text-align:left;"| Cast iron parts including engine blocks. | style="text-align:left;"| Part of the River Rouge Complex. Replaced by Michigan Casting Center in the early 1970s. |- valign="top" | style="text-align:center;"| H (AU) | style="text-align:left;"| Eagle Farm Assembly Plant | style="text-align:left;"| [[w:Eagle Farm, Queensland|Eagle Farm (Brisbane), Queensland]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed (1998) | style="text-align:left;"| [[w:Ford Falcon (Australia)|Ford Falcon]]<br />Ford Falcon Ute (including XY 4x4)<br />[[w:Ford Fairlane (Australia)|Ford Fairlane]]<br />[[w:Ford LTD (Australia)|Ford LTD]]<br /> [[w:Ford F-Series|Ford F-Series]] trucks<br />[[w:Ford L-Series|Ford L-Series/Louisville/Aeromax trucks]]<br />[[w:Ford Cargo|Ford Cargo]]<br />[[w:Ford Trader|Ford Trader]] | style="text-align:left;"| Opened in 1926. Closed in 1998; demolished |- valign="top" | style="text-align:center;"| ME/T (NA) | style="text-align:left;"| [[w:Edison Assembly|Edison Assembly]] (a.k.a. Metuchen Assembly) | style="text-align:left;"|[[w:Edison, New Jersey|Edison, New Jersey]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1948–2004 | style="text-align:left;"| [[w:Ford Ranger (Americas)|Ford Ranger]] (1991-2004)<br />[[w:Ford Ranger EV|Ford Ranger EV]] (1998-2001)<br />[[w:Ford Ranger (Americas)#Mazda B-Series/Mazda Truck (1994–2010)|Mazda B-Series]] (1994–2004)<br />[[w:Ford Escort (North America)|Ford Escort]] (1981-1990)<br />[[w:Mercury Lynx|Mercury Lynx]] (1981-1987)<br />[[w:Ford Mustang|Ford Mustang]] (1965-1971)<br />[[w:Mercury Cougar|Mercury Cougar]]<br />[[w:Ford Pinto|Ford Pinto]] (1971-1980)<br />[[w:Mercury Bobcat|Mercury Bobcat]] (1975-1980)<br />[[w:Ford Falcon (North America)|Ford Falcon]] (1960-1965)<br />[[w:Mercury Comet|Mercury Comet]] (1963-1965)<br />[[w:Mercury Custom|Mercury Custom]]<br />[[w:Mercury Eight|Mercury Eight]] (1950-1951)<br />[[w:Mercury Medalist|Mercury Medalist]] (1956)<br />[[w:Mercury Montclair|Mercury Montclair]] (1955-1959)<br />[[w:Mercury Monterey|Mercury Monterey]] (1952-1959)<br />[[w:Mercury Park Lane|Mercury Park Lane]] (1959-1960)<br />[[w:Mercury Turnpike Cruiser|Mercury Turnpike Cruiser]]<br />[[w:Mercury Meteor#Full-size (1961)|Mercury Meteor]] <br /> [[w:Mercury Commuter|Mercury Commuter]] (1958) | style="text-align:left;"| Located at 939 U.S. Route 1. Demolished in 2005. Now a shopping mall called Edison Towne Square. Also known as Metuchen Assembly. |- valign="top" | | style="text-align:left;"| [[w:Essex Aluminum|Essex Aluminum]] | style="text-align:left;"| [[w:Windsor, Ontario|Windsor, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| Closed (2012) | style="text-align:left;"| 3.8/4.2L V6 cylinder heads<br />4.6L, 5.4L V8 cylinder heads<br />6.8L V10 cylinder heads<br />Pistons | style="text-align:left;"| Opened 1981. Sold to Nemak Aluminum (a 25/75 joint venture between Ford & Nemak, which is 75.24% owned by Alfa Group of Mexico) in 2001; shuttered in 2009 except for the melting operation which closed in 2012. |- valign="top" | | style="text-align:left;"| Fairfax Transmission | style="text-align:left;"| [[w:Fairfax, Ohio|Fairfax, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1979) | style="text-align:left;"| [[w:Cruise-O-Matic|Ford-O-Matic/Merc-O-Matic/Lincoln Turbo-Drive]]<br /> [[w:Cruise-O-Matic#MX/FX|Cruise-O-Matic (FX transmission)]]<br />[[w:Cruise-O-Matic#FMX|FMX transmission]] | Located at 4000 Red Bank Road. Opened in 1950. Original Ford-O-Matic was a licensed design from the Warner Gear division of [[w:Borg-Warner|Borg-Warner]]. Also produced aircraft engine parts during the Korean War. Closed in 1979. Sold to Red Bank Distribution of Cincinnati in 1987. Transferred to Cincinnati Port Authority in 2006 after Cincinnati agreed not to sue the previous owner for environmental and general negligence. Redeveloped into Red Bank Village, a mixed-use commercial and office space complex, which opened in 2009 and includes a Wal-Mart. |- valign="top" | style="text-align:center;"| T (EU) [when following L] (for Ford),<br> J (for Fiat - later years) | style="text-align:left;"| [[w:FCA Poland|Fiat Tychy Assembly]] | style="text-align:left;"| [[w:Tychy|Tychy]] | style="text-align:left;"| [[w:Poland|Poland]] | style="text-align:center;"| Ford production ended in 2016 | [[w:Ford Ka#Second generation (2008)|Ford Ka]]<br />[[w:Fiat 500 (2007)|Fiat 500]] | Plant owned by [[w:Fiat|Fiat]], which is now part of [[w:Stellantis|Stellantis]]. Production for Ford began in 2008. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Foden Trucks|Foden Trucks]] | style="text-align:left;"| [[w:Sandbach|Sandbach]], [[w:Cheshire|Cheshire]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Ford production ended in 1984. Factory closed in 2000. | style="text-align:left;"| [[w:Ford Transcontinental|Ford Transcontinental]] | style="text-align:left;"| Foden Trucks plant. Produced for Ford after Ford closed Amsterdam plant. 504 units produced by Foden. |- valign="top" | | style="text-align:left;"| Ford Malaysia Sdn. Bhd | style="text-align:left;"| [[w:Selangor|Selangor]] | style="text-align:left;"| [[w:Malaysia|Malaysia]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Laser|Ford Laser]]<br />[[w:Ford Lynx|Ford Lynx]]<br /> [[w:Ford Telstar|Ford Telstar]]<br />[[w:Ford Escape#First generation (2001)|Ford Escape]]<br /> [[w:Ford Ranger (international)|Ford Ranger]]<br /> [[w:Ford Econovan|Ford Econovan]]<br />[[w:Ford Spectron|Ford Spectron]]<br /> [[w:Ford Trader|Ford Trader]]<br />[[w:BMW 3-Series|BMW 3-Series]] E46, E90<br />[[w:BMW 5-Series|BMW 5-Series]] E60<br />[[w:Land Rover Defender|Land Rover Defender]]<br /> [[w:Land Rover Discovery|Land Rover Discovery]] | style="text-align:left;"|Originally known as AMIM (Associated Motor Industries Malaysia) Holdings Sdn. Bhd. which was 30% owned by Ford from the early 1980s. Previously, Associated Motor Industries Malaysia had assembled for various automotive brands including Ford but was not owned by Ford. In 2000, Ford increased its stake to 49% and renamed the company Ford Malaysia Sdn. Bhd. The other 51% was owned by Tractors Malaysia Bhd., a subsidiary of Sime Darby Bhd. |- valign="top" | | style="text-align:left;"| [[w:Ford Motor Company Lamp Factory|Ford Motor Company Lamp Factory]] | style="text-align:left;"| [[w:Flat Rock, Michigan|Flat Rock, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1950) | style="text-align:left;"| Automotive lighting | Located at 26601 W. Huron River Drive. Opened in 1923. Also produced junction boxes for the B-24 bomber as well as lighting for military vehicles during World War II. Closed in 1950. Sold to Moynahan Bronze Company in 1950. Sold to Stearns Manufacturing in 1972. Leased in 1981 to Flat Rock Metal Inc., which later purchased the building. |- valign="top" | | style="text-align:left;"| [[w:Ford Motor Company Philippines#History|Ford Philippines, Inc.]] Assembly Plant | style="text-align:left;"| [[w:Sucat, Muntinlupa|Sucat]], [[w:Muntinlupa|Muntinlupa]] | style="text-align:left;"| [[w:Philippines|Philippines]] | style="text-align:center;"| Closed (August 1984) | style="text-align:left;"| [[w:Ford Cortina|Ford Cortina]]<br /> [[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Taunus|Ford Taunus]]<br /> [[w:Ford Galaxie|Ford Galaxie]]<br />[[w:Ford LTD (Americas)|Ford LTD]]<br />[[w:Ford Laser#First generation (KA/KB; 1981)|Ford Laser]]<br />[[w:Ford Telstar#First generation (AR, AS; 1982–1987)|Ford Telstar]]<br /> American Ford trucks<br />British Ford trucks<br />Ford Fiera | style="text-align:left;"| Plant opened 1968. |- valign="top" | | style="text-align:left;"| [[w:Ford Motor Company Philippines#History|Ford Philippines, Inc.]] Stamping Plant | style="text-align:left;"| [[w:Mariveles|Mariveles]], [[w:Bataan|Bataan]] | style="text-align:left;"| [[w:Philippines|Philippines]] | style="text-align:center;"| Closed (August 1984) | style="text-align:left;"| Stampings | style="text-align:left;"| Plant opened 1976. |- valign="top" | style="text-align:left;"| | style="text-align:left;"| [[w:Ford Italia|Ford Motor Co. d’Italia]] | style="text-align:left;"| [[w:Trieste|Trieste]] | style="text-align:left;"| [[w:Italy|Italy]] | style="text-align:center;"| Closed (1931) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]] <br />[[w:Fordson|Fordson]] tractors | style="text-align:left;"| |- valign="top" | style="text-align:left;"| | style="text-align:left;"| [[w:Ford Motor Company of Japan|Ford Motor Company of Japan]] | style="text-align:left;"| [[w:Yokohama|Yokohama]], [[w:Kanagawa Prefecture|Kanagawa Prefecture]] | style="text-align:left;"| [[w:Japan|Japan]] | style="text-align:center;"| Closed (1941) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932-1934 Ford]]<br />[[w:Ford Model Y|Ford Model Y]] | style="text-align:left;"| Founded in 1925. Factory was seized by Imperial Japanese Government. |- valign="top" | style="text-align:left;"| T | style="text-align:left;"| Ford Motor Company del Peru | style="text-align:left;"| [[w:Lima|Lima]] | style="text-align:left;"| [[w:Peru|Peru]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Mustang (first generation)|Ford Mustang (first generation)]]<br /> [[w:Ford Galaxie|Ford Galaxie]]<br />[[w:Ford Taunus|Ford Taunus]] 17M<br />[[w:Ford F-Series|Ford F-Series]] | style="text-align:left;"| Opened in 1965.<ref>{{Cite news |date=1964-07-28 |title=Ford to Assemble Cars In Big New Plant in Peru |language=en-US |work=The New York Times |url=https://www.nytimes.com/1964/07/28/archives/ford-to-assemble-cars-in-big-new-plant-in-peru.html |access-date=2022-11-05 |issn=0362-4331}}</ref><ref>{{Cite web |date=2017-06-22 |title=Ford del Perú |url=https://archivodeautos.wordpress.com/2017/06/22/ford-del-peru/ |access-date=2022-11-05 |website=Archivo de autos |language=es}}</ref> |- valign="top" | | style="text-align:left;"| [[w:Ford Motor Company Philippines|Ford Motor Company Philippines]] | style="text-align:left;"| [[w:Santa Rosa, Laguna|Santa Rosa, Laguna]] | style="text-align:left;"| [[w:Philippines|Philippines]] | style="text-align:center;"| Closed (December 2012) | style="text-align:left;"| [[w:Ford Lynx|Ford Lynx]]<br /> [[w:Ford Focus|Ford Focus]]<br /> [[w:Mazda Protege|Mazda Protege]]<br />[[w:Mazda 3|Mazda 3]]<br /> [[w:Ford Escape|Ford Escape]]<br /> [[w:Mazda Tribute|Mazda Tribute]]<br />[[w:Ford Ranger (international)#First generation (PE/PG/PH; 1998)|Ford Ranger]] | style="text-align:left;"| Plant sold to Mitsubishi Motors |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Ford Motor Company Caribbean, Inc. | style="text-align:left;"| [[w:Canóvanas, Puerto Rico|Canóvanas]], [[w:Puerto Rico|Puerto Rico]] | style="text-align:left;"| [[w:United States|U.S.]] | style="text-align:center;"| Closed | style="text-align:left;"| Ball bearings | Plant opened in the 1960s. Constructed on land purchased from the [[w:Puerto Rico Industrial Development Company|Puerto Rico Industrial Development Company]]. |- valign="top" | style="text-align:center;"| M (EU) [when following C] | style="text-align:left;"| [[w:de:Ford Motor Company of Rhodesia|Ford Motor Co. Rhodesia (Pvt.) Ltd.]] | style="text-align:left;"| [[w:Willowvale, Harare|Willowvale]], [[w:Harare|Salisbury]] (now Harare) | style="text-align:left;"| ([[w:Southern Rhodesia|Southern Rhodesia]]) / [[w:Rhodesia (1964–1965)|Rhodesia (colony)]] / [[w:Rhodesia|Rhodesia (country)]] (now [[w:Zimbabwe|Zimbabwe]]) | style="text-align:center;"| Sold in 1967 to state-owned Industrial Development Corporation | style="text-align:left;"| [[w:Ford Fairlane (Americas)#Fourth generation (1962–1965)|Ford Fairlane]]<br />[[w:Ford Fairlane (Americas)#Fifth generation (1966–1967)|Ford Fairlane]]<br />[[w:Ford Falcon (North America)|Ford Falcon]]<br />[[w:Ford F-Series (fourth generation)|Ford F-100]]<br />[[w:Ford Galaxie|Ford Galaxie]]<br />[[w:Ford Anglia|Ford Anglia]]<br />[[w:Ford Consul#Ford Consul Mark II (1956–1962)|Ford Consul]]<br />[[w:Ford Consul Classic|Ford Consul Classic]]<br />[[w:Ford Corsair|Ford Corsair]]<br />[[w:Ford Cortina|Ford Cortina]]<br />[[w:Ford Zephyr|Ford Zephyr]]<br />[[w:Ford Zodiac|Ford Zodiac]]<br />[[w:Ford Thames 400E|Ford Thames 400E/800]]<br />[[w:Thames Trader|Thames Trader]]<br />[[w:Ford Taunus P3|Ford Taunus P3]]<br />[[w:Ford Taunus P5|Ford Taunus P5]]<br />[[w:Ford Transit#Taunus Transit (1953)|Ford Taunus Transit]]<br />[[w:Fordson#Dexta|Fordson Dexta tractors]]<br />[[w:Fordson#E1A|Fordson Super Major]]<br />[[w:Deutz-Fahr|Deutz F1M 414 tractor]] | style="text-align:left;"| Assembly began in 1961. Became [[w:Willowvale Motor Industries|Willowvale Motor Industries]] after the Ford sale. Became Willowvale Mazda Motor Industries from 1989 to 2014. Name went back to [[w:Willowvale Motor Industries|Willowvale Motor Industries]] in 2015. |- valign="top" | | style="text-align:left;"| [[w:Former Ford Factory|Ford Motor Co. (Singapore)]] | style="text-align:left;"| [[w:Bukit Timah|Bukit Timah]] | style="text-align:left;"| [[w:Singapore|Singapore]] | style="text-align:center;"| Closed (1980) | style="text-align:left;"| [[w:Ford Anglia|Ford Anglia]]<br />[[w:Ford Consul#Ford Consul Mark II (1956–1962)|Ford Consul]]<br />[[w:Ford Custom|Ford Custom]]<br />[[w:Ford Corsair|Ford Corsair]]<br />[[w:Ford Cortina|Ford Cortina]]<br /> [[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Falcon (Australia)|Ford Falcon]]<br />[[w:Ford Granada (Europe)|Ford Granada]]<br />[[w:Ford Prefect|Ford Prefect]]<br />[[w:Ford Zephyr|Ford Zephyr]]<br />[[w:Ford Zodiac|Ford Zodiac]] | style="text-align:left;"|Originally known as Ford Motor Company of Malaya Ltd. & subsequently as Ford Motor Company of Malaysia. Factory was originally on Anson Road, then moved to Prince Edward Road in Jan. 1930 before moving to Bukit Timah Road in April 1941. Factory was occupied by Japan from 1942 to 1945 during World War II. It was then used by British military authorities until April 1947 when it was returned to Ford. Production resumed in December 1947. |- valign="top" | | style="text-align:left;"| [[w:Ford Motor Company of Southern Africa|Ford Motor Company of South Africa Ltd.]] Struandale Assembly Plant | style="text-align:left;"| Struandale, [[w:Port Elizabeth|Port Elizabeth]] | style="text-align:left;"| [[w:South Africa|South Africa]] | style="text-align:center;"| Sold to [[w:Delta Motor Corporation|Delta Motor Corporation]] (later [[w:General Motors South Africa|GM South Africa]]) in 1994 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:Ford Falcon (North America)|Ford Falcon (North America)]]<br />[[w:Ford Fairlane (Americas)|Ford Fairlane (Americas)]]<br />[[w:Ford Galaxie|Ford Galaxie]]<br />[[w:Ford Ranchero#First generation (1957–1959)|Ford Ranchero (American)]]<br />[[w:Ford Anglia|Ford Anglia]]<br />[[w:Ford Prefect|Ford Prefect]]<br />[[w:Ford Capri|Ford Capri]]<br />[[w:Ford Cortina|Ford Cortina]]<br />[[w:Ford P100#Cortina-based model|Ford Cortina Pickup/P100/Ford 1-Tonner]]<br />[[w:Ford Zephyr|Ford Zephyr]]<br />[[w:Ford Zodiac|Ford Zodiac]]<br />[[w:Ford Taunus P3|Ford Taunus P3]]<br />[[w:Ford Taunus P5|Ford Taunus (P5) 17M]]<br />[[w:Ford P7|Ford (Taunus P7) 17M/20M]]<br />[[w:Ford Granada (Europe)#Mark I (1972–1977)|Ford Granada]]<br />[[w:Ford Fairmont (Australia)#South Africa|Ford Fairmont/Fairmont GT]] (XW, XY)<br />[[w:Ford Ranchero|Ford Ranchero]] ([[w:Ford Falcon (Australia)#Falcon utility|Falcon Ute-based]]) (XT, XW, XY, XA, XB)<br />[[w:Ford Fairlane (Australia)#Second generation|Ford Fairlane (Australia)]]<br />[[w:Ford Escort (Europe)|Ford Escort/XR3/XR3i]]<br />[[w:Ford Bantam|Ford Bantam]]<br />[[w:Ford Transit#First generation (1965)|Ford Transit]] | Ford first began production in South Africa in 1924 in a former wool store on Grahamstown Road in Port Elizabeth. Ford then moved to a larger location on Harrower Road in October 1930. In 1948, Ford moved again to a plant in Neave Township, Port Elizabeth. Struandale Assembly opened in 1974. Ford ended vehicle production in Port Elizabeth in December 1985, moving all vehicle production to SAMCOR's Silverton plant that had come from Sigma Motor Corp., the other partner in the [[w:SAMCOR|SAMCOR]] merger. |- valign="top" | | style="text-align:left;"| [[w:Ford Sollers|Ford Sollers]] Naberezhny Chelny Assembly Plant | style="text-align:left;"| [[w:Naberezhny Chelny|Naberezhny Chelny]] | style="text-align:left;"| [[w:Russia|Russia]] | style="text-align:center;"| Closed (2019), JV with 50% owned by Sollers | style="text-align:left;"| [[w:Ford EcoSport#Second generation (B515; 2012)|Ford EcoSport]]<br /> [[w:Ford Fiesta (sixth generation)|Ford Fiesta]] | Became part of the 50/50 Ford Sollers joint venture in 2011. Closed in 2019 when Ford discontinued its passenger vehicle portfolio in Russia. Ford Sollers was dissolved in 2022. |- valign="top" | | style="text-align:left;"| [[w:Ford Sollers|Ford Sollers]] St. Petersburg Assembly Plant, previously [[w:Ford Motor Company ZAO|Ford Motor Company ZAO]] | style="text-align:left;"| [[w:Vsevolozhsk|Vsevolozhsk]], [[w:Leningrad Oblast|Leningrad Oblast]] | style="text-align:left;"| [[w:Russia|Russia]] | style="text-align:center;"| Closed (2019), JV with 50% owned by Sollers | style="text-align:left;"| [[w:Ford Focus|Ford Focus]]<br /> [[w:Ford Mondeo|Ford Mondeo]] | Opened as a 100%-owned Ford plant in 2002 building the Focus. Mondeo was added in 2009. Became part of the 50/50 Ford Sollers joint venture in 2011. Closed in 2019 when Ford discontinued its passenger vehicle portfolio in Russia. Ford Sollers was dissolved in 2022. |- valign="top" | | style="text-align:left;"| [[w:Ford Sollers|Ford Sollers]] Yelabuga Assembly Plant | style="text-align:left;"| [[w:Yelabuga|Yelabuga]] | style="text-align:left;"| [[w:Russia|Russia]] | style="text-align:center;"| Sold (2022). Became part of the 50/50 Ford Sollers joint venture in 2011. Restructured & renamed Sollers Ford in 2020 after Sollers increased its stake to 51% in 2019 with Ford owning 49%. Production suspended in March 2022. Ford Sollers was dissolved in October 2022 when Ford sold its remaining 49% stake and exited the Russian market. | style="text-align:left;"| [[w:Ford Transit#Fourth generation (2014)|Ford Transit]] | Previously: [[w:Ford Explorer#Fifth generation (U502; 2011)|Ford Explorer]]<br />[[w:Ford Galaxy#Second generation (2006)|Ford Galaxy]]<br />[[w:Ford Kuga#Second generation (C520; 2012)|Ford Kuga]]<br />[[w:Ford S-Max#First generation (2006)|Ford S-Max]]<br />[[w:Ford Transit Custom#First generation (2012)|Ford Transit Custom]]<br />[[w:Ford Tourneo Custom#First generation (2012)|Ford Tourneo Custom]]<br />[[w:Ford Transit#Third generation (2000)|Ford Transit]] |- valign="top" | | style="text-align:left;"| [[w:Ford Sollers|Ford Sollers]] Yelabuga Engine Plant | style="text-align:left;"| [[w:Yelabuga|Yelabuga]] | style="text-align:left;"| [[w:Russia|Russia]] | style="text-align:center;"| Closed (2019), JV with 50% owned by Sollers | style="text-align:left;"| [[w:Ford Sigma engine|Ford 1.6L Duratec I4]] | Opened as part of the 50/50 Ford Sollers joint venture in 2015. Closed in 2019 when Ford discontinued its passenger vehicle portfolio in Russia. Ford Sollers was dissolved in 2022. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Union|Ford Union]] | style="text-align:left;"| [[w:Apčak|Obchuk]] | style="text-align:left;"| [[w:Belarus|Belarus]] | style="text-align:center;"| Closed (2000) | [[w:Ford Escort (Europe)#Sixth generation (1995–2002)|Ford Escort, Escort Van]]<br />[[w:Ford Transit|Ford Transit]] | Ford Union was a joint venture which was 51% owned by Ford, 23% owned by distributor Lada-OMC, & 26% owned by the Belarus government. Production began in 1997. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford-Vairogs|Ford-Vairogs]] | style="text-align:left;"| [[w:Riga|Riga]] | style="text-align:left;"| [[w:Latvia|Latvia]] | style="text-align:center;"| Closed (1940). Nationalized following Soviet invasion & takeover of Latvia. | [[w:Ford Prefect#E93A (1938–49)|Ford-Vairogs Junior]]<br />[[w:Ford Taunus G93A#Ford Taunus G93A (1939–1942)|Ford-Vairogs Taunus]]<br />[[w:1937 Ford|Ford-Vairogs V8 Standard]]<br />[[w:1937 Ford|Ford-Vairogs V8 De Luxe]]<br />Ford-Vairogs V8 3-ton trucks<br />Ford-Vairogs buses | Produced vehicles under license from Ford's Copenhagen, Denmark division. Production began in 1937. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Fremantle Assembly Plant | style="text-align:left;"| [[w:North Fremantle, Western Australia|North Fremantle, Western Australia]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 1987 | style="text-align:left;"| [[w:Ford Model A (1927–1931)| Ford Model A]] <br /> [[w:1932 Ford|1932 Ford]] <br /> [[w:Ford Model 48|Ford Model 48]]<br>[[w:1937 Ford|1937 Ford]]<br>[[w:Ford Anglia|Ford Anglia]]<br>[[w:Ford Prefect|Ford Prefect]] <br>Ford trucks <br> Ford tractors | style="text-align:left;"| Located at 130 Stirling Highway. Plant opened in March 1930. In the 1970’s and 1980’s the factory was assembling tractors and rectifying vehicles delivered from Geelong in Victoria. The factory was also used as a depot for spare parts for Ford dealerships. Later used by Matilda Bay Brewing Company from 1988-2013 though beer production ended in 2007. |- valign="top" | | style="text-align:left;"| Geelong Assembly | style="text-align:left;"| [[w:Norlane, Victoria|Norlane, Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:Ford Model Y|Ford Model Y]]<br />[[w:Ford Model C Ten|Ford Model C Ten]]<br />[[w:1932 Ford|1932-1934 Ford]]<br />[[w:Ford Model 48|Ford Model 48/Model 68]]<br />[[w:1937 Ford|1937-1940 Ford]]<br />[[w:Mercury Eight|Mercury Eight]] (through 1948)<br />[[w:Ford Prefect|Ford Prefect]]<br />[[w:Ford Anglia|Ford Anglia]]<br />[[w:1941 Ford#Australian production|1941-1942 & 1946-1948 Ford]]<br />[[w:Ford Pilot|Ford Pilot]]<br />[[w:Ford Consul|Ford Consul]]<br />[[w:Ford Zephyr|Ford Zephyr]]<br />[[w:Ford Zodiac|Ford Zodiac]]<br />[[w:1949 Ford|1949-1951 Ford Custom Fordor/Coupe Utility/Deluxe Coupe Utility]]<br />[[w:1952 Ford|1952-1954 Ford Customline sedan/Mainline Coupe Utility]]<br />[[w:1955 Ford|1955-1956 Ford Customline sedan/Mainline Coupe Utility]]<br />[[w:1957 Ford|1957-1959 Ford Custom 300/Fairlane 500/Ranch Wagon]]<br />[[w:Ford F-Series|Ford Freighter/F-Series]] | Production began in 1925 in a former wool storage warehouse in Geelong before moving to a new plant in the Geelong suburb that later became known as Norlane. Vehicle production later moved to Broadmeadows plant that opened in 1959. |- valign="top" | | style="text-align:left;"| Geelong Aluminum Casting | style="text-align:left;"| [[w:Norlane, Victoria|Norlane, Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 2016 | style="text-align:left;"| Aluminum cylinder heads, intake manifolds, and structural oil pans | Opened 1986. |- valign="top" | | style="text-align:left;"| Geelong Iron Casting | style="text-align:left;"| [[w:Norlane, Victoria|Norlane, Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 2016 | style="text-align:left;"| I6 engine blocks, camshafts, crankshafts, exhaust manifolds, bearing caps, disc brake rotors and flywheels | Opened 1972. |- valign="top" | | style="text-align:left;"| Geelong Chassis Components | style="text-align:left;"| [[w:Norlane, Victoria|Norlane, Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 2004 | style="text-align:left;"| Parts - Machine cylinder heads, suspension arms and brake rotors | Opened 1983. |- valign="top" | | style="text-align:left;"| Geelong Engine | style="text-align:left;"| [[w:Norlane, Victoria|Norlane, Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 2016 | style="text-align:left;"| [[w:Ford 335 engine#302 and 351 Cleveland (Australia)|Ford 302 & 351 Cleveland V8]]<br />[[w:Ford straight-six engine#Ford Australia|Ford Australia Falcon I6]]<br />[[w:Ford Barra engine#Inline 6|Ford Australia Barra I6]] | Opened 1926. |- valign="top" | | style="text-align:left;"| Geelong Stamping | style="text-align:left;"| [[w:Norlane, Victoria|Norlane, Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 2016 | style="text-align:left;"| Ford Falcon/Futura/Fairmont body panels <br /> Ford Falcon Utility body panels <br /> Ford Territory body panels | Opened 1926. Previously: Ford Fairlane body panels <br /> Ford LTD body panels <br /> Ford Capri body panels <br /> Ford Cortina body panels <br /> Welded subassemblies and steel press tools |- valign="top" | style="text-align:center;"| B (EU) [when following G] | style="text-align:left;"| [[w:Genk Body & Assembly|Genk Body & Assembly]] | style="text-align:left;"| [[w:Genk|Genk]] | style="text-align:left;"| [[w:Belgium|Belgium]] | style="text-align:center;"| Closed in 2014 | style="text-align:left;"| [[w:Ford Mondeo|Ford Mondeo]]<br /> [[w:Ford S-Max|Ford S-MAX]]<br /> [[w:Ford Galaxy|Ford Galaxy]] | Opened in 1964.<br /> Previously: [[w:Ford Taunus P4|Ford Taunus P4]]<br />[[w:Ford Taunus P5|Ford Taunus P5]]<br />[[w:Ford Taunus P6|Ford Taunus P6]]<br />[[w:Ford P7|Ford Taunus P7]]<br />[[w:Ford Taunus TC|Ford Taunus TC]]<br />[[w:Ford Anglia#Anglia Torino 105E (1965–67)|Ford Anglia Torino]]<br />[[w:Ford Escort (Europe)#First generation (1967–1975)|Ford Escort]]<br />[[w:Ford Sierra|Ford Sierra]]<br />[[w:Ford Transit|Ford Transit]] |- valign="top" | | style="text-align:left;"| GETRAG FORD Transmissions Bordeaux Transaxle Plant | style="text-align:left;"| [[w:Blanquefort, Gironde|Blanquefort]] | style="text-align:left;"| [[w:France|France]] | style="text-align:center;"| Sold to Getrag/Magna Powertrain in 2021 | style="text-align:left;"| [[w:Ford BC-series transmission|Ford BC4/BC5 transmission]]<br />[[w:Ford BC-series transmission#iB5 Version|Ford iB5 transmission (5MTT170/5MTT200)]]<br />[[w:Ford Durashift#Durashift EST|Ford Durashift-EST(iB5-ASM/5MTT170-ASM)]]<br />MX65 transmission<br />CTX [[w:Continuously variable transmission|CVT]] | Opened in 1976. Became a joint venture with [[w:Getrag|Getrag]] in 2001. Joint Venture: 50% Ford Motor Company / 50% Getrag Transmission. Joint venture dissolved in 2021 and this plant was kept by Getrag, which was taken over by [[w:Magna Powertrain|Magna Powertrain]] in 2015. |- valign="top" | | style="text-align:left;"| Green Island Plant | style="text-align:left;"| [[w:Green Island, New York|Green Island, New York]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1989) | style="text-align:left;"| Radiators, springs | style="text-align:left;"| 1922-1989, demolished in 2004 |- valign="top" | style="text-align:center;"| B (EU) (for Fords) [when following B],<br> X (for Jaguar w/2.5L),<br> W (for Jaguar w/3.0L),<br> H (for Land Rover) | style="text-align:left;"| [[w:Halewood Body & Assembly|Halewood Body & Assembly]] | style="text-align:left;"| [[w:Halewood|Halewood]], [[w:Merseyside|Merseyside]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Sold (2008) | style="text-align:left;"| [[w:Ford Anglia|Ford Anglia]], [[w:Ford Corsair|Ford Corsair]], [[w:Ford Escort (Europe)|Ford Escort]], [[w:Ford Capri|Ford Capri]], [[w:Ford Orion|Ford Orion]], [[w:Jaguar X-Type|Jaguar X-Type]], [[w:Land Rover Freelander#Freelander 2 (L359; 2006–2015)|Land Rover Freelander 2 / LR2]] | style="text-align:left;"| 1963–2008. Ford assembly ended in July 2000, then transferred to Jaguar/Land Rover. Sold to [[w:Tata Motors|Tata Motors]] with Jaguar/Land Rover business. The van variant of the Escort remained in production in a facility located behind the now Jaguar plant at Halewood until October 2002. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Hamilton Plant | style="text-align:left;"| [[w:Hamilton, Ohio|Hamilton, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1950) | style="text-align:left;"| [[w:Fordson|Fordson]] tractors/tractor components<br /> Wheels for cars like Model T & Model A<br />Locks and lock parts<br />Radius rods<br />Running Boards | style="text-align:left;"| Opened in 1920. Factory used hydroelectric power. Switched from tractors to auto parts less than 6 months after production began. Also made parts for bomber engines during World War II. Plant closed in 1950. Sold to Bendix Aviation Corporation in 1951. Bendix closed the plant in 1962 and sold it in 1963 to Ward Manufacturing Co., which made camping trailers there. In 1975, it was sold to Chem-Dyne Corp., which used it for chemical waste storage & disposal. Demolished around 1981 as part of a Federal Superfund cleanup of the site. |- valign="top" | | style="text-align:left;"| Heimdalsgade Assembly | style="text-align:left;"| [[w:Heimdalsgade|Heimdalsgade street]], [[w:Nørrebro|Nørrebro district]], [[w:Copenhagen|Copenhagen]] | style="text-align:left;"| [[w:Denmark|Denmark]] | style="text-align:center;"| Closed (1924) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| 1919–1924. Was replaced by, at the time, Europe's most modern Ford-plant, "Sydhavnen Assembly". |- valign="top" | style="text-align:center;"| HP/HM/H (NA) | style="text-align:left;"| [[w:Highland Park Ford Plant|Highland Park Plant]] | style="text-align:left;"| [[w:Highland Park, Michigan|Highland Park, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Sold (1981) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />Ford trucks (pre-1948)<br />[[w:Ford F-Series|Ford F-Series]] (1948-1950, 1951-1956)<br /> [[w:Ford F-Series (medium-duty truck)#Second generation (1953–1956)|Ford F-Series (medium-duty truck)]] (1953, 1956)<br />[[w:Fordson|Fordson]] tractors and tractor components | style="text-align:left;"| Located at 91 Manchester Avenue (at Woodward Avenue). Ford Motor Company's third American factory. Was also Ford's world headquarters from 1910-1927. First automobile factory in history to utilize a moving assembly line (implemented October 7, 1913). Model T production from 1910 to 1927. Car production then shifted to the Rouge complex in Dearborn. Continued to make automotive trim parts after 1927. Also made [[w:M4 Sherman#M4A3|M4A3 Sherman tanks]], M34 and M34A1 Gun Mounts for Sherman Tanks, M10A1 "Wolverine" Tank Destroyers, M7 gun directors, Squad Tents for the Army, and parts for Pratt & Whitney R-2800 radial aircraft engines made by Ford at the Rouge complex during World War II. Became Ford's main tractor plant in 1947. One of the first 2 Ford plants to build the <br> F-Series, beginning November 27, 1947 (other was Richmond, California). F-Series truck production ended in 1957. Production of trim parts ended in the 1960s. Tractor production ended in 1974. Ford sold the Highland Park plant in October 1981, but continues to lease space there for storage. In October 2012, Ford moved its records storage out of Highland Park (Bldg. AA). Some of the site has been demolished and replaced by a mall called Model T Plaza but multiple buildings of the complex are still standing. A Forman Mills store opened in Bldg. JJ. Listed on the National Register of Historic Places in 1973. Designated a National Historic Landmark in 1978. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Hobart Assembly Plant | style="text-align:left;"|[[w:Hobart, Tasmania|Hobart, Tasmania]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br /> [[w:Ford Model A (1927–1931)| Ford Model A]] <br>Ford trucks <br> Ford tractors | style="text-align:left;"| Located on Collins Street. Plant opened in December 1925. |- valign="top" | style="text-align:center;"| K (AU) | style="text-align:left;"| Homebush Assembly Plant | style="text-align:left;"| [[w:Homebush West, New South Wales|Homebush (Sydney), NSW]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 1994 | style="text-align:left;"| [[w:Ford Model 48|Ford Model 48]]<br>[[w:Ford Consul|Ford Consul]]<br>[[w:Ford Zephyr|Ford Zephyr]]<br>[[w:Ford Cortina|Ford Cortina]]<br> [[w:Ford Escort (Europe)|Ford Escort Mk. 1 & 2]]<br /> [[w:Ford Capri#Ford Capri Mk I (1969–1974)|Ford Capri]] Mk.1<br />[[w:Ford Fairlane (Australia)#Intermediate Fairlanes (1962–1965)|Ford Fairlane (1962-1964)]]<br />[[w:Ford Galaxie|Ford Galaxie]] (1965-1968)<br />[[w:Ford Laser|Ford Laser]]<br /> [[w:Ford Meteor|Ford Meteor]]<br />[[w:Ford Transit#First generation (1965)|Ford Transit]]<br />[[w:Ford Mustang (first generation)|Ford Mustang (conversion to right hand drive)]] | style="text-align:left;"| Ford’s first factory in New South Wales opened in 1925 in the Sandown area of Sydney making the [[w:Ford Model T|Ford Model T]] and later the [[w:Ford Model A (1927–1931)| Ford Model A]] and the [[w:1932 Ford|1932 Ford]]. This plant was replaced by the Homebush plant which opened in March 1936 and later closed in September 1994. |- valign="top" | | style="text-align:left;"| [[w:List of Hyundai Motor Company manufacturing facilities#Ulsan Plant|Hyundai Ulsan Plant]] | style="text-align:left;"| [[w:Ulsan|Ulsan]] | style="text-align:left;"| [[w:South Korea]|South Korea]] | style="text-align:center;"| Ford production ended in 1985. Licensing agreement with Ford ended. | style="text-align:left;"| [[w:Ford Cortina|Ford Cortina]] Mk2-Mk5<br />[[w:Ford P7|Ford P7]]<br />[[w:Ford Granada (Europe)#Mark II (1977–1985)|Ford Granada MkII]]<br />[[w:Ford D series|Ford D-750/D-800]]<br />[[w:Ford R series|Ford R-182]] | [[w:Hyundai Motor|Hyundai Motor]] began by producing Ford models under license. Replaced by self-developed Hyundai models. |- valign="top" | J (NA) | style="text-align:left;"| IMMSA | style="text-align:left;"| [[w:Monterrey, Nuevo Leon|Monterrey, Nuevo Leon]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| Closed (2000). Agreement with Ford ended. | style="text-align:left;"| Ford M450 motorhome chassis | Replaced by Detroit Chassis LLC plant. |- valign="top" | | style="text-align:left;"| Indianapolis Steering Systems Plant | style="text-align:left;"| [[w:Indianapolis|Indianapolis, IN]] | style="text-align:left;"| U.S. | style="text-align:center;"|1957–2011, demolished in 2017 | style="text-align:left;"| Steering columns, Steering gears | style="text-align:left;"| Located at 6900 English Ave. Spun off as part of [[w:Visteon|Visteon]] in 2000. Taken back by Ford in 2005 as part of [[w:Automotive Components Holdings|Automotive Components Holdings]] LLC. Closed in 2011. Demolished in 2017. |- valign="top" | | style="text-align:left;"| Industrias Chilenas de Automotores SA (Chilemotores) | style="text-align:left;"| [[w:Arica|Arica]] | style="text-align:left;"| [[w:Chile|Chile]] | style="text-align:center;" | Closed c.1969 | [[w:Ford Falcon (North America)|Ford Falcon]] | Opened 1964. Was a 50/50 joint venture between Ford and Bolocco & Cia. Replaced by Ford's 100% owned Casablanca, Chile plant.<ref name=":2">{{Cite web |last=S.A.P |first=El Mercurio |date=2020-04-15 |title=Infografía: Conoce la historia de la otrora productiva industria automotriz chilena {{!}} Emol.com |url=https://www.emol.com/noticias/Autos/2020/04/15/983059/infiografia-historia-industria-automotriz-chile.html |access-date=2022-11-05 |website=Emol |language=Spanish}}</ref> |- valign="top" | | style="text-align:left;"| [[w:Inokom|Inokom]] | style="text-align:left;"| [[w:Kulim, Kedah|Kulim, Kedah]] | style="text-align:left;"| [[w:Malaysia|Malaysia]] | style="text-align:center;"| Ford production ended 2016 | [[w:Ford Transit#Facelift (2006)|Ford Transit]] | Plant owned by Inokom |- valign="top" | style="text-align:center;"| D (SA) | style="text-align:left;"| [[w:Ford Brasil|Ipiranga Assembly]] | style="text-align:left;"| [[w:Ipiranga (district of São Paulo)|Ipiranga, São Paulo]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Closed (2000) | CKD, Ford tractors, [[w:Ford F-Series|Ford F-Series]], [[w:Ford Galaxie#Brazilian production|Ford Galaxie]], [[w:Ford Landau|Ford Landau]], [[w:Ford LTD (Americas)#Brazil|Ford LTD]], [[w:Ford Cargo|Ford Cargo]] Trucks, Ford B-1618 & B-1621 bus chassis, Ford B12000 school bus chassis, [[w:Volkswagen Delivery|VW Delivery]], [[w:Volkswagen Worker|VW Worker]], [[w:Volkswagen L80|VW L80]], [[w:Volkswagen Volksbus|VW Volksbus 16.180 CO bus chassis]] | Part of Autolatina joint venture with VW from 1987 to 1996. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Brasil|Ipiranga Engine]] | style="text-align:left;"| [[w:Ipiranga (district of São Paulo)|Ipiranga, São Paulo]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Closed | [[w:Ford Y-block engine#272|Ford 272 Y-block V8]], [[w:Ford Y-block engine#292|Ford 292 Y-block V8]] | |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Otosan#History|Istanbul Assembly]] | style="text-align:left;"| [[w:Tophane|Tophane]], [[w:Istanbul|Istanbul]] | style="text-align:left;"| [[w:Turkey|Turkey]] | style="text-align:center;"| Production stopped in 1934 as a result of the [[w:Great Depression|Great Depression]]. Then handled spare parts & service for existing cars. Closed entirely in 1944. | style="text-align:left;"| [[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]] | Opened 1929. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Browns Lane plant|Jaguar Browns Lane plant]] | style="text-align:left;"| [[w:Coventry|Coventry]], [[w:West Midlands (county)|West Midlands]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (2007) | style="text-align:left;"| [[w:Jaguar XJ|Jaguar XJ]]<br />[[w:Jaguar XJ-S|Jaguar XJ-S]]<br />[[w:Jaguar XK (X100)|Jaguar XK8/XKR (X100)]]<br />[[w:Jaguar XJ (XJ40)#Daimler/Vanden Plas|Daimler six-cylinder sedan (XJ40)]]<br />[[w:Daimler Six|Daimler Six]] (X300)<br />[[w:Daimler Sovereign#Daimler Double-Six (1972–1992, 1993–1997)|Daimler Double Six]]<br />[[w:Jaguar XJ (X308)#Daimler/Vanden Plas|Daimler Eight/Super V8]] (X308)<br />[[w:Daimler Super Eight|Daimler Super Eight]] (X350/X356)<br /> [[w:Daimler DS420|Daimler DS420]] | style="text-align:left;"| |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Castle Bromwich Assembly|Jaguar Castle Bromwich Assembly]] | style="text-align:left;"| [[w:Castle Bromwich|Castle Bromwich]], [[w:West Midlands (county)|West Midlands]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Sold (2008) | style="text-align:left;"| [[w:Jaguar S-Type (1999)|Jaguar S-Type]]<br />[[w:Jaguar XF (X250)|Jaguar XF (X250)]]<br />[[w:Jaguar XJ (X350)|Jaguar XJ (X356/X358)]]<br />[[w:Jaguar XJ (X351)|Jaguar XJ (X351)]]<br />[[w:Jaguar XK (X150)|Jaguar XK (X150)]]<br />[[w:Daimler Super Eight|Daimler Super Eight]] <br />Painted bodies for models made at Browns Lane | style="text-align:left;"| Sold to [[w:Tata Motors|Tata Motors]] in 2008 as part of sale of Jaguar Land Rover. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Jaguar Radford Engine | style="text-align:left;"| [[w:Radford, Coventry|Radford]], [[w:West Midlands (county)|West Midlands]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (1997) | style="text-align:left;"| [[w:Jaguar AJ6 engine|Jaguar AJ6 engine]]<br />[[w:Jaguar V12 engine|Jaguar V12 engine]]<br />Axles | style="text-align:left;"| Originally a [[w:Daimler Company|Daimler]] site. Daimler had built buses in Radford. Jaguar took over Daimler in 1960. |- valign="top" | style="text-align:center;"| K (EU) [when following G] (for Ford), <br> M (NA) (for Merkur) | style="text-align:left;"| [[w:Karmann|Karmann Rheine Assembly]] | style="text-align:left;"| [[w:Rheine|Rheine]], [[w:North Rhine-Westphalia|North Rhine-Westphalia]] | style="text-align:left;"| [[w:Germany|Germany]] | style="text-align:center;"| Closed in 2008 (Ford production ended in 1997) | [[w:Ford Escort (Europe)|Ford Escort Convertible]]<br />[[w:Ford Escort RS Cosworth|Ford Escort RS Cosworth]]<br />[[w:Merkur XR4Ti|Merkur XR4Ti]] (1985-1989) | Plant owned by [[w:Karmann|Karmann]] |- valign="top" | | style="text-align:left;"| Kechnec Transmission (Getrag Ford Transmissions) | style="text-align:left;"| [[w:Kechnec|Kechnec]], [[w:Košice Region|Košice Region]] | style="text-align:left;"| [[w:Slovakia|Slovakia]] | style="text-align:center;"| Sold to [[w:Getrag|Getrag]]/[[w:Magna Powertrain|Magna Powertrain]] in 2019 | style="text-align:left;"| Ford MPS6 transmissions<br /> Ford SPS6 transmissions | style="text-align:left;"| Ford/Getrag "Powershift" dual clutch transmission. Originally owned by Getrag Ford Transmissions - a joint venture 50% owned by Ford Motor Company & 50% owned by Getrag Transmission. Plant sold to Getrag in 2019. Getrag Ford Transmissions joint venture was dissolved in 2021. Getrag was previously taken over by [[w:Magna Powertrain|Magna Powertrain]] in 2015. |- valign="top" | style="text-align:center;"| 6 (NA) | style="text-align:left;"| [[w:Kia Design and Manufacturing Facilities#Sohari Plant|Kia Sohari Plant]] | style="text-align:left;"| [[w:Gwangmyeong|Gwangmyeong]] | style="text-align:left;"| [[w:South Korea|South Korea]] | style="text-align:center;"| Ford production ended (2000) | style="text-align:left;"| [[w:Ford Festiva|Ford Festiva]] (US: 1988-1993)<br />[[w:Ford Aspire|Ford Aspire]] (US: 1994-1997) | style="text-align:left;"| Plant owned by Kia. |- valign="top" | style="text-align:left;"| | style="text-align:left;"| [[w:Ford Motor Argentina|La Boca Assembly]] | style="text-align:left;"| [[w:La Boca|La Boca]], [[w:Buenos Aires|Buenos Aires]] | style="text-align:left;"| [[w:Argentina|Argentina]] | style="text-align:center;"| Closed (1961) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />[[w:Ford F-Series (third generation)|Ford F-Series (Gen 3)]]<br />[[w:Ford B series#Third generation (1957–1960)|Ford B-600 bus]]<br />[[w:Ford F-Series (fourth generation)#Argentinian-made 1961–1968|Ford F-Series (Early Gen 4)]] | style="text-align:left;"| Replaced by the [[w:Pacheco Stamping and Assembly|General Pacheco]] plant in 1961. |- valign="top" | style="text-align:center;"| F | style="text-align:left;"| La Villa Assembly | style="text-align:left;"| La Villa, [[w:Mexico City|Mexico City]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| Closed (1984) | style="text-align:left;"| [[w:1932 Ford|1932 Ford]]<br />[[w:Ford Anglia|Ford Anglia]]<br />[[w:Ford Consul|Ford Consul]]<br />[[w:Ford Taunus|Ford Taunus]]<br />[[w:Ford Falcon (North America)|Ford Falcon]]<br />[[w:Ford Maverick (1970–1977)|Ford Falcon Maverick]]<br />[[w:Ford Fairmont|Ford Fairmont/Elite II]]<br />[[w:Ford Galaxie|Ford Galaxie]]<br />[[w:Ford LTD (Americas)|Ford LTD]]<br />[[w:Ford Thunderbird|Ford Thunderbird]]<br />[[w:Ford Mustang (first generation)|Ford Mustang]]<br />[[w:Ford Mustang (second generation)|Ford Mustang II]] | style="text-align:left;"| Replaced San Lazaro plant. Opened 1932.<ref>{{cite web|url=http://www.fundinguniverse.com/company-histories/ford-motor-company-s-a-de-c-v-history/|title=History of Ford Motor Company, S.A. de C.V. – FundingUniverse|website=www.fundinguniverse.com}}</ref> Is now the Plaza Tepeyac shopping center. |- valign="top" | style="text-align:center;"| A | style="text-align:left;"| [[w:Solihull plant|Land Rover Solihull Assembly]] | style="text-align:left;"| [[w:Solihull|Solihull]], [[w:West Midlands (county)|West Midlands]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Sold (2008) | style="text-align:left;"| [[w:Land Rover Defender|Land Rover Defender (L316)]]<br />[[w:Land Rover Discovery#First generation|Land Rover Discovery]]<br />[[w:Land Rover Freelander#First generation (L314; 1997–2006)|Land Rover Freelander]]<br />[[w:Land Rover Discovery#Discovery 3 / LR3 (2004–2009)|Land Rover Discovery 3/LR3]]<br />[[w:Land Rover Discovery#Discovery 4 / LR4 (2009–2016)|Land Rover Discovery 4/LR4]]<br />[[w:Range Rover (P38A)|Land Rover Range Rover (P38A)]]<br /> [[w:Range Rover (L322)|Land Rover Range Rover (L322)]]<br /> [[w:Range Rover Sport#First generation (L320; 2005–2013)|Land Rover Range Rover Sport]] | style="text-align:left;"| Sold to [[w:Tata Motors|Tata Motors]] in 2008 as part of sale of Jaguar Land Rover. |- valign="top" | style="text-align:center;"| C (EU) [when following B] | style="text-align:left;"| Langley Assembly | style="text-align:left;"| [[w:Langley, Berkshire|Langley, Slough]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Sold/closed (1986/1997) | style="text-align:left;"| [[w:Ford Transit|Ford Transit]] and [[w:Ford A series|Ford A-series]] vans; [[w:Ford D Series|Ford D-Series]] and [[w:Ford Cargo|Ford Cargo]] trucks; [[w:Ford R series|Ford R-Series]] bus/coach chassis | style="text-align:left;"| 1949–1986. Former Hawker aircraft factory. Sold to Iveco, closed 1997. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Largs Bay Assembly Plant | style="text-align:left;"| [[w:Largs Bay, South Australia|Largs Bay (Port Adelaide Enfield), South Australia]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed 1965 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] <br /> [[w:Ford Model A (1927–1931)|Ford Model A]] <br /> [[w:1932 Ford|1932 Ford]] <br /> [[w:Ford Model 48|Ford Model 48]]<br>[[w:1937 Ford|1937 Ford]]<br>[[w:Ford Zephyr|Ford Zephyr]]<br>[[w:Ford Customline|Ford Customline]] | style="text-align:left;"| Plant opened in 1926. Was at the corner of Victoria Rd and Jetty Rd. Later used by James Hardie to manufacture asbestos fiber sheeting. Is now Rapid Haulage at 214 Victoria Road. |- valign="top" | | style="text-align:left;"| Leamington Foundry | style="text-align:left;"| [[w:Leamington Spa|Leamington Spa]], [[w:Warwickshire|Warwickshire]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (2007) | style="text-align:left;"| Castings including brake drums and discs, differential gear cases, flywheels, hubs and exhaust manifolds | style="text-align:left;"| Opened in 1940, closed in July 2007. Demolished 2012. |- valign="top" | style="text-align:center;"| LP (NA) | style="text-align:left;"| [[w:Lincoln Motor Company Plant|Lincoln Motor Company Plant]] | style="text-align:left;"| [[w:Detroit, Michigan|Detroit, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1952); Most buildings demolished in 2002-2003 | style="text-align:left;"| [[w:Lincoln L series|Lincoln L series]]<br />[[w:Lincoln K series|Lincoln K series]]<br />[[w:Lincoln Custom|Lincoln Custom]]<br />[[w:Lincoln-Zephyr|Lincoln-Zephyr]]<br />[[w:Lincoln EL-series|Lincoln EL-series]] (1950-1951)<br />[[w:Lincoln Cosmopolitan|Lincoln Cosmopolitan]] (1950-1952)<br /> [[w:Lincoln Capri#First generation (1952–1955))|Lincoln Capri]] (1952 only)<br />[[w:Lincoln Continental#First generation (1940–1942, 1946–1948)|Lincoln Continental (retroactively Mark I)]] <br /> [[w:Mercury Monterey|Mercury Monterey]] (1952) | Located at 6200 West Warren Avenue at corner of Livernois. Built before Lincoln was part of Ford Motor Co. Ford kept some offices here after production ended in 1952. Sold to Detroit Edison in 1955. Eventually replaced by Wixom Assembly plant. Mostly demolished in 2002-2003. |- valign="top" | style="text-align:center;"| J (NA) | style="text-align:left;"| [[w:Los Angeles Assembly|Los Angeles Assembly]] (Los Angeles Assembly plant #2) | style="text-align:left;"| [[w:Pico Rivera, California|Pico Rivera, California]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1957 to 1980 | style="text-align:left;"| | style="text-align:left;"|Located at 8900 East Washington Blvd. and Rosemead Blvd. Sold to Northrop Aircraft Company in 1982 for B-2 Stealth Bomber development. Demolished 2001. Now the Pico Rivera Towne Center, an open-air shopping mall. Plant only operated one shift due to California Air Quality restrictions. First vehicles produced were the Edsel [[w:Edsel Corsair|Corsair]] (1958) & [[w:Edsel Citation|Citation]] (1958) and Mercurys. Later vehicles were [[w:Ford 300|Ford 300]] (1963), [[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1964-1965, 1968), [[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1960-1961),[[w:Ford Galaxie|Galaxie]] (1959-1971, 1973), [[w:Ford LTD (Americas)|LTD]] (1967-1976, 1978, 1980), [[w:Mercury Monterey|Mercury Monterey]] (1960-1962), [[w:Mercury Park Lane|Mercury Park Lane]] (1958), [[w:Mercury S-55|Mercury S-55]], [[w:Mercury Marauder|Mercury Marauder]], [[w:Mercury Meteor#Full-size (1961)|Mercury Meteor]], [[w:Mercury Marquis|Mercury Marquis]], [[w:Mercury Montclair|Mercury Montclair]] (1958-1960, 1967), [[w:Mercury Turnpike Cruiser|Mercury Turnpike Cruiser]] (1958), and [[w:Ford Thunderbird|Ford Thunderbird]] (1968-1979). Also, [[w:Ford Falcon (North America)|Ford Falcon]], [[w:Mercury Comet|Mercury Comet]] (1962-1967), [[w:Ford LTD II|Ford LTD II]], & [[w:Mercury Cougar#Fourth generation (1977–1979)|Mercury Cougar]]. Thunderbird production ended after the 1979 model year. The last vehicle produced was the Panther platform [[w:Ford LTD (Americas)#Third generation (1979–1982)|Ford LTD]] on January 26, 1980. Built 1,419,498 vehicles. |- valign="top" | style="text-align:center;"| LA (early)/<br>LB/L (NA) | style="text-align:left;"| [[w:Long Beach Assembly|Long Beach Assembly]] | style="text-align:left;"| [[w:Long Beach, California|Long Beach, California]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1930 to 1959 | style="text-align:left;"| (1930-32, 1934-59):<br> [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]],<br> [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]],<br> [[w:1957 Ford|1957 Ford]] (1957-1959), [[w:Ford Galaxie|Ford Galaxie]] (1959),<br> [[w:Ford F-Series|Ford F-Series]] (1951-1958). | style="text-align:left;"| Located at 700 Henry Ford Ave. Ended production March 20, 1959 when the site became unstable due to oil drilling. Production moved to the Los Angeles plant in Pico Rivera. Ford sold the Long Beach plant to the Dallas and Mavis Forwarding Company of South Bend, Indiana on January 28, 1960. It was then sold to the Port of Long Beach in the 1970's. Demolished from 1990-1991. |- valign="top" | style="text-align:center;"| H (NA) | style="text-align:left;"| [[w:Lorain Assembly|Lorain Assembly]] | style="text-align:left;"| [[w:Lorain, Ohio|Lorain, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1958 to 2005 | style="text-align:left;"| [[w:Ford Econoline|Ford Econoline/Club Wagon/E-Series]] (1961-2006) | style="text-align:left;"|Located at 5401 Baumhart Road. Closed December 14, 2005. Produced 15,805,106 vehicles, nearly half of which are Econoline/Club Wagon/<br>E-Series vans. Operations transferred to Avon Lake.<br /> Previously:<br> [[w:Ford Galaxie|Ford Galaxie]] (1959)<br />[[w:Ford Ranchero|Ford Ranchero]] (1959-1965, 1978-1979)<br />[[w:Ford Falcon (North America)|Ford Falcon]] (1960-1965)<br />[[w:Mercury Comet#First generation (1960–1963)|Comet]] (1960-1961)<br />[[w:Mercury Comet|Mercury Comet]] (1962-1969)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane]] (1966-1969)<br />[[w:Ford Torino|Ford Torino]] (1968-1976)<br />[[w:Mercury Montego|Mercury Montego]] (1968-1976)<br />[[w:Mercury Cyclone|Mercury Cyclone]] (1968-1971)<br />[[w:Ford LTD II|Ford LTD II]] (1977-1979)<br />[[w:Ford Thunderbird|Ford Thunderbird]] (1980-1997)<br />[[w:Mercury Cougar#Fourth generation (1977–1979)|Mercury Cougar]] (1977-1979)<br />[[w:Mercury Cougar#Fifth generation (1980–1982)|Mercury Cougar XR-7]] (1980-1982)<br />[[w:Mercury Cougar#Sixth generation (1983–1988)|Mercury Cougar]] (1983-1988)<br />[[w:Mercury Cougar#Seventh generation (1989–1997)|Mercury Cougar]] (1989-1997)<br />[[w:Ford F-Series|Ford F-Series]] (1959-1964)<br />[[w:Ford E-Series#Mercury Econoline|Mercury Econoline pickup]] (1961) <br />[[w:Ford E-Series#Mercury Econoline|Mercury Econoline]] (1966-1967) |- valign="top" | | style="text-align:left;"| [[w:Ford Mack Avenue Plant|Mack Avenue Plant]] | style="text-align:left;"| [[w:Detroit|Detroit, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Ford production: June 1903-October 1904 | style="text-align:left;"| Original [[w:Ford Model A (1903–04)|Ford Model A]] [[w:Ford Model A (1903–04)#Ford Model AC|Ford Model AC]] | style="text-align:left;"| 1903–1904. Ford Motor Company's first factory (rented). Ford began occupying the rented plant in April 1903 but production didn't start until after Ford Motor Co. was incorporated in June 1903. Ford assembled components here that were purchased from other companies including Dodge Bros. Co., which supplied the chassis, engine, transmission, driveshaft, and both axles. A second story was added in late 1903 to provide a paint shop and additional space for storage. Ford relocated to the Piquette Ave. plant in Detroit in Oct. 1904 because they had outgrown the Mack Ave. plant and needed a larger factory space. The Mack Avenue Plant's address was originally 588–592 Mack Avenue when Ford Motor Company occupied the building. Its address became 6520 Mack Avenue after the city of Detroit changed its street numbering system in January 1921. Various other tenants occupied the building after Ford left including the Columbia Motors Co. Columbia Motors also occupied the building diagonally across Mack Ave. (6501 Mack Ave.) which was originally owned by the Aerocar Co., founded by Alexander Malcomson, an early investor in Ford Motor Co. who had a falling out with Henry Ford regarding company direction. After Aerocar went bankrupt in 1907, 6501 Mack Ave. was the first plant of Hudson Motor Car Co. Hudson quickly outgrew the plant and moved a few miles away to a larger plant. The Ford plant building burned down in August 1941. An imprecise replica of the building was built in 1945 and is located at [[w:The Henry Ford|The Henry Ford]]. |- valign="top" | style="text-align:center;"| E (NA) | style="text-align:left;"| [[w:Mahwah Assembly|Mahwah Assembly]] | style="text-align:left;"| [[w:Mahwah, New Jersey|Mahwah, New Jersey]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1955 to 1980. | style="text-align:left;"| Last vehicles produced:<br> [[w:Ford Fairmont|Ford Fairmont]] (1978-1980)<br /> [[w:Mercury Zephyr|Mercury Zephyr]] (1978-1980) | style="text-align:left;"| Located on Orient Blvd. Truck production ended in July 1979. Car production ended in June 1980 and the plant closed. Demolished. Site then used by Sharp Electronics Corp. as a North American headquarters from 1985 until 2016 when former Ford subsidiaries Jaguar Land Rover took over the site for their North American headquarters. Another part of the site is used by retail stores.<br /> Previously:<br> [[w:Ford F-Series|Ford F-Series]] (1955-1958, 1960-1979)<br />[[w:1955 Ford|1955 Ford]]<br />[[w:1957 Ford|1957 Ford]]<br />[[w:Ford Ranchero|Ford Ranchero]] (1957)<br />[[w:Edsel Pacer|Edsel Pacer]] (1958)<br />[[w:Edsel Ranger|Edsel Ranger]] (1958)<br />[[w:Edsel Roundup|Edsel Roundup]] (1958)<br />[[w:Edsel Villager|Edsel Villager]] (1958)<br />[[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1961)<br />[[w:Ford 300|Ford 300]] (1963)<br />[[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1964, 1966-1967)<br />[[w:Ford Galaxie|Ford Galaxie]] (1959-1970)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1966-1967, 1969, 1971-1972, 1974)<br /> [[w:Mercury Monterey|Mercury Monterey]] (1961-1963) <br /> [[w:Mercury Commuter|Mercury Commuter]] (1962)<br /> [[w:Ford Granada (North America)#First generation (1975–1980)|Ford Granada]] (1975-1980)<br />[[w:Mercury Monarch|Mercury Monarch]] (1975-1980) |- valign="top" | | tyle="text-align:left;"| Manukau Alloy Wheel | style="text-align:left;"| [[w:Manukau|Manukau, Auckland]] | style="text-align:left;"| [[w:New Zealand|New Zealand]] | style="text-align:center;"| Sold (2001) | style="text-align:left;"| Aluminum wheels and cross members | style="text-align:left;"| Established 1981. Sold in 2001 to Argent Metals Technology |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Matford|Matford]] | style="text-align:left;"| [[w:Strasbourg|Strasbourg]] | style="text-align:left;"| [[w:France|France]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Mathis (automobile)|Mathis cars]]<br />Matford V8 cars <br />Matford trucks | Matford was a joint venture 60% owned by Ford and 40% owned by French automaker Mathis. Replaced by Ford's own Poissy plant after Matford was dissolved. |- valign="top" | | style="text-align:left;"| Maumee Stamping | style="text-align:left;"| [[w:Maumee, Ohio|Maumee, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (2007) | style="text-align:left;"| body panels | style="text-align:left;"| Closed in 2007, sold, and reopened as independent stamping plant |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:MÁVAG#Car manufacturing, the MÁVAG-Ford|MAVAG]] | style="text-align:left;"| [[w:Budapest|Budapest]] | style="text-align:left;"| [[w:Hungary|Hungary]] | style="text-align:center;"| Closed (1939) | [[w:Ford Eifel|Ford Eifel]]<br />[[w:1937 Ford|Ford V8]]<br />[[w:de:Ford-Barrel-Nose-Lkw|Ford G917T]] | Opened 1938. Produced under license from Ford Germany. MAVAG was nationalized in 1946. |- valign="top" | style="text-align:center;"| LA (NA) | style="text-align:left;"| [[w:Maywood Assembly|Maywood Assembly]] <ref>{{cite web|url=http://skyscraperpage.com/forum/showthread.php?t=170279&page=955|title=Photo of Lincoln-Mercury Assembly}}</ref> (Los Angeles Assembly plant #1) | style="text-align:left;"| [[w:Maywood, California|Maywood, California]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1948 to 1957 | style="text-align:left;"| [[w:Mercury Eight|Mercury Eight]] (-1951), [[w:Mercury Custom|Mercury Custom]] (1955-1956), [[w:Mercury Medalist|Mercury Medalist]] (1956), [[w:Mercury Montclair|Mercury Montclair]] (1955-1957), [[w:Mercury Monterey|Mercury Monterey]] (1952-1957), [[w:Mercury Turnpike Cruiser|Mercury Turnpike Cruiser]] (1957), [[w:Lincoln EL-series|Lincoln EL-series]] (1950-1951), [[w:Lincoln Cosmopolitan|Lincoln Cosmopolitan]] (1951-1952, 1954), [[w:Lincoln Premiere|Lincoln Premiere]] (1956), [[w:Lincoln Capri|Lincoln Capri]] (1953-1956). Painting of Pico Rivera-built Edsel bodies until Pico Rivera's paint shop was up and running. | style="text-align:left;"| Located at 5801 South Eastern Avenue and Slauson Avenue in Maywood, now part of City of Commerce. Across the street from the [[w:Los Angeles (Maywood) Assembly|Chrysler Los Angeles Assembly plant]]. Plant was demolished following closure. |- valign="top" | style="text-align:left;"| 0 | style="text-align:left;"| [[w:List of Mazda facilities#List of Mazda production plants|Mazda Hiroshima Assembly]] | style="text-align:left;"| [[w:Hiroshima|Hiroshima]], [[w:Hiroshima Prefecture|Hiroshima Prefecture]] | style="text-align:left;"| [[w:Japan|Japan]] | style="text-align:center;"| Ford production ended. Ford no longer owns a stake in Mazda. | style="text-align:left;"| [[w:Ford Courier#Mazda-based models|Ford Courier]]<br />[[w:Ford Festiva#Third generation (1996)|Ford Festiva Mini Wagon]]<br />[[w:Ford Freda|Ford Freda]]<br />[[w:Mazda Bongo|Ford Econovan/Econowagon/Spectron]]<br />[[w:Ford Raider|Ford Raider]]<br />[[w:Ford Trader|Ford Trader]] | style="text-align:left;"| Plant owned by Mazda. |- valign="top" | style="text-align:left;"| 1 | style="text-align:left;"| [[w:List of Mazda facilities#List of Mazda production plants|Mazda Hofu Assembly]] | style="text-align:left;"| [[w:Hofu|Hofu]], [[w:Yamaguchi Prefecture|Yamaguchi Prefecture]] | style="text-align:left;"| [[w:Japan|Japan]] | style="text-align:center;"| Ford production ended. Ford no longer owns a stake in Mazda. | style="text-align:left;"| [[w:Ford Laser|Ford Laser]]<br />[[w:Ford Telstar|Ford Telstar]] | style="text-align:left;"| Plant owned by Mazda. |- valign="top" | | style="text-align:left;"| Metcon Casting (Metalurgica Constitución S.A.) | style="text-align:left;"| [[w:Villa Constitución|Villa Constitución]], [[w:Santa Fe Province|Santa Fe Province]] | style="text-align:left;"| [[w:Argentina|Argentina]] | style="text-align:center;"| Sold to Paraná Metal SA | style="text-align:left;"| Parts - Iron castings | Originally opened in 1957. Bought by Ford in 1967. |- valign="top" | | style="text-align:left;"| Monroe Stamping Plant | style="text-align:left;"| [[w:Monroe, Michigan|Monroe, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"|Closed as a factory in 2008. Now a Ford warehouse. | style="text-align:left;"| Coil springs, wheels, stabilizer bars, catalytic converters, headlamp housings, and bumpers. Chrome Plating (1956-1982) | style="text-align:left;"| Located at 3200 E. Elm Ave. Originally built by Newton Steel around 1929 and subsequently owned by [[w:Alcoa|Alcoa]] and Kelsey-Hayes Wheel Co. Bought by Ford in 1949 and opened in 1950. Spun off as part of [[w:Visteon|Visteon]] in 2000. Taken back by Ford in 2005 as part of [[w:Automotive Components Holdings|Automotive Components Holdings]] LLC. Closed in 2008. Sold to parent Ford Motor Co. in 2009. Converted into Ford River Raisin Warehouse. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Montevideo Assembly | style="text-align:left;"| [[w:Montevideo|Montevideo]] | style="text-align:left;"| [[w:Uruguay|Uruguay]] | style="text-align:center;"| Closed (1985) | [[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Falcon (Argentina)|Ford Falcon]]<br />[[w:Ford F-Series|Ford F-Series]]<br />[[w:Ford D Series|Ford D series]] | Plant was on Calle Cuaró. Opened 1920. Ford Uruguay S.A. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Nissan Motor Australia|Nissan Motor Australia]] | style="text-align:left;"| [[w:Clayton, Victoria|Clayton]], [[w:Victoria (Australia)|Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Closed (1992) | style="text-align:left;"| [[w:Ford Corsair#Ford Corsair (UA, Australia)|Ford Corsair (UA)]]<br />[[w:Nissan Pintara|Nissan Pintara]]<br />[[w:Nissan Skyline#Seventh generation (R31; 1985)|Nissan Skyline]] | Plant owned by Nissan. Ford production was part of the [[w:Button Plan|Button Plan]]. |- valign="top" | style="text-align:center;"| NK/NR/N (NA) | style="text-align:left;"| [[w:Norfolk Assembly|Norfolk Assembly]] | style="text-align:left;"| [[w:Norfolk, Virginia|Norfolk, Virginia]] | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1925 to 2007 | style="text-align:left;"| [[w:Ford F-Series|Ford F-Series]] (1951-2007) | Located at 2424 Springfield Ave. on the Elizabeth River. Opened April 20, 1925. Production ended on June 28, 2007. Ford sold the property in 2011. Mostly Demolished. <br /> Previously: [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />[[w:1949 Ford|1949 Ford]]<br />[[w:1952 Ford|1952 Ford]]<br />[[w:1955 Ford|1955 Ford]]<br />[[w:1957 Ford|1957 Ford]] <br /> [[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1960-1961) <br /> [[w:Ford Galaxie|Ford Galaxie]] (1959-1970, 1973-1974)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1966-1967, 1974) |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Valve Plant|Ford Valve Plant]] | style="text-align:left;"| [[w:Northville, Michigan|Northville, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1981) | style="text-align:left;"| Engine valves for cars and tractors | style="text-align:left;"| Located at 235 East Main Street. Previously a gristmill purchased by Ford in 1919 that was reconfigured to make engine valves from 1920 to 1936. Replaced with a new purpose-built structure designed by Albert Kahn in 1936 which includes a waterwheel. Closed in 1981. Later used as a manufacturing plant by R&D Enterprises from 1994 to 2005 to make heat exchangers. Known today as the Water Wheel Centre, a commercial space that includes design firms and a fitness club. Listed on the National Register of Historic Places in 1995. |- valign="top" | style="text-align:center;"| C (NA) | tyle="text-align:left;"| [[w:Ontario Truck|Ontario Truck]] | style="text-align:left;"| [[w:Oakville, Ontario|Oakville, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| Closed (2004) | style="text-align:left;"|[[w:Ford F-Series|Ford F-Series]] (1966-2003)<br /> [[w:Ford F-Series (tenth generation)|Ford F-150 Heritage]] (2004)<br /> [[w:Ford F-Series (tenth generation)#SVT Lightning (1999-2004)|Ford F-150 Lightning SVT]] (1999-2004) | Opened in 1965. Truck production moved from the neighboring Oakville Assembly plant when Ontario Truck opened in 1965. After Ontario Truck closed in 2004, it was absorbed into the Oakville Assembly plant.<br /> Previously:<br> [[w:Mercury M-Series|Mercury M-Series]] (1966-1968) |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Officine Stampaggi Industriali|OSI]] | style="text-align:left;"| [[w:Turin|Turin]] | style="text-align:left;"| [[w:Italy|Italy]] | style="text-align:center;"| Closed (1967) | [[w:Ford Anglia#Anglia Torino 105E (1965–67)|Ford Anglia Torino]]<br />[[w:OSI-Ford 20 M TS|OSI-Ford 20 M TS]] | Plant owned by [[w:Officine Stampaggi Industriali|OSI]] |- valign="top" | style="text-align:left;"| | style="text-align:left;"| [[w:Otosan|Ford Otosan Assembly]] | style="text-align:left;"| [[w:Istanbul|Istanbul]] | style="text-align:left;"| [[w:Turkey|Turkey]] | style="text-align:center;"| Closed (2001) | style="text-align:left;"| [[w:Ford Consul|Ford Consul]]<br />[[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Taunus TC#Turkey|Ford Taunus]]<br />[[w:Ford Transit|Ford Transit]]<br />[[w:Ford F-Series (fourth generation)|Ford F-600]]<br />[[w:Ford Cargo|Ford Cargo]]<br />[[w:Ford D series|Ford D Series]]<br />[[w:Ford Thames 400E|Ford Thames 800]]<br />[[w:Thames Trader|Thames Trader]]<br />[[w:Ford P100#Cortina-based model|Otosan P100]]<br />[[w:Anadol|Anadol]] | style="text-align:left;"| Opened 1960. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Pacheco Truck Assembly and Painting Plant | style="text-align:left;"| [[w:General Pacheco|General Pacheco]], [[w:Buenos Aires Province|Buenos Aires Province]] | style="text-align:left;"| [[w:Argentina|Argentina]] | style="text-align:center;"| Transferred to VW when Autolatina dissolved (1996) | style="text-align:left;"| [[w:Ford F-Series|Ford F-100/F-150]]<br />[[w:Ford F-Series|Ford F-250/F-350/F-400/F-4000]]<br />[[w:Ford F-Series (medium duty truck)|Ford F-600/F-6000/F-700/F-7000]] | style="text-align:left;"| Opened in 1982. Part of [[w:Autolatina|Autolatina]] joint venture with VW from 1987 to 1996. VW kept this side of the Pacheco plant when Autolatina dissolved and converted it to car production. VW has since then used this plant for Amarok pickup truck production. |- valign="top" | style="text-align:center;"| U (EU) [when following L] | style="text-align:left;"| [[w:Pininfarina|Pininfarina Bairo Assembly]] | style="text-align:left;"| [[w:Bairo|Bairo]] | style="text-align:left;"| [[w:Italy|Italy]] | style="text-align:center;"| Closed (2010) | [[w:Ford Focus (second generation, Europe)#Coupé-Cabriolet|Ford Focus Coupe-Cabriolet]]<br />[[w:Ford Ka#StreetKa and SportKa|Ford StreetKa]] | Plant owned by [[w:Pininfarina|Pininfarina]] |- valign="top" | | style="text-align:left;"| [[w:Ford Piquette Avenue Plant|Piquette Avenue Plant]] | style="text-align:left;"| [[w:Detroit|Detroit, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Sold (1911), reopened as a museum (2001) | style="text-align:left;"| Models [[w:Ford Model B (1904)|B]], [[w:Ford Model C|C]], [[w:Ford Model F|F]], [[w:Ford Model K|K]], [[w:Ford Model N|N]], [[w:Ford Model N#Model R|R]], [[w:Ford Model S|S]], and [[w:Ford Model T|T]] | style="text-align:left;"| 1904–1910. Ford Motor Company's second American factory (first owned). Concept of a moving assembly line experimented with and developed here before being fully implemented at Highland Park plant. Birthplace of the [[w:Ford Model T|Model T]] (September 27, 1908). Sold to [[w:Studebaker|Studebaker]] in 1911. Sold to [[w:3M|3M]] in 1936. Sold to Cadillac Overall Company, a work clothes supplier, in 1968. Owned by Heritage Investment Company from 1989 to 2000. Sold to the Model T Automotive Heritage Complex in April 2000. Run as a museum since July 27, 2001. Oldest car factory building on Earth open to the general public. The Piquette Avenue Plant was added to the National Register of Historic Places in 2002, designated as a Michigan State Historic Site in 2003, and became a National Historic Landmark in 2006. The building has also been a contributing property for the surrounding Piquette Avenue Industrial Historic District since 2004. The factory's front façade was fully restored to its 1904 appearance and revealed to the public on September 27, 2008, the 100th anniversary of the completion of the first production Model T. |- valign="top" | | style="text-align:left;"| Plonsk Assembly | style="text-align:left;"| [[w:Plonsk|Plonsk]] | style="text-align:left;"| [[w:Poland|Poland]] | style="text-align:center;"| Closed (2000) | style="text-align:left;"| [[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Transit|Ford Transit]]<br /> | style="text-align:left;"| Opened in 1995. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford France|Poissy Assembly]] (now the [[w:Stellantis Poissy Plant|Stellantis Poissy Plant]]) | style="text-align:left;"| [[w:Poissy|Poissy]] | style="text-align:left;"| [[w:France|France]] | style="text-align:center;"| Sold in 1954 to Simca | style="text-align:left;"| [[w:Ford SAF#Ford SAF (1945-1954)|Ford F-472/F-472A (13CV) & F-998A (22CV)]]<br />[[w:Ford Vedette|Ford Vedette]]<br />[[w:Ford Abeille|Ford Abeille]]<br />[[w:Ford Vendôme|Ford Vendôme]] <br />[[w:Ford Comèt|Ford Comète]]<br /> Ford F-198 T/F-598 T/F-698 W/Cargo F798WM/Remorqueur trucks<br />French Ford based Simca models:<br />[[w:Simca Vedette|Simca Vedette]]<br />[[w:Simca Ariane|Simca Ariane]]<br />[[w:Simca Ariane|Simca Miramas]]<br />[[w:Ford Comète|Simca Comète]] | Ford France including the Poissy plant and all current and upcoming French Ford models was sold to [[w:Simca|Simca]] in 1954 and Ford took a 15.2% stake in Simca. In 1958, Ford sold its stake in [[w:Simca|Simca]] to [[w:Chrysler|Chrysler]]. In 1963, [[w:Chrysler|Chrysler]] increased their stake in [[w:Simca|Simca]] to a controlling 64% by purchasing stock from Fiat, and they subsequently extended that holding further to 77% in 1967. In 1970, Chrysler increased its stake in Simca to 99.3% and renamed it Chrysler France. In 1978, Chrysler sold its entire European operations including Simca to PSA Peugeot-Citroën and Chrysler Europe's models were rebranded as Talbot. Talbot production at Poissy ended in 1986 and the Talbot brand was phased out. Poissy went on to produce Peugeot and Citroën models. Poissy has therefore, over the years, produced vehicles for the following brands: [[w:Ford France|Ford]], [[w:Simca|Simca]], [[w:Chrysler Europe|Chrysler]], [[w:Talbot#Chrysler/Peugeot era (1979–1985)|Talbot]], [[w:Peugeot|Peugeot]], [[w:Citroën|Citroën]], [[w:DS Automobiles|DS Automobiles]], [[w:Opel|Opel]], and [[w:Vauxhall Motors|Vauxhall]]. Opel and Vauxhall are included due to their takeover by [[w:PSA Group|PSA Group]] in 2017 from [[w:General Motors|General Motors]]. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Recife Assembly | style="text-align:left;"| [[w:Recife|Recife]], [[w:Pernambuco|Pernambuco]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br /> [[w:Ford Model A (1927–1931)|Ford Model A]]<br /> | Opened 1925. Brazilian branch assembly plant. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Automotive industry in Australia#Renault Australia|Renault Australia]] | style="text-align:left;"| [[w:Heidelberg, Victoria|Heidelberg]], [[w:Victoria (Australia)|Victoria]] | style="text-align:left;"| [[w:Australia|Australia]] | style="text-align:center;"| Factory closed in 1981 | style="text-align:left;"| [[w:Ford Cortina#Mark IV (1976–1979)|Ford Cortina wagon]] | Assembled by Renault Australia under a 3-year contract to [[w:Ford Australia|Ford Australia]] beginning in 1977. |- valign="top" | | style="text-align:left;"| [[w:Ford Romania#20th century|Ford Română S.A.R.]] | style="text-align:left;"| [[w:Bucharest|Bucharest]] | style="text-align:left;"| [[w:Romania|Romania]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Model 48|Ford Model 48/Model 68]] (1935-1936)<br /> [[w:1937 Ford|Ford Model 74/78/81A/82A/91A/92A/01A/02A]] (1937-1940)<br />[[w:Mercury Eight|Mercury Eight]] (1939-1940)<br /> | Production ended in 1940 due to World War II. The factory then did repair work only. The factory was nationalized by the Communist Romanian government in 1948. |- valign="top" | | style="text-align:left;"| [[w:Ford Romeo Engine Plant|Romeo Engine]] | style="text-align:left;"| [[W:Romeo, Michigan|Romeo, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (December 2022) | style="text-align:left;"| [[w:Ford Boss engine|Ford 6.2L Boss V8]]<br /> [[w:Ford Modular engine|Ford 4.6/5.4 Modular V8]] <br />[[w:Ford Modular engine#5.8 L Trinity|Ford 5.8L supercharged Trinity V8]]<br /> [[w:Ford Modular engine#Voodoo|Ford 5.2L flat-plane crank Voodoo V8]]<br /> [[w:Ford Modular engine#Predator|Ford 5.2L supercharged Predator V8]] | Located at 701 E. 32 Mile Road. Made Ford tractors and engines, parts, and farm implements for tractors from 1973 until 1988. Reopened in 1990 making the Modular V8. Included 2 lines: a high volume engine line and a niche engine line, which, since 1996, made high-performance V8 engines by hand including the Trinity, Voodoo, and Predator engines as well as the 32-valve 4.6L V8 in the Mustang Cobra SVT of '96-'99 & '01 and the <br> 32-valve 5.4L V8 in the '00 Mustang Cobra R and the supercharged 32-valve 4.6L V8 in the Mustang Cobra SVT of '03-'04 & the supercharged 32-valve 5.4L V8 in the Mustang Shelby GT500 of '07-'12 and the Ford GT of '05-'06. |- valign="top" | style="text-align:center;"| R (NA) | style="text-align:left;"| [[w:San Jose Assembly Plant|San Jose Assembly Plant]] | style="text-align:left;"| [[w:Milpitas, California|Milpitas, California]] | style="text-align:left;"| U.S. | style=”text-align:center;"| 1955-1983 | style="text-align:left;"| [[w:Ford F-Series|Ford F-Series]] (1955-1983), [[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1960), [[w:Ford Galaxie|Ford Galaxie]] (1959-1960), [[w:Edsel Pacer|Edsel Pacer]] (1958), [[w:Edsel Ranger|Edsel Ranger]] (1958), [[w:Edsel Roundup|Edsel Roundup]] (1958), [[w:Edsel Villager|Edsel Villager]] (1958), [[w:Edsel Bermuda|Edsel Bermuda]] (1958), [[w:Ford Pinto|Ford Pinto]] (1971-1978), [[w:Mercury Bobcat|Mercury Bobcat]] (1976, 1978), [[w:Ford Escort (North America)#First generation (1981–1990)|Ford Escort]] (1982-1983), [[w:Ford EXP|Ford EXP]] (1982-1983), [[w:Mercury Lynx|Mercury Lynx]] (1982-1983), [[w:Mercury LN7|Mercury LN7]] (1982-1983), [[w:Ford Falcon (North America)|Ford Falcon]] (1961-1964), [[w:Mercury Comet#First generation (1960–1963)|Comet]] (1961), [[w:Mercury Comet|Mercury Comet]] (1962), [[w:Ford Fairlane (Americas)|Ford Fairlane (midsize)]] (1962-1964, 1969-1970), [[w:Ford Torino|Ford Torino]] (1969-1970), [[w:Ford Ranchero|Ford Ranchero]] (1957-1964, 1970), [[w:Mercury Montego|Mercury Montego]], [[w:Ford Mustang|Ford Mustang]] (1965-1970, 1974-1981), [[w:Mercury Cougar|Mercury Cougar]] (1968-1969), & [[w:Mercury Capri#Second generation (1979–1986)|Mercury Capri]] (1979-1981). | style="text-align:left;"| Replaced the Richmond Assembly Plant. Was northwest of the intersection of Great Mall Parkway/Capitol Avenue and Montague Expressway extending west to S. Main St. (in Milpitas). Site is now Great Mall of the Bay Area. |- | | style="text-align:left;"| San Lazaro Assembly Plant | style="text-align:left;"| San Lazaro, [[w:Mexico City|Mexico City]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;" | Operated 1925-c.1932 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]] | First auto plant in Mexico opened in 1925. Replaced by La Villa plant in 1932. |- | style="text-align:center;"| T (EU) [when following M] | [[w:Ford India|Sanand Vehicle Assembly Plant]] | [[w:Sanand|Sanand]], [[w:Gujarat|Gujarat]] | [[w:India|India]] | style="text-align:center;"| Closed (2021)<ref name=":0"/> Sold to [[w:Tata Motors|Tata Motors]] in 2022. | style="text-align:left;"| [[w:Ford Figo#Second generation (B562; 2015)|Ford Figo]]<br />[[w:Ford Figo Aspire|Ford Figo Aspire]]<br />[[w:Ford Figo#Freestyle|Ford Freestyle]] | Opened March 2015<ref name="sanand">{{cite web|title=News|url=https://www.at.ford.com/en/homepage/news-and-clipsheet/news.html|website=www.at.ford.com}}</ref> |- | | Santiago Exposition Street Plant (Planta Calle Exposición 1258) | [[w:es:Calle Exposición|Calle Exposición]], [[w:Santiago, Chile|Santiago, Chile]] | [[w:Chile|Chile]] | style="text-align:center;" |Operated 1924-c.1962 <ref>{{Cite web |last=U |first=Juan Ignacio Alamos |date=2013-04-10 |title=AUTOS CHILENOS: PLANTA FORD CALLE EXPOSICIÓN (1924 - c.1962) |url=https://autoschilenos.blogspot.com/2013/04/planta-ford-calle-exposicion-1924-c1962.html |access-date=2022-08-04 |website=AUTOS CHILENOS}}</ref><ref name=":1" /> | [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:Ford F-Series|Ford F-Series]] | First plant opened in Chile in 1924.<ref name=":2" /> |- valign="top" | style="text-align:center;"| B (SA) | style="text-align:left;"| [[w:Ford Brasil|São Bernardo Assembly]] | style="text-align:left;"| [[w:São Bernardo do Campo|São Bernardo do Campo]], [[w:São Paulo (state)|São Paulo (state)]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Closed Oct. 30, 2019 & Sold 2020 <ref>{{Cite news|url=https://www.reuters.com/article/us-ford-motor-southamerica-heavytruck-idUSKCN1Q82EB|title=Ford to close oldest Brazil plant, exit South America truck biz|date=2019-02-20|work=Reuters|access-date=2019-03-07|language=en}}</ref> | style="text-align:left;"| [[w:Ford Fiesta|Ford Fiesta]]<br /> [[w:Ford Cargo|Ford Cargo]] Trucks<br /> [[w:Ford F-Series|Ford F-Series]] | Originally the Willys-Overland do Brazil plant. Bought by Ford in 1967. Part of [[w:Autolatina|Autolatina]] joint venture with VW from 1987 to 1996. No more Cargo Trucks produced in Brazil since 2019. Sold to Construtora São José Desenvolvimento Imobiliária.<br />Previously:<br />[[w:Willys Aero#Brazilian production|Ford Aero]]<br />[[w:Ford Belina|Ford Belina]]<br />[[w:Ford Corcel|Ford Corcel]]<br />[[w:Ford Del Rey|Ford Del Rey]]<br />[[w:Willys Aero#Brazilian production|Ford Itamaraty]]<br />[[w:Jeep CJ#Brazil|Ford Jeep]]<br /> [[w:Ford Rural|Ford Rural]]<br />[[w:Ford F-75|Ford F-75]]<br />[[w:Ford Maverick (1970–1977)|Ford Maverick]]<br />[[w:Ford Pampa|Ford Pampa]]<br />[[w:Ford Courier#Brazil (1998–2013)|Ford Courier]]<br />[[w:Ford Ka|Ford Ka]] (BE146 & B402)<br />[[w:Ford Escort (Europe)|Ford Escort]]<br />[[w:Ford Orion|Ford Orion]]<br />[[w:Ford Verona|Ford Verona]]<br />[[w:Volkswagen Apollo|Volkswagen Apollo]]<br />[[w:Volkswagen Logus|Volkswagen Logus]]<br />[[w:Volkswagen Pointer|Volkswagen Pointer]]<br />Ford tractors |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:pt:Ford do Brasil|São Paulo city assembly plants]] | style="text-align:left;"| [[w:São Paulo|São Paulo]], [[w:São Paulo (state)|São Paulo (state)]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br /> [[w:Ford Model A (1927–1931)|Ford Model A]]<br /> [[w:1932 Ford|1932 Ford]]<br />Ford tractors | First plant opened in 1919 on Rua Florêncio de Abreu, in São Paulo. Moved to a larger plant in Praça da República in São Paulo in 1920. Then moved to an even larger plant on Rua Solon, in the Bom Retiro neighborhood of São Paulo in 1921. Replaced by Ipiranga plant in 1953. |- valign="top" | style="text-align:center;"| L (NZ) | style="text-align:left;"| Seaview Assembly Plant | style="text-align:left;"| [[w:Lower Hutt|Lower Hutt]] | style="text-align:left;"| [[w:New Zealand|New Zealand]] | style="text-align:center;"| Closed (1988) | style="text-align:left;"| [[w:Ford Model 48#1936|Ford Model 68]]<br />[[w:1937 Ford|1937 Ford]] Model 78<br />[[w:Ford Model Y|Ford Model Y]]<br />[[w:Ford Model C Ten|Ford Model C Ten]]<br />[[w:Ford 7W|Ford 7W]]<br />[[w:Ford Anglia|Ford Anglia]]<br />[[w:Ford Prefect|Ford Prefect]]<br />[[w:Ford Consul Capri|Ford Consul Classic 315]]<br />[[w:Ford Consul|Ford Consul]]<br />[[w:Ford Zephyr|Ford Zephyr]]<br /> [[w:Ford Zodiac|Ford Zodiac]]<br /> [[w:Ford Pilot|Ford Pilot]]<br />[[w:1949 Ford|Ford Custom V8 Fordor]]<br /> [[w:Ford Escort (Europe)|Ford Escort]]<br /> [[w:Ford Cortina|Ford Cortina]]<br /> [[w:Ford Sierra|Ford Sierra]] wagon<br />[[w:Ford Telstar|Ford Telstar]]<br />[[w:Ford Falcon (Australia)|Ford Falcon]]<br />[[w:Ford Thames 400E|Ford Thames 400E]]<br />[[w:Ford Transit#First generation (1965)|Ford Transit]]<br />[[w:Fordson|Fordson]] Major tractors | style="text-align:left;"| Opened in 1936, closed in 1988 |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Sheffield Aluminum Casting Plant | style="text-align:left;"| [[w:Sheffield, Alabama|Sheffield, Alabama]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (1983) | style="text-align:left;"| Die cast parts<br /> pistons<br /> transmission cases | style="text-align:left;"| Opened in 1958, closed in December 1983. Demolished 2008. |- valign="top" | style="text-align:center;"| J (EU) [when following B] | style="text-align:left;"| Shenstone plant | style="text-align:left;"| [[w:Shenstone, Staffordshire|Shenstone, Staffordshire]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (1986) | style="text-align:left;"| [[w:Ford RS200|Ford RS200]] | style="text-align:left;"| Former [[w:Reliant Motors|Reliant Motors]] plant. Leased by Ford from 1985-1986 to build the RS200. |- valign="top" | style="text-align:center;"| D (EU) [when following B] | style="text-align:left;"| [[w:Ford Southampton plant|Southampton Body & Assembly]] | style="text-align:left;"| [[w:Southampton|Southampton]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed (2013)<ref name="End of an era"/> | style="text-align:left;"| [[w:Ford Transit|Ford Transit]] van | style="text-align:left;"| Former Supermarine aircraft factory, acquired 1953. Built Ford vans 1972 – July 2013 |- valign="top" | style="text-align:center;"| SL/Z (NA) | style="text-align:left;"| [[w:St. Louis Assembly|St. Louis Assembly]] | style="text-align:left;"| [[w:Hazelwood, MO|Hazelwood, MO]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1948-2006 | style="text-align:left;"| [[w:Ford Explorer|Ford Explorer]] (1995-2006)<br>[[w:Mercury Mountaineer|Mercury Mountaineer]] (2002-2006)<br>[[w:Lincoln Aviator#First generation (UN152; 2003)|Lincoln Aviator]] (2003-2005) | style="text-align:left;"| Located at 2-58 Ford Lane and Aviator Dr. St. Louis plant is now a mixed use residential/commercial space (West End Lofts). Hazelwood plant was demolished in 2009.<br /> Previously:<br /> [[w:Ford Aerostar|Ford Aerostar]] (1986-1997)<br /> [[w:Ford LTD Crown Victoria|Ford LTD Crown Victoria]] (1983-1985) <br />[[w:Ford LTD (Americas)|Ford LTD]]<br />[[w:Ford Galaxie|Ford Galaxie]]<br> [[w:Mercury Grand Marquis|Mercury Grand Marquis]] (1983-1985)<br />[[w:Mercury Marquis|Mercury Marquis]] (1967-1982)<br />[[w:Mercury Marquis#Third generation (1979–1982)|Mercury Marquis Meteor (Canada only)]] (1980-81)<br /> [[w:Mercury Marauder|Mercury Marauder]] <br />[[w:Mercury Medalist|Mercury Medalist]] (1956, 1958)<br /> [[w:Mercury Monterey|Mercury Monterey]] (1952-1970, 1974)<br>[[w:Mercury Montclair|Mercury Montclair]] (1955-1960, 1964-1968)<br />[[w:Mercury S-55|Mercury S-55]] (1962-1963, 1966-1967)<br>[[w:Mercury Park Lane|Mercury Park Lane]] (1959, 1964-1968)<br />[[w:Mercury Turnpike Cruiser|Mercury Turnpike Cruiser]] (1957-1958)<br>[[w:Mercury Eight|Mercury Eight]] (1950-1951)<br /> [[w:Mercury Custom|Mercury Custom]] (1952-1953) |- valign="top" | style="text-align:center;"| X (NA) | style="text-align:left;"| [[w:St. Thomas Assembly|St. Thomas Assembly]] | style="text-align:left;"| [[w:Talbotville, Ontario|Talbotville, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| Closed (2011)<ref>{{cite news|url=https://www.theglobeandmail.com/investing/markets/|title=Markets|website=The Globe and Mail}}</ref> | style="text-align:left;"| [[w:Ford LTD Crown Victoria|Ford LTD Crown Victoria]] (1984-1991) <br />[[w:Ford Crown Victoria|Ford Crown Victoria]] (1992-2011)<br /> [[w:Mercury Grand Marquis|Mercury Grand Marquis]] (1984-2011)<br />[[w:Mercury Marauder#Third generation (2003–2004)|Mercury Marauder]] (2003-2004)<br /> [[w:Lincoln Town Car#Third generation (FN145; 1998–2011)|Lincoln Town Car]] (2008-2011) | style="text-align:left;"| Opened in 1967. Demolished. Now an Amazon fulfillment center.<br /> Previously:<br /> [[w:Ford Falcon (North America)|Ford Falcon]] (1968-1969)<br />[[w:Ford Maverick (1970–1977)|Ford Maverick]] (1970-77) <br />[[w:Ford Pinto|Ford Pinto]] (1971, 1973-1977, 1980)<br />[[w:Mercury Bobcat|Mercury Bobcat]] (1980)<br />[[w:Ford Fairmont|Ford Fairmont]] (1978-81)<br />[[w:Mercury Zephyr|Mercury Zephyr]] (1978-81) <br />[[w:Ford EXP|Ford EXP]] (1982-1983)<br />[[w:Mercury LN7|Mercury LN7]] (1982-1983) |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Stockholm Assembly | style="text-align:left;"| Free Port area (Frihamnen in Swedish), [[w:Stockholm|Stockholm]] | style="text-align:left;"| [[w:Sweden|Sweden]] | style="text-align:center;"| Closed (1957) | style="text-align:left;"| [[w:Ford Consul|Ford Consul]]<br />[[w:Ford Prefect|Ford Prefect]]<br />[[w:Ford Vedette|Ford Vedette]]<br />Ford trucks | style="text-align:left;"| |- valign="top" | style="text-align:center;"| 5 | style="text-align:left;"| [[w:Swedish Motor Assemblies|Swedish Motor Assemblies]] | style="text-align:left;"| [[w:Kuala Lumpur|Kuala Lumpur]] | style="text-align:left;"| [[w:Malaysia|Malaysia]] | style="text-align:center;"| Sold 2010 | style="text-align:left;"| [[w:Volvo S40|Volvo S40]]<br />[[w:Volvo S40#First generation (1995–2004)|Volvo V40]]<br />[[w:Volvo V50|Volvo V50]]<br />[[w:Volvo S60|Volvo S60]]<br />[[w:Volvo S70|Volvo S70]]<br />[[w:Volvo S80|Volvo S80]]<br />[[w:Volvo V70|Volvo V70]]<br />[[w:Volvo XC90|Volvo XC90]]<br />[[w:Land Rover Defender|Land Rover Defender]]<br />[[w:Land Rover Discovery|Land Rover Discovery]]<br />[[w:Land Rover Freelander|Land Rover Freelander]] | style="text-align:left;"| Also built Volvo trucks and buses. Used to do contract assembly for other automakers including Suzuki and Daihatsu. Volvo Cars was sold to [[w:Geely|Zhejiang Geely Holding Group Co., Ltd.]] in 2010. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Sydhavnen Assembly | style="text-align:left;"| [[w:Sydhavnen|Sydhavnen district]], [[w:Copenhagen|Copenhagen]] | style="text-align:left;"| [[w:Denmark|Denmark]] | style="text-align:center;"| Closed (1966) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:Ford Model Y|Ford Junior]]<br />[[w:Ford Model C (Europe)|Ford Junior De Luxe]]<br />[[w:Ford Eifel|Ford Eifel]]<br />[[w:Ford Taunus|Ford Taunus]]<br />[[w:Ford Anglia|Ford Anglia]]<br />[[w:Ford Thames 400E|Ford Thames 400E]] | style="text-align:left;"| 1924–1966. 325,482 vehicles were built. Plant was then converted into a tractor assembly plant for Ford Industrial Equipment Co. Tractor plant closed in the mid-1970's. Administration & depot building next to assembly plant was used until 1991 when depot for remote storage closed & offices moved to Glostrup. Assembly plant building stood until 2006 when it was demolished. |- | | style="text-align:left;"| [[w:Ford Brasil|Taubate Engine & Transmission & Chassis Plant]] | style="text-align:left;"| [[w:Taubaté, São Paulo|Taubaté, São Paulo]], Av. Charles Schnneider, 2222 | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Closed 2021<ref name="camacari"/> & Sold 05.18.2022 | [[w:Ford Pinto engine#2.3 (LL23)|Ford Pinto/Lima 2.3L I4]]<br />[[w:Ford Sigma engine#Zetec RoCam|Ford Zetec RoCam engine]]<br />[[w:Ford Sigma engine#Brazil|Ford Sigma engine]]<br />[[w:List of Ford engines#1.5 L Dragon|1.5L Ti-VCT Dragon 3-cyl.]]<br />[[w:Ford BC-series transmission#iB5 Version|iB5 5-speed manual transmission]]<br />MX65 5-speed manual transmission<br />aluminum casting<br />Chassis components | Opened in 1974. Sold to Construtora São José Desenvolvimento Imobiliária https://construtorasaojose.com<ref>{{Cite news|url=https://www.focus.jor.br/ford-vai-vender-fabrica-de-sp-para-construtora-troller-segue-sem-definicao/|title=Ford sold Factory in Taubaté to Buildings Development Constructor|date=2022-05-18|access-date=2022-05-29|language=pt}}</ref> |- valign="top" | | style="text-align:left;"| [[w:AutoAlliance Thailand#History|Thai Motor Co.]] | style="text-align:left;"| ? | style="text-align:left;"| [[w:Thailand|Thailand]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Cortina|Ford Cortina]] | Factory was a joint venture between Ford UK & Ford's Thai distributor, Anglo-Thai Motors Company. Taken over by Ford in 1973 when it was renamed Ford Thailand, closed in 1976 when Ford left Thailand. |- valign="top" | style="text-align:center;"| 4 | style="text-align:left;"| [[w:List of Volvo Car production plants|Thai-Swedish Assembly Co. Ltd.]] | style="text-align:left;"| [[w:Samutprakarn|Samutprakarn]] | style="text-align:left;"| [[w:Thailand|Thailand]] | style="text-align:center;"| Plant no longer used by Volvo Cars. Sold to Volvo AB in 2008. Volvo Car production ended in 2011. Production consolidated to Malaysia plant in 2012. | style="text-align:left;"| [[w:Volvo 200 Series|Volvo 200 Series]]<br />[[w:Volvo 940|Volvo 940]]<br />[[w:Volvo S40|Volvo S40/V40]]<br />[[w:Volvo S70|Volvo S70]]<br />[[w:Volvo S60|Volvo S60]]<br />[[w:Volvo S80|Volvo S80]]<br />[[w:Volvo V70|Volvo V70]]<br />[[w:Volvo XC90|Volvo XC90]]<br />[[w:Land Rover Freelander#First generation (L314; 1997–2006)|Land Rover Freelander]]<br />Volvo Trucks<br />Volvo Buses | Was 56% owned by Volvo and 44% owned by Swedish Motor. Volvo Cars was sold to [[w:Geely|Zhejiang Geely Holding Group Co., Ltd.]] in 2010. |- valign="top" | style="text-align:center;"| J | style="text-align:left;"| [[w:Think Global|TH!NK Nordic AS]] | style="text-align:left;"| [[w:Aurskog|Aurskog]] | style="text-align:left;"| [[w:Norway|Norway]] | style="text-align:center;"| Sold (2003) | style="text-align:left;"| [[w:Ford Think City|Ford Think City]] | style="text-align:left;"| Sold to Kamkorp Microelectronics as of February 1, 2003 |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Tlalnepantla Tool & Die | style="text-align:left;"| [[w:Tlalnepantla|Tlalnepantla]], [[w:Mexico State|Mexico State]] | style="text-align:left;"| [[w:Mexico|Mexico]] | style="text-align:center;"| Closed 1985 | style="text-align:left;"| Tooling for vehicle production | Was previously a Studebaker-Packard assembly plant. Bought by Ford in 1962 and converted into a tool & die plant. Operations transferred to Cuautitlan at the end of 1985. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Ford Trafford Park Factory|Ford Trafford Park Factory]] | style="text-align:left;"| [[w:Trafford Park|Trafford Park]] | style="text-align:left;"| [[w:England|England]], [[w:UK|UK]] | style="text-align:center;"| Closed | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]] | style="text-align:left;"| 1911–1931, formerly principal Ford UK plant. Produced [[w:Rolls-Royce Merlin|Rolls-Royce Merlin]] aircraft engines during World War II. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Transax, S.A. | style="text-align:left;"| [[w:Córdoba, Argentina|Córdoba]], [[w:Córdoba Province, Argentina|Córdoba Province]] | style="text-align:left;"| [[w:Argentina|Argentina]] | style="text-align:center;"| Transferred to VW when Autolatina dissolved (1996) | style="text-align:left;"| Transmissions <br /> Axles | style="text-align:left;"| Bought by Ford in 1967 from [[w:Industrias Kaiser Argentina|IKA]]. Part of [[w:Autolatina|Autolatina]] joint venture with VW from 1987 to 1996. VW kept this plant when Autolatina dissolved. VW has since then used this plant for transmission production. |- | style="text-align:center;"| H (SA) | style="text-align:left;"|[[w:Troller Veículos Especiais|Troller Veículos Especiais]] | style="text-align:left;"| [[w:Horizonte, Ceará|Horizonte, Ceará]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Acquired in 2007; operated until 2021. Closed (2021).<ref name="camacari"/> | [[w:Troller T4|Troller T4]], [[w:Troller Pantanal|Troller Pantanal]] | |- valign="top" | style="text-align:center;"| P (NA) | style="text-align:left;"| [[w:Twin Cities Assembly Plant|Twin Cities Assembly Plant]] | style="text-align:left;"| [[w:Saint Paul, Minnesota|St. Paul]], MN | style="text-align:left;"| U.S. | style="text-align:center;"| Operated from 1925 to 2011 | style="text-align:left;"| [[w:Ford Ranger (Americas)|Ford Ranger]] (1986-2011)<br />[[w:Ford Ranger (Americas)#Mazda B-Series/Mazda Truck (1994–2010)|Mazda B-Series]] (2005-2009 & 2010 in Canada) | style="text-align:left;"|Located at 966 S. Mississippi River Blvd. Began production May 4, 1925. Production ended December 1932 but resumed in 1935. Closed December 16, 2011. <br>Previously: [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]], [[w:1957 Ford|1957 Ford]], [[w:Ford Fairlane (Americas)|Ford Fairlane (full-size)]] (1960-1961), [[w:Ford Galaxie|Ford Galaxie]] (1959-1972, 1974), [[w:Ford 300|Ford 300]] (1963), [[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1964, 1966, 1976), [[w:Ford LTD (Americas)|Ford LTD]] (1967-1970, 1972-1973, 1975, 1977-1978), [[w:Ford F-Series|Ford F-Series]] (1951-1992) <br /> [[w:Ford F-Series (medium-duty truck)#Second generation (1953–1956)|Ford F-Series (medium-duty truck)]] (1954)<br />From 1926-1959, there was an onsite glass plant making glass for vehicle windows. Plant closed in 1933, reopened in 1935 with glass production resuming in 1937. Truck production began in 1950 alongside car production. Car production ended in 1978. F-Series production ended in 1992. Ranger production began in 1985 for the 1986 model year. |- valign="top" | style="text-align:center;"| J (SA) | style="text-align:left;"| [[w:Valencia Assembly|Valencia Assembly]] | style="text-align:left;"| [[w:Valencia, Venezuela|Valencia]], [[w:Carabobo|Carabobo]] | style="text-align:left;"| [[w:Venezuela|Venezuela]] | style="text-align:center;"| Opened 1962, Production suspended around 2019 | style="text-align:left;"| Previously built <br />[[w:Ford Bronco|Ford Bronco]] <br /> [[w:Ford Corcel|Ford Corcel]] <br />[[w:Ford Explorer|Ford Explorer]] <br />[[w:Ford Torino#Venezuela|Ford Fairlane (Gen 1)]]<br />[[w:Ford LTD II#Venezuela|Ford Fairlane (Gen 2)]]<br />[[w:Ford Fiesta (fifth generation)|Ford Fiesta Move]], [[w:Ford Fiesta|Ford Fiesta]]<br />[[w:Ford Focus|Ford Focus]]<br /> [[w:Ford Ka|Ford Ka]]<br />[[w:Ford LTD (Americas)#Venezuela|Ford LTD]]<br />[[w:Ford LTD (Americas)#Fourth generation (1983–1986)|Ford Granada]]<br />[[w:Mercury Marquis#Fourth generation (1983–1986)|Ford Cougar]]<br />[[w:Ford Laser|Ford Laser]] <br /> [[w:Ford Maverick (1970–1977)|Ford Maverick]] <br />[[w:Ford Mustang (first generation)|Ford Mustang]] <br /> [[w:Ford Sierra|Ford Sierra]]<br />[[w:Mazda Allegro|Mazda Allegro]]<br />[[w:Ford F-250|Ford F-250]]<br /> [[w:Ford F-350|Ford F-350]]<br /> [[w:Ford Cargo|Ford Cargo]] | style="text-align:left;"| Served Ford markets in Colombia, Ecuador and Venezuela. Production suspended due to collapse of Venezuela’s economy under Socialist rule of Hugo Chavez & Nicolas Maduro. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| [[w:Autolatina|Volkswagen São Bernardo Assembly]] ([[w:Volkswagen do Brasil|Anchieta]]) | style="text-align:left;"| [[w:São Bernardo do Campo|São Bernardo do Campo]], [[w:São Paulo (state)|São Paulo (state)]] | style="text-align:left;"| [[w:Brazil|Brazil]] | style="text-align:center;"| Returned to VW do Brazil when Autolatina dissolved in 1996 | style="text-align:left;"| [[w:Ford Versailles|Ford Versailles]]/Ford Galaxy (Argentina)<br />[[w:Ford Royale|Ford Royale]]<br />[[w:Volkswagen Santana#Santana (Brazil; 1984–2006)|Volkswagen Santana]]<br />[[w:Volkswagen Santana#Santana (Brazil; 1984–2006)|Volkswagen Quantum]] | Part of [[w:Autolatina|Autolatina]] joint venture between Ford and VW from 1987 to 1996. |- valign="top" | style="text-align:center;"| J | style="text-align:left;"| [[w:List of Volvo Car production plants|Volvo AutoNova Plant]] | style="text-align:left;"| [[w:Uddevalla|Uddevalla]] | style="text-align:left;"| [[w:Sweden|Sweden]] | style="text-align:center;"| Sold to Pininfarina Sverige AB | style="text-align:left;"| [[w:Volvo C70#First generation (1996–2005)|Volvo C70]] (Gen 1) | style="text-align:left;"| AutoNova was originally a 49/51 joint venture between Volvo & [[w:Tom Walkinshaw Racing|TWR]]. Restructured into Pininfarina Sverige AB, a new joint venture with [[w:Pininfarina|Pininfarina]] to build the 2nd generation C70. |- valign="top" | style="text-align:center;"| 2 | style="text-align:left;"| [[w:Volvo Car Gent|Volvo Ghent Plant]] | style="text-align:left;"| [[w:Ghent|Ghent]] | style="text-align:left;"| [[w:Belgium|Belgium]] | style="text-align:center;"| Sold | style="text-align:left;"| [[w:Volvo C30|Volvo C30]]<br />[[w:Volvo S40#Second generation (2004–2012)|Volvo S40]]<br />[[w:Volvo S60|Volvo S60]]<br />[[w:Volvo S70|Volvo S70]]<br />[[w:Volvo V40 (2012–2019)|Volvo V40]]<br />[[w:Volvo V50|Volvo V50]]<br />[[w:Volvo V70|Volvo V70]]<br />[[w:Volvo V70/XC70|Volvo XC70]] <br /> [[w:Volvo XC60|Volvo XC60]] | style="text-align:left;"| Sold as part of sale of Volvo Cars to [[w:Geely|Zhejiang Geely Holding Group Co., Ltd.]] in 2010 |- valign="top" | style="text-align:center;"| F | style="text-align:left;"| [[w:NedCar|Volvo Nedcar Plant]] | style="text-align:left;"| [[w:Born, Netherlands|Born]] | style="text-align:left;"| [[w:Netherlands|Netherlands]] | style="text-align:center;"| Sold (2001) | style="text-align:left;"| [[w:Volvo S40#First generation (1995–2004)|Volvo S40]]<br />[[w:Volvo S40#First generation (1995–2004)|Volvo V40]]<br />[[w:Mitsubishi Carisma|Mitsubishi Carisma]] <br /> [[w:Mitsubishi Space Star|Mitsubishi Space Star]] | style="text-align:left;"| Taken over by [[w:Mitsubishi Motors|Mitsubishi Motors]] in 2001, and later by [[w:VDL Groep|VDL Groep]] in 2012, when it became VDL Nedcar. Volvo production ended in 2004. |- valign="top" | style="text-align:center;"| J | style="text-align:left;"| [[w:Pininfarina#Uddevalla, Sweden Pininfarina Sverige AB|Volvo Pininfarina Sverige Plant]] | style="text-align:left;"| [[w:Uddevalla|Uddevalla]] | style="text-align:left;"| [[w:Sweden|Sweden]] | style="text-align:center;"| Closed by Volvo after the Geely takeover | style="text-align:left;"| [[w:Volvo C70#Second generation (2006–2013)|Volvo C70]] (Gen 2) | style="text-align:left;"| Pininfarina Sverige was a 40/60 joint venture between Volvo & [[w:Pininfarina|Pininfarina]]. Sold by Ford as part of sale of Volvo Cars to [[w:Geely|Zhejiang Geely Holding Group Co., Ltd.]] in 2010. Volvo bought back Pininfarina's shares in 2013 and closed the Uddevalla plant after C70 production ended later in 2013. |- valign="top" | | style="text-align:left;"| Volvo Skövde Engine Plant | style="text-align:left;"| [[w:Skövde|Skövde]] | style="text-align:left;"| [[w:Sweden|Sweden]] | style="text-align:center;"| Sold | style="text-align:left;"| [[w:Volvo Modular engine|Volvo Modular engine]] I4/I5/I6<br />[[w:Volvo D5 engine|Volvo D5 engine]]<br />[[w:Ford Duratorq engine#2005 TDCi (PSA DW Based)|PSA/Ford-based 2.0/2.2 diesel I4]]<br /> | style="text-align:left;"| Sold as part of sale of Volvo Cars to [[w:Geely|Zhejiang Geely Holding Group Co., Ltd.]] in 2010 |- valign="top" | style="text-align:center;"| 1 | style="text-align:left;"| [[w:Torslandaverken|Volvo Torslanda Plant]] | style="text-align:left;"| [[w:Torslanda|Torslanda]] | style="text-align:left;"| [[w:Sweden|Sweden]] | style="text-align:center;"| Sold | style="text-align:left;"| [[w:Volvo S60|Volvo S60]]<br />[[w:Volvo S70|Volvo S70]]<br />[[w:Volvo S80|Volvo S80]]<br />[[w:Volvo V60|Volvo V60]]<br />[[w:Volvo V70|Volvo V70]]<br />[[w:Volvo V70/XC70|Volvo XC70]] <br /> [[w:Volvo XC90|Volvo XC90]] | style="text-align:left;"| Sold as part of sale of Volvo Cars to [[w:Geely|Zhejiang Geely Holding Group Co., Ltd.]] in 2010 |- valign="top" | | style="text-align:left;"| Vulcan Forge | style="text-align:left;"| [[w:Dearborn, Michigan|Dearborn, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Closed (2003) | style="text-align:left;"| Connecting rods and rod cap forgings | |- valign="top" | style="text-align:center;"| H (NA) | style="text-align:left;"| [[w:Ford Walkerville Plant|Walkerville Plant]] | style="text-align:left;"| [[w:Windsor, Ontario|Windsor, Ontario]] (Walkerville was taken over by Windsor in Sept. 1929) | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| Closed (1953) and vacant land next to Detroit River (Fleming Channel). Replaced by Oakville Assembly. | style="text-align:left;"| [[w:Ford Model C|Ford Model C]]<br />[[w:Ford Model N|Ford Model N]]<br />[[w:Ford Model K|Ford Model K]]<br />[[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:Ford Model 48|Ford Model 48]]<br />[[w:1937 Ford|1937 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />1946-1947 Mercury trucks<br />[[w:1949 Ford|1949 Ford]]<br />[[w:1952 Ford|1952 Ford]]<br />[[w:Meteor (automobile)|Meteor]]<br />[[w:Monarch (marque)|Monarch]]<br />[[w:Ford F-Series|Ford F-Series]]<br />[[w:Mercury M-Series|Mercury M-Series]] (1948-1953) | style="text-align:left;"| 1904–1953. First factory to produce Ford cars outside the USA (via [[w:Ford Motor Company of Canada|Ford Motor Company of Canada]], a separate company from Ford at the time). |- valign="top" | | style="text-align:left;"| Walton Hills Stamping | style="text-align:left;"| [[w:Walton Hills, Ohio|Walton Hills, Ohio]] | style="text-align:left;"| U.S. | style="text-align:center;"|Closed Winter 2014 | style="text-align:left;"| Body panels, bumpers | Opened in 1954. Located at 7845 Northfield Rd. Demolished. Site is now the Forward Innovation Center East. |- valign="top" | style="text-align:center;"| WA/W (NA) | style="text-align:left;"| [[w:Wayne Stamping & Assembly|Wayne Stamping & Assembly]] | style="text-align:left;"| [[w:Wayne, Michigan|Wayne, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| 1952-2010 | style="text-align:left;"| [[w:Ford Focus|Ford Focus]] (2000-2011)<br /> [[w:Ford Escort (North America)|Ford Escort]] (1981-1999)<br />[[w:Mercury Tracer|Mercury Tracer]] (1996-1999)<br />[[w:Mercury Lynx|Mercury Lynx]] (1981-1987)<br />[[w:Ford EXP|Ford EXP]] (1984-1988)<br />[[w:Ford Granada (North America)#First generation (1975–1980)|Ford Granada]] (1975-1980)<br />[[w:Mercury Monarch|Mercury Monarch]] (1975-1980)<br />[[w:Lincoln Versailles|Lincoln Versailles]] (1977-1980)<br />[[w:Ford Maverick (1970–1977)|Ford Maverick]] (1974)<br />[[w:Ford Galaxie|Ford Galaxie]] (1960, 1962-1969, 1971-1972)<br />[[w:Ford 300|Ford 300]] (1963)<br />[[w:Ford Custom#Custom and Custom 500 (1964–1981)|Ford Custom/Custom 500]] (1971)<br />[[w:Ford LTD (Americas)|Ford LTD]] (1968, 1970-1972, 1974)<br />[[w:Lincoln Capri|Lincoln Capri]] (1953-1957)<br />[[w:Lincoln Cosmopolitan#Second generation (1952-1954)|Lincoln Cosmopolitan]] (1953-1954)<br />[[w:Lincoln Custom|Lincoln Custom]] (1955 only)<br />[[w:Lincoln Premiere|Lincoln Premiere]] (1956-1957)<br />[[w:Mercury Custom|Mercury Custom]] (1953-)<br />[[w:Mercury Medalist|Mercury Medalist]]<br /> [[w:Mercury Commuter|Mercury Commuter]] (1960, 1965)<br />[[w:Mercury Meteor#Full-size (1961)|Mercury Meteor]] (1961 only)<br />[[w:Mercury Monterey|Mercury Monterey]] (1953-1966)<br />[[w:Mercury Montclair|Mercury Montclair]] (1955-1958, 1964-1967)<br />[[w:Mercury Turnpike Cruiser|Mercury Turnpike Cruiser]] (1957-1958)<br />[[w:Mercury S-55|Mercury S-55]] (1962-1963, 1966)<br />[[w:Mercury Marauder|Mercury Marauder]] (1964-1965)<br />[[w:Mercury Park Lane|Mercury Park Lane]] (1958-1959, 1964-1966)<br />[[w:Edsel Corsair|Edsel Corsair]] (1958)<br />[[w:Edsel Citation|Edsel Citation]] (1958) | style="text-align:left;"| Located at 37500 Van Born Rd. Was main production site for Mercury vehicles when plant opened in 1952 and shipped knock-down kits to dedicated Mercury assembly locations. First vehicle built was a Mercury Montclair on October 1, 1952. Built Lincolns from 1953-1957 after the Lincoln plant in Detroit closed in 1952. Lincoln production moved to a new plant in Wixom for 1958. The larger, Mercury-based Edsel Corsair and Citation were built in Wayne for 1958. The plant shifted to building smaller cars in the mid-1970's. In 1987, a new stamping plant was built on Van Born Rd. and was connected to the assembly plant via overhead tunnels. Production ended in December 2010 and the Wayne Stamping & Assembly Plant was combined with the Michigan Truck Plant, which was then renamed the [[w:Michigan Assembly Plant|Michigan Assembly Plant]]. |- valign="top" | | style="text-align:left;"| [[w:Willowvale Motor Industries|Willowvale Motor Industries]] | style="text-align:left;"| [[w:Willowvale, Harare|Willowvale]], [[w:Harare|Harare]] | style="text-align:left;"| [[w:Zimbabwe|Zimbabwe]] | style="text-align:center;"| Ford production ended. | style="text-align:left;"| [[w:Ford Laser#First generation (KA/KB; 1981)|Ford Laser]]<br />[[w:Mazda 323|Mazda 323]]<br />[[w:Mazda Rustler|Mazda Rustler]]<br />[[w:Mazda B series|Mazda B series]]<br />[[w:Mazda Titan#Second generation (1980–1989)|Mazda T3500]] | style="text-align:left;"| Assembly began in 1961 as Ford of Rhodesia. Became [[w:Willowvale Motor Industries|Willowvale Motor Industries]] after the Ford sale to the state-owned Industrial Development Corporation. Became Willowvale Mazda Motor Industries from 1989 to 2014. Name went back to [[w:Willowvale Motor Industries|Willowvale Motor Industries]] in 2015. |- valign="top" | | style="text-align:left;"| Windsor Aluminum | style="text-align:left;"| [[w:Windsor, Ontario|Windsor, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| Sold | style="text-align:left;"| [[w:Ford Duratec V6 engine|Duratec V6]] engine blocks<br /> [[w:Jaguar AJ-V8 engine#3.9 L|Ford 3.9L V8]] engine blocks<br /> [[w:Ford Modular engine|Ford Modular engine]] blocks | style="text-align:left;"| Opened 1992. Sold to Nemak Aluminum (a 25/75 joint venture between Ford & Nemak, which is 75.24% owned by Alfa Group of Mexico) in 2001. Subsequently produced engine blocks for GM. Production ended in September 2020. |- valign="top" | | style="text-align:left;"| [[w:Windsor Casting|Windsor Casting]] | style="text-align:left;"| [[w:Windsor, Ontario|Windsor, Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="text-align:center;"| Closed (2007) | style="text-align:left;"| Engine parts: Cylinder blocks, crankshafts | Opened 1934. |- valign="top" | style="text-align:center;"| Y (NA) | style="text-align:left;"| [[w:Wixom Assembly Plant|Wixom Assembly Plant]] | style="text-align:left;"| [[w:Wixom, Michigan|Wixom, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Idle (2007); torn down (2013) | style="text-align:left;"| [[w:Lincoln Continental|Lincoln Continental]] (1961-1980, 1982-2002)<br />[[w:Lincoln Continental Mark III|Lincoln Continental Mark III]] (1969-1971)<br />[[w:Lincoln Continental Mark IV|Lincoln Continental Mark IV]] (1972-1976)<br />[[w:Lincoln Continental Mark V|Lincoln Continental Mark V]] (1977-1979)<br />[[w:Lincoln Continental Mark VI|Lincoln Continental Mark VI]] (1980-1983)<br />[[w:Lincoln Continental Mark VII|Lincoln Continental Mark VII]] (1984-1992)<br />[[w:Lincoln Mark VIII|Lincoln Mark VIII]] (1993-1998)<br /> [[w:Lincoln Town Car|Lincoln Town Car]] (1981-2007)<br /> [[w:Lincoln LS|Lincoln LS]] (2000-2006)<br /> [[w:Ford GT#First generation (2005–2006)|Ford GT]] (2005-2006)<br />[[w:Ford Thunderbird (second generation)|Ford Thunderbird]] (1958-1960)<br />[[w:Ford Thunderbird (third generation)|Ford Thunderbird]] (1961-1963)<br />[[w:Ford Thunderbird (fourth generation)|Ford Thunderbird]] (1964-1966)<br />[[w:Ford Thunderbird (fifth generation)|Ford Thunderbird]] (1967-1971)<br />[[w:Ford Thunderbird (sixth generation)|Ford Thunderbird]] (1972-1976)<br />[[w:Ford Thunderbird (eleventh generation)|Ford Thunderbird]] (2002-2005)<br /> [[w:Ford GT40|Ford GT40]] MKIV<br />[[w:Lincoln Capri#Third generation (1958–1959)|Lincoln Capri]] (1958-1959)<br />[[w:Lincoln Capri#1960 Lincoln|1960 Lincoln]] (1960)<br />[[w:Lincoln Premiere#1958–1960|Lincoln Premiere]] (1958–1960)<br />[[w:Lincoln Continental#Third generation (1958–1960)|Lincoln Continental Mark III/IV/V]] (1958-1960) | Demolished in 2012. |- valign="top" | | style="text-align:left;"| Ypsilanti Plant | style="text-align:left;"| [[w:Ypsilanti, Michigan|Ypsilanti, Michigan]] | style="text-align:left;"| U.S. | style="text-align:center;"| Sold | style="text-align:left;"| Starters<br /> Starter Assemblies<br /> Alternators<br /> ignition coils<br /> distributors<br /> horns<br /> struts<br />air conditioner clutches<br /> bumper shock devices | style="text-align:left;"| Located at 128 Spring St. Originally owned by Ford Motor Company, it then became a [[w:Visteon|Visteon]] Plant when [[w:Visteon|Visteon]] was spun off in 2000, and later turned into an [[w:Automotive Components Holdings|Automotive Components Holdings]] Plant in 2005. It is said that [[w:Henry Ford|Henry Ford]] used to walk this factory when he acquired it in 1932. The Ypsilanti Plant was closed in 2009. Demolished in 2010. The UAW Local was Local 849. |} ==Former branch assembly plants== {| class="wikitable sortable" style="font-size:90%" |- ! style="width:120px;"| VIN ! style="width:200px;"| Name ! style="width:100px;"| City/state ! style="width:100px;"| Country ! style="width:120px;" class="unsortable"| Status ! style="width:150px;"| Former Address ! style="width:200px;"| Products ! style="width:300px;" class="unsortable"| Comments |- valign="top" | style="text-align:center;"| A/AA | style="text-align:left;"| [[w:Ford Motor Company Assembly Plant (Atlanta)|Atlanta Assembly Plant (Poncey-Highland)]] | style="text-align:left;"| [[w:Poncey-Highland|Poncey-Highland, Georgia]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated 1915-1942 | style="text-align:left;"| Originally 465 Ponce de Leon Ave. but was renumbered as 699 Ponce de Leon Ave. in 1926. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]] | style="text-align:left;"| Southeast USA headquarters and assembly operations from 1915 to 1942. Assembly ceased in 1932 but resumed in 1937. Sold to US War Dept. in 1942. Replaced by new plant in Atlanta suburb of Hapeville ([[w:Atlanta Assembly|Atlanta Assembly]]), which opened in 1947. Added to the National Register of Historic Places in 1984. Sold in 1979 and redeveloped into mixed retail/residential complex called Ford Factory Square/Ford Factory Lofts. |- valign="top" | style="text-align:center;"| BO/BF/B | style="text-align:left;"| Buffalo Branch Assembly Plant | style="text-align:left;"| [[w:Buffalo, New York|Buffalo, NY]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Original location operated from 1913 - 1915. 2nd location operated from 1915 – 1931. 3rd location operated from 1931 - 1958. | style="text-align:left;"| Originally located at Kensington Ave. and Eire Railroad. Moved to 2495 Main St. at Rodney in December 1915. Moved to 901 Fuhmann Boulevard in 1931. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]],<br> [[w:Ford Model A (1927–1931)|Ford Model A]],<br> [[w:1932 Ford|1932 Ford]],<br> [[w:Ford Model 48|Ford Model 48]],<br> [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]], [[w:1957 Ford|1957 Ford]], [[w:Ford F-Series|Ford F-Series]] (1951-1953, 1955) | style="text-align:left;"| Assembly ceased in January 1933 but resumed in 1934. Operations moved to Lorain, Ohio. 2495 Main St. is now the Tri-Main Center. Previously made diesel engines for the Navy and Bell Aircraft Corporation, was used by Bell Aircraft to design and construct America's first jet engine warplane, and made windshield wipers for Trico Products Co. 901 Fuhmann Boulevard used as a port terminal by Niagara Frontier Transportation Authority after Ford sold the property. |- valign="top" | | style="text-align:left;"| Burnaby Assembly Plant | style="text-align:left;"| [[w:Burnaby|Burnaby, BC]] | style="text-align:left;"| Canada | style="background:LightSalmon; text-align:center;"| Operated from 1938 to 1960 | style="text-align:left;"| Was located at 4600 Kingsway | style="text-align:left;"| [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]], [[w:1957 Ford|1957 Ford]] | style="text-align:left;"| Building demolished in 1988 to build Station Square |- valign="top" | | style="text-align:left;"| [[w:Cambridge Assembly|Cambridge Branch Assembly Plant]] | style="text-align:left;"| [[w:Cambridge, Massachusetts|Cambridge, MA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1926 | style="text-align:left;"| 640 Memorial Dr. and Cottage Farm Bridge | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Had the first vertically integrated assembly line in the world. Replaced by Somerville plant in 1926. Renovated, currently home to Boston Biomedical. |- valign="top" | style="text-align:center;"| CE | style="text-align:left;"| Charlotte Branch Assembly Plant | style="text-align:left;"| [[w:Charlotte, North Carolina|Charlotte, NC]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated 1914-1933 | style="text-align:left;"| 222 North Tryon then moved to 210 E. Sixth St. in 1916 and again to 1920 Statesville Ave in 1924 | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Closed in March 1933, Used by Douglas Aircraft to assemble missiles for the U.S. Army between 1955 and 1964, sold to Atco Properties in 2017<ref>{{cite web|url=https://ui.uncc.edu/gallery/model-ts-missiles-millennials-new-lives-old-factory|title=From Model Ts to missiles to Millennials, new lives for old factory &#124; UNC Charlotte Urban Institute|website=ui.uncc.edu}}</ref> |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Chicago Branch Assembly Plant | style="text-align:left;"| [[w:Chicago|Chicago]], [[w:Illinois|Illinois]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Opened in 1914<br>Moved to current location on 12600 S Torrence Ave. in 1924 | style="text-align:left;"| 3915 Wabash Avenue | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Replaced by current [[w:Chicago Assembly|Chicago Assembly Plant]] on Torrence Ave. in 1924. |- valign="top" | style="text-align:center;"| CI | style="text-align:left;"| [[w:Ford Motor Company Cincinnati Plant|Cincinnati Branch Assembly Plant]] | style="text-align:left;"| [[w:Cincinnati|Cincinnati, OH]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated 1915-1938 | style="text-align:left;"| 660 Lincoln Ave | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]] | style="text-align:left;"| Added to the National Register of Historic Places in 1989, renovated 2002, currently owned by Cincinnati Children's Hospital. |- valign="top" | style="text-align:center;"| CL/CLE/CLEV | style="text-align:left;"| Cleveland Branch Assembly Plant<ref>{{cite web |url=https://loc.gov/pictures/item/oh0114|title=Ford Motor Company, Cleveland Branch Assembly Plant, Euclid Avenue & East 116th Street, Cleveland, Cuyahoga County, OH|website=Library of Congress}}</ref> | style="text-align:left;"| [[w:Cleveland|Cleveland, OH]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated 1915-1932 | style="text-align:left;"| 11610 Euclid Ave. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Added to the National Register of Historic Places in 1976, renovated, currently home to Cleveland Institute of Art. |- valign="top" | style="text-align:center;"| G | style="text-align:left;"| [[w:Ford Motor Company - Columbus Assembly Plant|Columbus Branch Assembly Plant]]<ref>[http://digital-collections.columbuslibrary.org/cdm/compoundobject/collection/ohio/id/12969/rec/1 "Ford Motor Company – Columbus Plant (Photo and History)"], Columbus Metropolitan Library Digital Collections</ref> | style="text-align:left;"| [[w:Columbus, Ohio|Columbus, OH]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 – 1932 | style="text-align:left;"| 427 Cleveland Avenue | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Assembly ended March 1932. Factory closed 1939. Was the Kroger Co. Columbus Bakery until February 2019. |- valign="top" | style="text-align:center;"| JE (JK) | style="text-align:left;"| [[w:Commodore Point|Commodore Point Assembly Plant]] | style="text-align:left;"| [[w:Jacksonville, Florida|Jacksonville, Florida]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Produced from 1924 to 1932. Closed (1968) | style="text-align:left;"| 1900 Wambolt Street. At the Foot of Wambolt St. on the St. John's River next to the Mathews Bridge. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]] cars and trucks, [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| 1924–1932, production years. Parts warehouse until 1968. Planned to be demolished in 2023. |- valign="top" | style="text-align:center;"| DS/DL | style="text-align:left;"| Dallas Branch Assembly Plant | style="text-align:left;"| [[w:Dallas|Dallas, TX]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1925 | style="text-align:left;"| 2700 Canton St then moved in 1925 to 5200 E. Grand Ave. near Fair Park | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Replaced by plant on 5200 E. Grand Ave. in 1925. Ford continued to use 2700 Canton St. for display and storage until 1939. In 1942, sold to Peaslee-Gaulbert Corporation, which had already been using the building since 1939. Sold to Adam Hats in 1959. Redeveloped in 1997 into Adam Hats Lofts, a loft-style apartment complex. |- valign="top" | style="text-align:center;"| T | style="text-align:left;"| Danforth Avenue Assembly | style="text-align:left;"| [[w:Toronto|Toronto]], [[w:Ontario|Ontario]] | style="text-align:left;"| [[w:Canada|Canada]] | style="background:Khaki; text-align:center;"| Sold (1946) | style="text-align:left;"| 2951-2991 Danforth Ave. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]]<br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br /> and other cars | style="text-align:left;"| Replaced by [[w:Oakville Assembly|Oakville Assembly]]. Sold to [[w:Nash Motors|Nash Motors]] in 1946 which then merged with [[w:Hudson Motor Car Company|Hudson Motor Car Company]] to form [[w:American Motors Corporation|American Motors Corporation]], which then used the plant until it was closed in 1957. Converted to a mall in 1962, Shoppers World Danforth. The main building of the mall (now a Lowe's) is still the original structure of the factory. |- valign="top" | style="text-align:center;"| DR | style="text-align:left;"| Denver Branch Assembly Plant | style="text-align:left;"| [[w:Denver|Denver, CO]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1933 | style="text-align:left;"| 900 South Broadway | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model TT|Ford Model TT]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Sold to Gates Rubber Co. in 1945. Gates sold the building in 1995. Now used as office space. Partly used as a data center by Hosting.com, now known as Ntirety, from 2009. |- valign="top" | style="text-align:center;"| DM | style="text-align:left;"| Des Moines Assembly Plant | style="text-align:left;"| [[w:Des Moines, IA|Des Moines, IA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from April 1920–December 1932 | style="text-align:left;"| 1800 Grand Avenue | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Sold in 1943. Renovated in the 1980s into Des Moines School District's technical high school and central campus. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Dothan Branch Assembly Plant | style="text-align:left;"| [[w:Dothan, AL|Dothan, AL]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| 1923–1927? | style="text-align:left;"| 193 South Saint Andrews Street and corner of E. Crawford Street | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Later became an auto dealership called Malone Motor Company and was St. Andrews Market, an indoor market and event space, from 2013-2015 until a partial roof collapse during a severe storm. Since 2020, being redeveloped into an apartment complex. The curved assembly line anchored into the ceiling is still intact and is being left there. Sometimes called the Ford Malone Building. |- valign="top" | | style="text-align:left;"| Dupont St Branch Assembly Plant | style="text-align:left;"| [[w:Toronto|Toronto, ON]] | style="text-align:left;"| Canada | style="background:LightSalmon; text-align:center;"| Operated from 1915 to 1925 | style="text-align:left;"| 672 Dupont St | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Production moved to Danforth Assembly Plant. Building roof was used as a test track for the Model T. Used by several food processing companies. Became Planters Peanuts Canada from 1948 till 1987. The building currently is used for commercial and retail space. Included on the Inventory of Heritage Properties. |- valign="top" | style="text-align:center;"| E/EG/E | style="text-align:left;"| [[w:Edgewater Assembly|Edgewater Assembly]] | style="text-align:left;"| [[w:Edgewater, New Jersey|Edgewater, New Jersey]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1930 to 1955 | style="text-align:left;"| 309 River Road | style="text-align:left;"| [[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:Ford Model 48|Ford Model 48]]<br />[[w:1937 Ford|1937 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />[[w:Ford GPW|Ford GPW]] (Jan.-Apr. 1943 only: 1,333 units)<br />[[w:1949 Ford|1949 Ford]]<br />[[w:1952 Ford|1952 Ford]]<br />[[w:1955 Ford|1955 Ford]]<br />[[w:Ford F-Series|Ford F-Series]] (1951-1954) | style="text-align:left;"| Replaced with the Mahwah Assembly Plant. Added to the National Register of Historic Places on September 15, 1983. The building was torn down in 2006 and replaced with a residential development called Independence Harbor. |- valign="top" | | style="text-align:left;"| Fargo Branch Assembly Plant | style="text-align:left;"| [[w:Fargo, North Dakota|Fargo, ND]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1915 to 1917 | style="text-align:left;"| 505 N. Broadway | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| After assembly ended, Ford used it as a sales office, sales and service branch, and a parts depot. Ford sold the building in 1956. Now called the Ford Building, a mixed commercial/residential property. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Fort Worth Assembly Plant | style="text-align:left;"| [[w:Fort Worth, TX|Fort Worth, TX]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated for about 6 months around 1916 | style="text-align:left;"| | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Briefly supplemented Dallas plant but production was then reconsolidated into the Dallas plant and Fort Worth plant was closed. |- valign="top" | style="text-align:center;"| H | style="text-align:left;"| Houston Branch Assembly Plant | style="text-align:left;"| [[w:Houston|Houston, TX]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1932 | style="text-align:left;"| 3906 Harrisburg Boulevard | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], aircraft parts during WWII | style="text-align:left;"| Divested during World War II; later acquired by General Foods in 1946 (later the Houston facility for [[w:Maxwell House|Maxwell House]]) until 2006 when the plant was sold to Maximus and rebranded as the Atlantic Coffee Solutions facility. Atlantic Coffee Solutions shut down the plant in 2018 when they went out of business. Leased by Elemental Processing in 2019 for hemp processing with plans to begin operations in 2020. |- valign="top" | style="text-align:center;"| I | style="text-align:left;"| Indianapolis Branch Assembly Plant | style="text-align:left;"| [[w:Indianapolis|Indianapolis, IN]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"|1914–1932 | style="text-align:left;"| 1315 East Washington Street | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Vehicle production ended in December 1932. Used as a Ford parts service and automotive sales branch and for administrative purposes until 1942. Sold in 1942. |- valign="top" | style="text-align:center;"| KC/K | style="text-align:left;"| Kansas City Branch Assembly | style="text-align:left;"| [[w:Kansas City, Missouri|Kansas City, Missouri]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| 1912–1956 | style="text-align:left;"| Original location from 1912 to 1956 at 1025 Winchester Avenue & corner of E. 12th Street | style="text-align:left;"| [[w:Ford Model T|Ford Model T]],<br> [[w:Ford Model A (1927–1931)|Ford Model A]],<br> [[w:1932 Ford|1932 Ford]], <br>[[w:Ford Model 48|Ford Model 48]],<br> [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]], [[w:1957 Ford|1957 Ford]], [[w:Ford F-Series|Ford F-Series]] (1951-1956), [[w:Ford F-Series (medium-duty truck)#Second generation (1953–1956)|Ford F-Series (medium-duty truck)]] (1956) | style="text-align:left;"| First Ford factory in the USA built outside the Detroit area. Location of first UAW strike against Ford and where the 20 millionth Ford vehicle was assembled. Last vehicle produced was a 1957 Ford Fairlane Custom 300 on December 28, 1956. 2,337,863 vehicles were produced at the Winchester Ave. plant. Replaced by [[w:Ford Kansas City Assembly Plant|Claycomo]] plant in 1957. |- valign="top" | style="text-align:center;"| KY | style="text-align:left;"| Kearny Assembly | style="text-align:left;"| [[w:Kearny, New Jersey|Kearny, New Jersey]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1918 to 1930 | style="text-align:left;"| 135 Central Ave., corner of Ford Lane | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]] | style="text-align:left;"| Replaced by the Edgewater Assembly Plant. |- valign="top" | | style="text-align:left;"| Long Island City Branch Assembly Plant | style="text-align:left;"| [[w:Long Island City|Long Island City]], [[w:Queens|Queens, NY]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1912 to 1917 | style="text-align:left;"| 564 Jackson Ave. (now known as <br> 33-00 Northern Boulevard) and corner of Honeywell St. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| Opened as Ford Assembly and Service Center of Long Island City. Building was later significantly expanded around 1914. The original part of the building is along Honeywell St. and around onto Northern Blvd. for the first 3 banks of windows. Replaced by the Kearny Assembly Plant in NJ. Plant taken over by U.S. Government. Later occupied by Goodyear Tire (which bought the plant in 1920), Durant Motors (which bought the plant in 1921 and produced Durant-, Star-, and Flint-brand cars there), Roto-Broil, and E.R. Squibb & Son. Now called The Center Building and used as office space. |- valign="top" | style="text-align:center;"|LA | style="text-align:left;"| Los Angeles Branch Assembly Plant | style="text-align:left;"| [[w:Los Angeles|Los Angeles, CA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1930 | style="text-align:left;"| 12th and Olive Streets, then E. 7th St. and Santa Fe Ave. (2060 East 7th St. or 777 S. Santa Fe Avenue). | style="text-align:left;"| Original Los Angeles plant: [[w:Ford Model T|Ford Model T]]. <br /> Second Los Angeles plant (1914-1930): [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]]. | style="text-align:left;"| Location on 7th & Santa Fe is now the headquarters of Warner Music Group. |- valign="top" | style="text-align:center;"| LE/LU/U | style="text-align:left;"| [[w:Louisville Assembly Plant|Louisville Branch Assembly Plant]] | style="text-align:left;"| [[w:Louisville, Kentucky|Louisville, Kentucky]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| 1913–1916, 1916–1925, 1925–1955, 1955–present | style="text-align:left;"| 931 South Third Street then <br /> 2400 South Third Street then <br /> 1400 Southwestern Parkway then <br /> 2000 Fern Valley Rd. | style="text-align:left;"| |align="left"| Original location opened in 1913. Ford then moved in 1916 and again in 1925. First 2 plants made the [[w:Ford Model T|Ford Model T]]. The third plant made the [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:Ford F-Series|Ford F-Series]] (1951-1954) as well as Jeeps ([[w:Ford GPW|Ford GPW]] - 93,364 units), military trucks, and V8 engines during World War II. Current location at 2000 Fern Valley Rd. first opened in 1955.<br /> The 2400 South Third Street location (at the corner of Eastern Parkway) was sold to Reynolds Metals Company and has since been converted into residential space called Reynolds Lofts under lease from current owner, University of Louisville. |- valign="top" | style="text-align:center;"| MEM/MP/M | style="text-align:left;"| Memphis Branch Assembly Plant | style="text-align:left;"| [[w:Memphis, Tennessee|Memphis, TN]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1913-June 1958 | style="text-align:left;"| 495 Union Ave. (1913–1924) then 1429 Riverside Blvd. and South Parkway West (1924–1933, 1935–1958) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]], [[w:1957 Ford|1957 Ford]], [[w:Ford F-Series|Ford F-Series]] (1951-1952, 1954-1956) | style="text-align:left;"| Both plants have been demolished. |- valign="top" | style="text-align:center;"| | style="text-align:left;"| Milwaukee Branch Assembly Plant | style="text-align:left;"| [[w:Milwaukee|Milwaukee, WI]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1916 to 1932 | style="text-align:left;"| 2185 N. Prospect Ave. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Building is still standing as a mixed use development. |- valign="top" | style="text-align:center;"| TC/SP | style="text-align:left;"| Minneapolis Branch Assembly Plant | style="text-align:left;"| [[w:Minneapolis|Minneapolis, MN]] and [[w:Saint Paul, Minnesota|St. Paul]], MN | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1912 to 2011 | style="text-align:left;"| 616 S. Third St in Minneapolis (1912-1914) then 420 N. Fifth St. in Minneapolis (1914-1925) and 117 University Ave. West in St. Paul (1914-1920) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] | style="text-align:left;"| 420 N. Fifth St. is now called Ford Center, an office building. Was the tallest automotive assembly plant at 10 stories.<br /> University Ave. plant in St. Paul is now called the Ford Building. After production ended, was used as a Ford sales and service center, an auto mechanics school, a warehouse, and Federal government offices. Bought by the State of Minnesota in 1952 and used by the state government until 2004. |- valign="top" | style="text-align:center;"| M | style="text-align:left;"| Montreal Assembly Plant | style="text-align:left;"| [[w:Montreal|Montreal, QC]] | style="text-align:left;"| Canada | style="background:LightSalmon; text-align:center;"| | style="text-align:left;"| 119-139 Laurier Avenue East | style="text-align:left;"| | style="text-align:left;"| |- valign="top" | style="text-align:center;"| NO | style="text-align:left;"| New Orleans | style="text-align:left;"| [[w:Arabi, Louisiana|Arabi, Louisiana]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1923–December 1932 | style="text-align:left;"| 7200 North Peters Street, Arabi, St. Bernard Parish, Louisiana | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model TT|Ford Model TT]], [[w:Ford Model A (1927–1931)|Ford Model A]] | style="text-align:left;"| Later used by Ford as a parts and vehicle dist. center. Used by the US Army as a warehouse during WWII. After the war, was used as a parts and vehicle dist. center by a Ford dealer, Capital City Ford of Baton Rouge. Used by Southern Service Co. to prepare Toyotas and Mazdas prior to their delivery into Midwestern markets from 1971 to 1977. Became a freight storage facility for items like coffee, twine, rubber, hardwood, burlap and cotton from 1977 to 2005. Flooded during Hurricane Katrina. Listed on the National Register of Historic Places in 2018. |- valign="top" | style="text-align:center;"| OC | style="text-align:left;"| [[w:Oklahoma City Ford Motor Company Assembly Plant|Oklahoma City Branch Assembly Plant]] | style="text-align:left;"| [[w:Oklahoma City|Oklahoma City, OK]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1916 to 1932 | style="text-align:left;"| 900 West Main St. | style="text-align:left;"|[[w:Ford Model T|Ford Model T]]<br /> [[w:Ford Model A (1927–1931)|Ford Model A]]<br /> [[w:1932 Ford|1932 Ford]] |Had extensive access to rail via the Rock Island railroad. Production ended with the 1932 models. The plant was converted to a Ford Regional Parts Depot (1 of 3 designated “slow-moving parts branches") and remained so until 1967, when the plant closed, and was then sold in 1968 to The Fred Jones Companies, an authorized re-manufacturer of Ford and later on, also GM Parts. It remained the headquarters for operations of Fred Jones Enterprises (a subsidiary of The Fred Jones Companies) until Hall Capital, the parent of The Fred Jones Companies, entered into a partnership with 21c Hotels to open a location in the building. The 21c Museum Hotel officially opened its hotel, restaurant and art museum in June, 2016 following an extensive remodel of the property. Listed on the National Register of Historic Places in 2014. |- valign="top" | | style="text-align:left;"| [[w:Omaha Ford Motor Company Assembly Plant|Omaha Ford Motor Company Assembly Plant]] | style="text-align:left;"| [[w:Omaha, Nebraska|Omaha, NE]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1916 to 1932 | style="text-align:left;"| 1502-24 Cuming St. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Used as a warehouse by Western Electric Company from 1956 to 1959. It was then vacant until 1963, when it was used for manufacturing hair accessories and other plastic goods by Tip Top Plastic Products from 1963 to 1986. After being vacant again for several years, it was then used by Good and More Enterprises, a tire warehouse and retail outlet. After another period of vacancy, it was redeveloped into Tip Top Apartments, a mixed-use building with office space on the first floor and loft-style apartments on the upper levels which opened in 2005. Listed on the National Register of Historic Places in 2004. |- valign="top" | style="text-align:center;"|CR/CS/C | style="text-align:left;"| Philadelphia Branch Assembly Plant ([[w:Chester Assembly|Chester Assembly]]) | style="text-align:left;"| [[w:Philadelphia|Philadelphia, PA]]<br>[[w:Chester, Pennsylvania|Chester, Pennsylvania]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1961 | style="text-align:left;"| Philadelphia: 2700 N. Broad St., corner of W. Lehigh Ave. (November 1914-June 1927) then in Chester: Front Street from Fulton to Pennell streets along the Delaware River (800 W. Front St.) (March 1928-February 1961) | style="text-align:left;"| [[w:Ford Model A (1927–1931)|Ford Model A]],<br> [[w:1932 Ford|1932 Ford]],<br> [[w:Ford Model 48|Ford Model 48]],<br> [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:Ford GPW|Ford GPW]] (18,533 units), [[w:1949 Ford|1949 Ford]],<br> [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]], [[w:1957 Ford|1957 Ford]], [[w:Ford Galaxie|Ford Galaxie]] (1959-1961), [[w:Ford F-Series (first generation)|Ford F-Series (first generation)]] (1951-1952),<br> [[w:Ford F-Series (second generation)|Ford F-Series (second generation)]] (1953-1955),<br> [[w:Ford F-Series (third generation)|Ford F-Series (third generation)]] | style="text-align:left;"| November 1914-June 1927 in Philadelphia then March 1928-February 1961 in Chester. Broad St. plant made equipment for US Army in WWI including helmets and machine gun trucks. Sold in 1927. Later used as a [[w:Sears|Sears]] warehouse and then to manufacture men's clothing by Joseph H. Cohen & Sons, which later took over [[w:Botany 500|Botany 500]], whose suits were then also made at Broad St., giving rise to the nickname, Botany 500 Building. Cohen & Sons sold the building in 1989 which seems to be empty now. Chester plant also handled exporting to overseas plants. |- valign="top" | style="text-align:center;"| P | style="text-align:left;"| [[w:Ford Motor Company Assembly Plant (Pittsburgh, Pennsylvania)|Pittsburgh Branch Assembly Plant]] | style="text-align:left;"| [[w:Pittsburgh|Pittsburgh, PA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1915 to 1932 | style="text-align:left;"| 5000 Baum Blvd and Morewood Ave. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Became a Ford sales, parts, and service branch until Ford sold the building in 1953. The building then went through a variety of light industrial uses before being purchased by the University of Pittsburgh Medical Center (UPMC) in 2006. It was subsequently purchased by the University of Pittsburgh in 2018 to house the UPMC Immune Transplant and Therapy Center, a collaboration between the university and UPMC. Listed on the National Register of Historic Places in 2018. |- valign="top" | style="text-align:center;"| PO | style="text-align:left;"| Portland Branch Assembly Plant | style="text-align:left;"| [[w:Portland, Oregon|Portland, OR]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated 1914–1917, 1923–1932 | style="text-align:left;"| 2505 SE 11th Avenue | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Called the Ford Building and is occupied by various businesses. . |- valign="top" | style="text-align:center;"| RH/R (Richmond) | style="text-align:left;"| [[w:Ford Richmond Plant|Richmond Plant]] | style="text-align:left;"| [[w:Richmond, California|Richmond, California]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| 1931-1955 | style="text-align:left;"| 1414 Harbour Way S | style="text-align:left;"| [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], [[w:Ford GPW|Ford GPW]] (49,359 units), [[w:Ford F-Series|Ford F-Series]] (1951-1954), [[w:1949 Ford|1949 Ford]], [[w:1952 Ford|1952 Ford]], [[w:1955 Ford|1955 Ford]]. | style="text-align:left;"| Richmond was one of the first 2 Ford plants to build the F-Series, beginning November 27, 1947 (other was Highland Park, Michigan). Richmond location is now part of Rosie the Riveter National Historical Park. Replaced by San Jose Assembly Plant in Milpitas. |- valign="top" | style="text-align:center;"|SFA/SFAA (San Francisco) | style="text-align:left;"| San Francisco Branch Assembly Plant | style="text-align:left;"| [[w:San Francisco|San Francisco, CA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| 1914-1931 | style="text-align:left;"| 2905 21st Street and Harrison St. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]] | style="text-align:left;"| Replaced by the Richmond Assembly Plant. San Francisco Plant was demolished after the 1989 earthquake. |- valign="top" | style="text-align:center;"| SR/S | style="text-align:left;"| [[w:Somerville Assembly|Somerville Assembly]] | style="text-align:left;"| [[w:Somerville, Massachusetts|Somerville, Massachusetts]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1926 to 1958 | style="text-align:left;"| 183 Middlesex Ave. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]] <br />[[w:Ford Model A (1927–1931)|Ford Model A]]<br />[[w:1932 Ford|1932 Ford]]<br />[[w:1941 Ford|1941 Ford]]<br />[[w:1949 Ford|1949 Ford]]<br />[[w:1952 Ford|1952 Ford]]<br />[[w:1955 Ford|1955 Ford]]<br />[[w:1957 Ford|1957 Ford]]<br />[[w:Ford F-Series|Ford F-Series]] (1951-1953)<br />Built [[w:Edsel Corsair|Edsel Corsair]] (1958) & [[w:Edsel Citation|Edsel Citation]] (1958) July-October 1957, Built [[w:1957 Ford|1958 Fords]] November 1957 - March 1958. | style="text-align:left;"| The only [[w:Edsel|Edsel]]-only assembly line. Operations moved to Lorain, OH. Converted to [[w:Assembly Square Mall|Assembly Square Mall]] in 1980 |- valign="top" | style="text-align:center;"| AS | style="text-align:left;"| [http://pcad.lib.washington.edu/building/4902/ Seattle Branch Assembly Plant #1] | style="text-align:left;"| [[w:South Lake Union, Seattle|South Lake Union, Seattle, WA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from 1914 to 1932 | style="text-align:left;"| 1155 Valley Street & corner of 700 Fairview Ave. N. | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Now a Public Storage site. |- valign="top" | style="text-align:center;"| AS | style="text-align:left;"| [[w:Ford Motor Company Assembly Plant (Seattle)|Seattle Branch Assembly Plant #2]] | style="text-align:left;"| [[w:Georgetown, Seattle|Georgetown, Seattle, WA]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| Operated from May 1932–December 1932 | style="text-align:left;"| 4730 East Marginal Way | style="text-align:left;"| [[w:1932 Ford|1932 Ford]] | style="text-align:left;"| Still a Ford sales and service site through 1941. As early as 1940, the U.S. Army occupied a portion of the facility which had become known as the "Seattle General Depot". Sold to US Government in 1942 for WWII-related use. Used as a staging site for supplies headed for the Pacific Front. The U.S. Army continued to occupy the facility until 1956. In 1956, the U.S. Air Force acquired control of the property and leased the facility to the Boeing Company. A year later, in 1957, the Boeing Company purchased the property. Known as the Boeing Airplane Company Missile Production Center, the facility provided support functions for several aerospace and defense related development programs, including the organizational and management facilities for the Minuteman-1 missile program, deployed in 1960, and the Minuteman-II missile program, deployed in 1969. These nuclear missile systems, featuring solid rocket boosters (providing faster lift-offs) and the first digital flight computer, were developed in response to the Cold War between the U.S. and the Soviet Union in the 1960s and 1970s. The Boeing Aerospace Group also used the former Ford plant for several other development and manufacturing uses, such as developing aspects of the Lunar Orbiter Program, producing unstaffed spacecraft to photograph the moon in 1966–1967, the BOMARC defensive missile system, and hydrofoil boats. After 1970, Boeing phased out its operations at the former Ford plant, moving them to the Boeing Space Center in the city of Kent and the company's other Seattle plant complex. Owned by the General Services Administration since 1973, it's known as the "Federal Center South Complex", housing various government offices. Listed on the National Register of Historic Places in 2013. |- valign="top" | style="text-align:center;"|STL/SL | style="text-align:left;"| St. Louis Branch Assembly Plant | style="text-align:left;"| [[w:St. Louis|St. Louis, MO]] | style="text-align:left;"| U.S. | style="background:LightSalmon; text-align:center;"| 1914-1942 | style="text-align:left;"| 4100 Forest Park Ave. | style="text-align:left;"| | style="text-align:left;"| |- valign="top" | style="text-align:center;"| V | style="text-align:left;"| Vancouver Assembly Plant | style="text-align:left;"| [[w:Vancouver|Vancouver, BC]] | style="text-align:left;"| Canada | style="background:LightSalmon; text-align:center;"| Operated from 1920 to 1938 | style="text-align:left;"| 1188 Hamilton St | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]] | style="text-align:left;"| Production moved to Burnaby plant in 1938. Still standing; used as commercial space. |- valign="top" | style="text-align:center;"| W | style="text-align:left;"| Winnipeg Assembly Plant | style="text-align:left;"| [[w:Winnipeg|Winnipeg, MB]] | style="text-align:left;"| Canada | style="background:LightSalmon; text-align:center;"| Operated from 1915 to 1941 | style="text-align:left;"| 1181 Portage Avenue (corner of Wall St.) | style="text-align:left;"| [[w:Ford Model T|Ford Model T]], [[w:Ford Model A (1927–1931)|Ford Model A]], [[w:1932 Ford|1932 Ford]], [[w:Ford Model 48|Ford Model 48]], [[w:1937 Ford|1937 Ford]], [[w:1941 Ford|1941 Ford]], military trucks | style="text-align:left;"| Bought by Manitoba provincial government in 1942. Became Manitoba Technical Institute. Now known as the Robert Fletcher Building |- valign="top" |} 8d60fmlii08v6p4522vweupyz1j0rrd User:Dom walden/Multivariate Analytic Combinatorics/Homology of Critical Points 2 480750 4656621 4642153 2026-08-07T14:55:17Z Dom walden 3209423 /* Introduction */ 4656621 wikitext text/x-wiki == Introduction == Morse theory tells us that the topology of M only changes at its critical points. The "Morse data" tells us the topology at each critical point. Attaching this Morse data together gives us a space which is homopotically eqivalent to M. This space is a "cell complex", which has an easy to calculate homology. Theorem: Our domain of convergence is homotopic to a cell complex of dimension at most <math display="inline">2n - d - 1</math>.<ref>This is theorem D.23 in Pemantle, Wilson and Melczer 2024, pp. 546. Also theorem in section 1.2*/5.2* in SMT pp. 200.</ref> Proof: # <math display="inline">X</math> is our entire domain, <math display="inline">\mathcal{V}</math> our variety # Project our entire domain to complex projective space <math display="inline">Z = \phi(X) \subset \C\mathbb{P}^n - H</math> [define H] # Define a linear subspace <math display="inline">G \subset \C\mathbb{P}^n</math> of dimension <math display="inline">d - 1</math> # Define a Morse function on <math display="inline">f: \C\mathbb{P}^n \to \R</math> which approximates the distance from <math display="inline">G</math> and such that <math display="inline">f^{-1}(0) = G</math> and <math display="inline">f^{-1}(1) = H</math> # We "build" <math display="inline">X - \mathcal{V}</math> from <math display="inline">\pi^{-1}(G \cap Z) \cap (X - \mathcal{V})</math> by attaching CW complexes at critical points which are of at most dimension <math display="inline">2n - d - 1</math> == Morse theory == Steps(?) * Explain topology * Every point of a stratum is locally like a product structure (proved by Thom's Isotopy Lemma) [GM pp. 41-42] ** Including those around critical points, which are the product of normal and tangential Morse data (these are our quasi-local cycles?) * Thom's Isotopy Lemma proves a strong deformation retraction (which only stops at critical points) [PWM pp. 541-542] === Homotopy === We want to replace our domain of convergence <math display="inline">M</math>, which is the complement of our singular variety <math display="inline">\mathcal{V}</math>, with an "equivalent" space <math display="inline">M'</math> which has better understood properties. We say "equivalent" because there are several different things we could mean by "equivalent" in this context. The equivalence we are referring to in this section is called '''homotopy'''. Imagine two subspaces <math display="inline">\gamma_0</math> and <math display="inline">\gamma_1</math> of a space <math display="inline">Y</math> which are defined respectively by smooth functions <math display="inline">f, g: X \to Y</math>. If there exists a smooth function <math display="inline">h_s: X \times [0, 1] \to Y</math>, called a homotopy, such that <math display="inline">h_0 = f</math>, <math display="inline">h_1 = g</math> and for any <math display="inline">\epsilon > 0</math> there exists a <math display="inline">\delta_a</math> and <math display="inline">\delta_b</math> such that when <math display="inline">|s - s_0| < \delta_a</math> and <math display="inline">|x - x_0| < \delta_b</math> we have <math display="inline">|h_s(x) - h_{s_0}(x_0)| < \epsilon</math>, then we say <math display="inline">\gamma_0</math> and <math display="inline">\gamma_1</math> are '''homotopic'''.<ref>Henle 1979, pp. 251-252.</ref> Below is an example where <math display="inline">\gamma_0</math> and <math display="inline">\gamma_1</math> are one-dimensional curves and <math display="inline">H(t, s) = h_s(t)</math>. [[File:Homotopy_curves.png|300px]] In [[#Homotopy_equivalence|Appendix A]], we formally prove that we can construct an equivalent space <math display="inline">M'</math>. We provide only an example to give some intuition before describing how to construct the space <math display="inline">M'</math> in terms of local cycles around critical points. === Motivating example === Imagine a torus and a height function which is just the z value of the point. [[File:3D-Leveltorus.png|200px]] It has four critical points: two at the top and bottom of the outer circle (<math display="inline">p_1, p_4</math>) and two at the top and bottom of the inner circle (<math display="inline">p_2, p_3</math>). [picture] When the height is between the <math display="inline">p_1</math> and <math display="inline">p_2</math>, the space is a two-cell, which can be retracted to a point. [picture] When the height is between <math display="inline">p_2</math> and <math display="inline">p_3</math>, the space is a cylinder, which can be retracted to a two-cell with a one-cell attached. [[File:3D-Cylinder_and_disk_with_handle.png|200px]] When the height is between <math display="inline">p_3</math> and <math display="inline">p_4</math>, the space is a torus with a disc removed, which can be retracted to a cylinder with a one-cell attached. [[File:3D-Cylinder_with_handle_and_torus_with_hole.png|200px]] When the height is greater than <math display="inline">p_4</math>, then the full torus is constructed by attaching a two-cell. [Explain in terms of Morse data and Morse index?] === Morse data and quasi-local cycles === As in the above example, we start at the "bottom" of <math display="inline">M</math> and build upwards until just before we reach our first critical point <math display="inline">p</math>. ;Smooth points :This is a tube around a <math display="inline">(d-1)</math>-chain <math display="inline">\gamma</math> where the height function <math display="inline">h</math> is maximised at <math display="inline">p</math>.<ref>Pemantle, Wilson and Melczer 2024, pp. 223.</ref> :For example, if <math display="inline">F(x, y) = \frac{1}{1 - x - y}</math> then <math display="inline">\lambda = 1</math> and <math display="inline">B^\lambda</math> is an arc reaching its highest point at <math display="inline">p</math>. :The normal plane <math display="inline">N</math> at <math display="inline">p</math> is a plane orthogonal to <math display="inline">B^1</math>(?). :Its normal link <math display="inline">L(S)</math> is a circle with two points missing where it intersects <math display="inline">\mathcal{V}</math>. :We make our quasi-local cycle out of the product of the arc and circle joined to <math display="inline">M_-</math> at points below <math display="inline">M_-</math>. :With the exception of degenerate points, such as monkey saddles...<ref>e.g. Pemantle, Wilson and Melczer 2024, pp. 211.</ref> ;Transverse multiple points :This is the product of a <math display="inline">k</math>-torus and a <math display="inline">(d-k)</math>-chain <math display="inline">\gamma</math>. The torus is the product of circles about <math display="inline">p</math> in the complex normal space to each strata which intersects <math display="inline">p</math>. The chain <math display="inline">\gamma</math> is supported in the stratum which is the common intersection of the varieties defined by the factors vanishing at <math display="inline">p</math>, and achieves its maximum height at <math display="inline">p</math>.<ref>Pemantle, Wilson and Melczer 2024, pp. 223-224.</ref> ;Arrangement multiple point :This is the product of a <math display="inline">(d-k)</math>-chain <math display="inline">\gamma</math> and several <math display="inline">k</math>-tori, one for each pair of sheets which intersect transversely, where the torus is the product of circles about <math display="inline">p</math> in each sheet.<ref>Pemantle, Wilson and Melczer 2024, pp. 226.</ref> ;Cone point :A cone point is zero-dimensional so there is no <math display="inline">\gamma</math>, just a <math display="inline">d</math>-torus about <math display="inline">p</math>.<ref>Pemantle, Wilson and Melczer 2024, pp. 227.</ref> == Homology of cell complexes == We have constructed a new space <math display="inline">M'</math> which is homotopic to <math display="inline">M</math>. Our space <math display="inline">M'</math> is a '''cell complex''' or '''CW complex''' with a cell, which we call a '''quasi-local cycle''', around each critical point. We show in [[#Cellular_homology|Appendix B]] that a cell complex which has <math display="inline">k</math> <math display="inline">n</math>-cells has an homology that can be generated by at most <math display="inline">k</math> elements. Therefore, any chain in <math display="inline">M'</math> is homologous to a chain which is the linear combination of at most <math display="inline">k</math> elements. This includes our torus of integration <math display="inline">T</math>, which is homologous to <math display="inline">\sum_i n_i \sigma_i</math>. Two chains which are homologous have the same integral, therefore <math display="block">\frac{1}{(2\pi i)^n} \int_T \frac{f(\zeta) d\zeta}{(\zeta - z)} = \sum_i \frac{n_i}{(2\pi i)^n} \int_{\sigma_i} \frac{f(\zeta) d\zeta}{(\zeta - z)}.</math> In the remaining three chapters we show how, for each <math display="inline">i</math>, we calculate <math display="inline">n_i</math> and asymptotically estimate the integrand around the chain <math display="inline">\sigma_i</math>. == Appendix == === Homotopy equivalence === [Assuming no CVAI...] Theorem: # Homotopy equivalence between M_{\leq a} and M_{\leq b}... # If in a range <math display="inline">[a, b]</math> there are no CVAI and only one critical value <math display="inline">c</math>, not equal to either <math display="inline">a</math> or <math display="inline">b</math>, with one or more critical points <math display="inline">z_1, \cdots, z_m</math> then there is a stratified flow deforming any chain in <math display="inline">M</math> to a (homotopic?) chain in the union of <math display="inline">M_{<c}</math> with sufficiently small balls around each critical point. This induces a homotopy between <math display="inline">(M_{c+\epsilon}, M_{c-\epsilon})</math> and the direct sum of <math display="inline">(M_{c-\epsilon} \cup B_{2\epsilon}(z_i), M_{c-\epsilon})</math> for each critical point <math display="inline">z_i</math>.<ref>Pemantle, Wilson and Melczer 2024, pp. 231.</ref> The core of this is the concept of a '''vector field'''. A vector field is a function which assigns, for each point <math display="inline">p</math> in a space, a '''vector''', which can be represented by an arrow whose tail starts at <math display="inline">p</math>.<ref>Henle 1979, pp. 33.</ref> [picture] Imagine we have a vector field <math display="inline">v(x)</math> defined in a space and draw a line through our space. At each point along this line the vector field assigns a vector. If we move each point in this line along the arrow defined by this vector in the direction of the arrow head. This "flows" the entire line along the vectors. We can (potentially) define a function to implement this flow. Define <math display="inline">\Phi(x, t)</math> where <math display="inline">x</math> are points in the space and <math display="inline">t</math> is something like time. As <math display="inline">t</math> goes from zero to some positive number, <math display="inline">\Phi</math> moves the points <math display="inline">x</math> along the vectors. To describe this process formally, we say <math display="inline">\Phi</math> is the solution to the differential equation <math display="block">\frac{d}{dt} \Phi(x, t) = v(x).</math> We want a particular vector field <math display="inline">v</math> with certain properties... The proof of the existence of this vector field is long and complicated and we will not go into it here.<ref>It involves concepts such as Thom's isotopy lemma and Mather's controlled vector flows. See Mather 2012.</ref> Using this vector field <math display="inline">v</math> but modified so as to be zero on <math display="inline">M_{\leq a}</math>. This vector field defines a function <math display="inline">\Phi(x, t)</math> such that * <math display="inline">d/dt \Phi(x, t) = v(x)</math> when <math display="inline">h(x) \in (a, b]</math>. * <math display="inline">\Phi(x, t)</math> is defined for <math display="inline">0 \leq t \leq h(x) - a</math> and in this range <math display="inline">h(\Phi(x, t)) = h(x) - t</math>. * the map <math display="inline">\psi(x) = \Phi(x, b - a)</math> is a continuous map on <math display="inline">M_{\leq b}</math> with range (image?) <math display="inline">M_{\leq a}</math> and fixing <math display="inline">M_{\leq a}</math>. The function <math display="inline">\Phi(x, 0)</math> is the identity on <math display="inline">M_{\leq b}</math> and <math display="inline">\Phi(x, b - a) = \psi(x)</math>, therefore <math display="inline">\Phi</math> in the range <math display="inline">[0, b - a]</math> is a homotopy between the identity on <math display="inline">M_{\leq b}</math> and <math display="inline">\psi</math>. This implies 1)???<ref>Pemantle, Wilson and Melczer 2024, pp. 233.</ref> Define the distance from a critical point <math display="inline">\kappa(x) = \min\{ |x - z_i| : z_1, \cdots, z_m \}</math>. For <math display="inline">s > 0 </math> we define a new vector field <math display="block">v_s(x) = \begin{cases} v(x) & \kappa(x) \geq s \\ \rho(\kappa(x)) v(x) & \kappa(x) \in [s/2, s] \\ 0 & \kappa(x) \leq s/2 \end{cases}</math> for a smooth non-decreasing function <math display="inline">\rho</math> where <math display="inline">\rho(s/2) = 0</math>. Define <math display="inline">\Phi_s</math> as the function such that <math display="inline">d/dt \Phi(x, t)_s = v_s(x)</math>. The height function <math display="inline">h</math> is non-increasing along <math display="inline">\Phi_s</math> (by implication of bullet point 2?) so points in <math display="inline">M_{\leq c-\epsilon}</math> stay in <math display="inline">M_{\leq c - \epsilon}</math> when flowed along <math display="inline">\Phi_s</math> and therefore <math display="inline">\Phi_s</math> is a homotopy equivalence between <math display="inline">(M_{\leq c+\epsilon}, M_{\leq c-\epsilon})</math> and <math display="inline">(\Phi(M_{\leq c+\epsilon}, 2\epsilon), M_{\leq c-\epsilon})</math>. By <math display="inline">\Phi(M_{\leq c+\epsilon}, 2\epsilon)</math> we mean the space <math display="inline">M_{\leq c+\epsilon}</math> flowed along <math display="inline">\Phi(x, t)</math> for a short period of time <math display="inline">2\epsilon</math>. [Prove it has the same critical points and is proper?] <math display="inline">\Phi(M_{\leq c+\epsilon}, 2\epsilon)</math> takes points in <math display="inline">M_{\leq c+\epsilon}</math> to <math display="inline">M_{\leq c-\epsilon}</math> except for those that come within <math display="inline">s</math> of a critical point within time <math display="inline">2\epsilon</math>. Therefore, we see how we <math display="inline">\Phi_s</math> can homotopically deform a chain in <math display="inline">M_{\leq c+\epsilon}</math> to a chain in the union of <math display="inline">M_{\leq c-\epsilon}</math> and small neighbourhoods of critical points.<ref>Pemantle, Wilson and Melczer 2024, pp. 234-235.</ref> On the assumption of this theorem, we can start with any chain in <math display="inline">M</math> and deform this chain to <math display="inline">M_{c_1+}</math> using part 1. Then we deform this chain to a chain in the union of <math display="inline">M_{c_1-}</math> and small balls around the critical points. The (sub?)chain in <math display="inline">M_{c_1-}</math> is then deformed to a chain in <math display="inline">M_{c_2+}</math>, which is deformed to a chain in <math display="inline">M_{c_2-} \cup z_{c_2}</math>, and so on. Eventually, we get to <math display="inline">M_{c_j-}</math> which is homotopic to any space "below" it. Therefore, we have deformed our chain in <math display="inline">M</math> to a homotopic chain in the union of small balls around critical points.<ref>Baryshnikov, Melczer and Pemantle 2022, pp. ???.</ref><ref>Pemantle, Wilson and Melczer 2024, pp. 217???</ref> [Direct sum of homology generators for relative cycles] === Cellular homology === [Explain continuous?] A standard <math display="inline">n</math>-simplex <math display="inline">\Delta^n</math> is defined <math display="block">\Delta^n = \{ (t_1, \cdots, t_{n+1}) \in R^{n+1} \mid t_1 + \cdots + t_{n+1} = 1, t_i \geq 0 \}</math> A standard <math display="inline">0</math>-simplex is a point, a <math display="inline">1</math>-simplex a line of length 1, a <math display="inline">2</math>-simplex is a right-angled triangle with two sides of length 1. [picture] For any space <math display="inline">X</math>, a '''singular <math display="inline">n</math>-simplex''' is a continuous function from a standard <math display="inline">n</math>-simplex to our space <math display="inline">X</math>, <math display="inline">\sigma: \Delta^n \to X</math>. For example, the singular <math display="inline">0</math>-simplexes are all points in <math display="inline">X</math> and the singular <math display="inline">1</math>-simplexes are all continuous paths in <math display="inline">X</math>.<ref>Henle 1979, pp. 261.</ref> For any space, there is an uncountably infinite number of <math display="inline">n</math>-simplexes. [picture] An '''<math display="inline">n</math>-chain''' <math display="inline">C_n</math> is a finite sum of <math display="inline">n</math>-simplexes <math display="inline">\sum_i n_i \sigma_i</math> for <math display="inline">n_i \in \Z</math>. [picture] A '''homomorphism''' on chains will take an <math display="inline">n</math>-chain and return an <math display="inline">(n-1)</math>-chain. We can connect a sequence of chains <math display="inline">\cdots, C_{n+1}, C_n, C_{n-1}, \cdots</math> by homomorphisms <math display="inline">\cdots, \alpha_{n+1}, \alpha_n, \cdots</math> in the form <math display="block">\cdots \to C_{n+1} \overset{\alpha_{n+1}}{\to} C_n \overset{\alpha_n}{\to} C_{n-1} \to \cdots</math>. The '''boundary''' of an <math display="inline">n</math>-simplex is defined by <math display="block">\partial_n(\sigma) = \sum_i (-1)^i \sigma|[v_0, \cdots, \hat{v_i}, \cdots, v_n]</math> where <math display="inline">\sigma|[v_0, \cdots, \hat{v_i}, \cdots, v_n]</math> means <math display="inline">\sigma</math> restricted only to the face of <math display="inline">\Delta^n</math> formed by removing the vertex <math display="inline">v_i</math>. So <math display="inline">\partial_n</math> maps faces of <math display="inline">\Delta^n</math> to <math display="inline">X</math>. [picture] The '''boundary''' of an <math display="inline">n</math>-chain <math display="inline">C_n = \sum_i n_i \sigma_i</math> is defined by <math display="block">\partial_n(C_n) = \sum_i n_i \partial_n(\sigma_i).</math> [picture] We can fit this into our diagram above if we let <math display="inline">a_n = \partial_n</math> and draw the diagram <math display="block">\cdots \to C_{n+1} \overset{\partial_{n+1}}{\to} C_n \overset{\partial_n}{\to} C_{n-1} \to \cdots</math> Because <math display="inline">\partial_{n+1} \partial_n = 0</math>, we call this a '''chain complex'''. The '''image''' of <math display="inline">\partial_n</math> (<math display="inline">\mathrm{im}\, \partial_n</math>) is the set of all outputs of <math display="inline">\partial_n(C_n)</math> for all <math display="inline">n</math>-chains <math display="inline">C_n</math> in <math display="inline">X</math>. This is the set of all '''boundaries''' of all possible <math display="inline">n</math>-chains defined in <math display="inline">X</math>. [picture] The '''kernel''' of <math display="inline">\partial_n</math> (<math display="inline">\ker \partial_n</math>) is the set of all <math display="inline">n</math>-chains <math display="inline">C_n</math> in <math display="inline">X</math> such that <math display="inline">\partial_n(C_n) = 0</math>. This is the set of all <math display="inline">n</math>-chains which do not have a boundary, also known as '''<math display="inline">n</math>-cycles'''. [picture] Two <math display="inline">n</math>-cycles are called '''homologous''' if their difference equals the boundary of some <math display="inline">(n+1)</math>-chain. In other words, if <math display="inline">C_n - C_n' \in \mathrm{im}\, \partial_{n+1}</math>. [Example!] Homologous cycles are part of the same '''homology class''' and we write <math display="inline">H_n(X)</math> to denote the set of all such homology classes of <math display="inline">n</math>-cycles in <math display="inline">X</math>. Any <math display="inline">n</math>-cycle in <math display="inline">X</math> is a member of one of these classes. [Representative member?] Because <math display="inline">\partial_n</math> can also be seen as mapping homology classes in <math display="inline">H_n(X)</math> to (a subset of) homology classes in <math display="inline">H_{n-1}(X)</math>, we can diagram <math display="block">\cdots \to H_{n+1}(X) \overset{\partial_{n+1}}{\to} H_n(X) \overset{\partial_n}{\to} H_{n-1}(X) \to \cdots</math>. Imagine a space <math display="inline">(X, A)</math> which is <math display="inline">X</math> with its subspace <math display="inline">A</math> shrunk to a point. In this space, the relative <math display="inline">n</math>-chains <math display="inline">C_n(X, A)</math> are <math display="inline">n</math>-chains in <math display="inline">X</math> after any sub-chains that are in <math display="inline">A</math> are shrunk to a point. This is also referred to as the '''quotient''' <math display="inline">X / A</math> and <math display="inline">C_n(X) / C_n(A)</math>, respectively. Two relative chains are in the same homology class if their difference is a boundary of some <math display="inline">C_{n+1}(X)</math> plus any chain in <math display="inline">C_n(A)</math>. The set of such homology classes is denoted by <math display="inline">H_n(X, A)</math>. [example] A sequence <math display="block">\cdots \to C_{n+1} \overset{\alpha_{n+1}}{\to} C_n \overset{\alpha_n}{\to} C_{n-1} \to \cdots</math> is called '''exact''' if <math display="inline">\ker \alpha_n = \mathrm{im}\, \alpha_{n+1}</math>. In the case that <math display="inline">\alpha = \partial</math> then this means that the boundary of all <math display="inline">(n+1)</math>-chains are <math display="inline">n</math>-cycles. This has some important properties which we use later. <math display="inline">0 \to A \overset{\alpha}{\to} B \overset{\beta}{\to} C \to 0</math> is exact iff <math display="inline">\alpha</math> is injective, <math display="inline">\beta</math> is surjective and <math display="inline">\ker \beta = \mathrm{im}\, \alpha</math>. One consequence is that <math display="inline">C</math> is isomorphic to <math display="inline">B / \mathrm{im}\, \alpha</math>.<ref>Hatcher 2001, pp. 114.</ref> We prove that we can construct an exact sequence <math display="block">\cdots \to H_n(A) \overset{i_n}{\to} H_n(X) \overset{j_n}{\to} H_n(X, A) \overset{\partial_n}{\to} H_{n-1}(A) \overset{i_{n-1}}{\to} H_{n-1}(X) \overset{j_{n-1}}{\to} H_{n-1}(X, A) \to \cdots</math> where <math display="inline">i</math> is the inclusion (and an injection), <math display="inline">j</math> is the quotient map (and a surjection) and <math display="inline">\ker j_n = \mathrm{im}\, i_n</math> [how]. As a consequence, in the below diagram the two rows are exact sequences. [[File:Commutative diagram used in proof of relative exact sequence.png]] The part of the sequence <math display="inline">H_n(A) \overset{i_n}{\to} H_n(X) \overset{j_n}{\to} H_n(X, A)</math> is automatic from the definition of <math display="inline">i_n</math> and <math display="inline">j_n</math>. We just need to prove that there exists a <math display="inline">\partial_n</math> which will allow us to do <math display="inline">H_n(X, A) \overset{\partial_n}{\to} H_{n-1}(A)</math>. Take a cycle <math display="inline">c \in C_n(X, A)</math>. Since <math display="inline">j</math> is surjective, <math display="inline">c = j_n(b)</math> for at least one <math display="inline">b \in C_n(X)</math> (note that <math display="inline">b</math> may not be unique, but we will show in the next paragraph this is not a problem). This takes us from the top right to the top middle in our diagram. <math display="inline">\partial_n(b)</math> takes us from the top middle to the bottom middle and it is in <math display="inline">\ker j_{n-1}</math> because <math display="inline"></math>. Since the rows are exact, <math display="inline">\ker j_{n-1} = \mathrm{im}\, i_{n-1}</math> and so <math display="inline">\partial_n(b) = i_{n-1}(a)</math> for some <math display="inline">a \in C_{n-1}(A)</math>. <math display="inline">a</math> is unique because <math display="inline">i_{n-1}</math> is injective and this takes us from the bottom middle to the bottom left, as desired. One problem is there may be more than one <math display="inline">b \in C_n(X)</math> for which <math display="inline">j_n(b) = c</math>. Take two <math display="inline">b, b' \in C_n(X)</math> such that <math display="inline">j(b) = j(b') = c</math>. This also means <math display="inline">j(b - b') = j(b) - j(b') = 0</math> and therefore <math display="inline">b - b' \in \ker j_{n-1}</math>. Since <math display="inline">\ker j_{n-1} = \mathrm{im}\,_{n-1}</math>, <math display="inline">b - b' = i(a')</math> for some <math display="inline">a' \in C_{n-1}(A)</math> and <math display="inline">b' = b + i(a')</math>. The effect of replacing <math display="inline">b</math> by <math display="inline">b + i(a')</math> changes <math display="inline">a</math> to an element in the same homology class <math display="inline">a + \partial a'</math> since <math display="inline">i(a + \partial a') = i(a) + i(\partial a') = \partial b + \partial i(a') = \partial(b + i(a'))</math>. Changing <math display="inline">c</math> to a another cycle in the same homology class would be of the form <math display="inline">c + \partial c'</math>. Since <math display="inline">c' = j(b')</math> for some <math display="inline">b'</math>, we have <math display="inline">c + \partial c' = c + \partial j(b') = c + j(\partial b') = j(b + \partial b')</math>, so <math display="inline">b</math> is replaced by <math display="inline">b + \partial b'</math> but <math display="inline">\partial(b + \partial b') = \partial b + \partial \partial b' = \partial b</math>, which leaves <math display="inline">\partial b</math> and <math display="inline">a</math> unchanged.<ref>Hatcher 2001, pp. 116.</ref> We need to prove that it is an exact sequence: # <math display="inline">\mathrm{im}\, i \subset \ker j</math>, since <math display="inline">ji = 0</math> implies <math display="inline">i_* j_* = 0</math>. # <math display="inline">\mathrm{im} \subset \ker \partial</math>, since <math display="inline">j</math> takes cycles to cycles and so <math display="inline">\partial j(b) = 0</math> if <math display="inline">b</math> is a cycle. # <math display="inline">\mathrm{im}\, \partial \subset \ker i</math>, since <math display="inline">i_* \partial = 0</math> since <math display="inline">\partial[c] = [a] = [\partial b] = 0</math>. # <math display="inline">\ker j \subset \mathrm{im}\, i</math>... # <math display="inline">\ker \partial \subset \mathrm{im}\, j</math>... # <math display="inline">\ker i \subset \mathrm{im}\, \partial</math>, since a cycle <math display="inline">a \in C_{n-1}(A)</math> such that <math display="inline">i(a) = \partial b</math> for some <math display="inline">b \in C_n(X)</math>, then <math display="inline">j(b)</math> is a cycle since <math display="inline">\partial j(b) = j(\partial b) = ji(a) = 0</math> and <math display="inline">\partial[j(b)] = [a]</math>.<ref>Hatcher 2001, pp. 117.</ref> [define cell?] To construct a '''cell complex''' (not to be confused with a chain complex): # Start with a set of points (<math display="inline">0</math>-cells). Call this <math display="inline">X^0</math>. # Introduce a set of lines (<math display="inline">1</math>-cells) and attach the two end-points of these lines to the points from step 1. Call this <math display="inline">X^1</math>. # Introduce a set of discs (<math display="inline">2</math>-cells) and attach the boundary of these discs to the lines and/or points from steps 1 and 2. Call this <math display="inline">X^2</math>. # Continue this for higher-dimension cells (potentially up to infinity). [example] Like above, we define a space <math display="inline">(X^n, X^{n-1})</math> which is <math display="inline">X^n</math> with its subspace <math display="inline">X^{n-1}</math> shrunk to a point. In this space, the relative chains <math display="inline">C_n(X^n, X^{n-1})</math> are chains in <math display="inline">X^n</math> after any sub-chains that are in <math display="inline">X^{n-1}</math> are shrunk to a point. Two relative chains are homologous if their difference is a boundary of some <math display="inline">C_{n+1}(X^n)</math> plus any chain in <math display="inline">C_n(X^{n-1})</math>. The set of such equivalence classes is denoted by <math display="inline">H_n(X^n, X^{n-1})</math>. We can prove that the representatives of each class of <math display="inline">H_n(X^n, X^{n-1})</math> is expressed as a linear combination of <math display="inline">n</math>-cells of <math display="inline">X</math>. Take \direct_a H(X_a, a) \to H_n(\cup X / \cup a, \cup a / \cup a) (p 2.22)...<ref>Hatcher 2001, pp. 124, 126, 137.</ref> Therefore, we can see any representative of a class in <math display="inline">H_n(X^n, X^{n-1})</math> as a chain and we can form them into a chain complex by drawing the below diagram, which is the combination of three exact sequences proven above. [[File:Commutative diagram used in proof of cellular chain complex.png|1000px]] The green, blue and red diagonals are different parts of the exact sequence we constructed above. The sequence of <math display="inline">\cdots \to H_n(X^{n+1}, X^n) \to H_n(X^n, X^{n-1}) \to H_n(X^{n-1}, X^{n-2}) \to \cdots</math>, represented by the horizontal row in the above diagram, is a chain complex if <math display="inline">j_n \partial_{n+1} = d_{n+1}</math> because then <math display="inline">d_{n+1} d_n = j_n \partial_{n+1} j_{n-1} \partial_n = \partial_{n+1} \partial_n j_n j_{n-1} = 0</math> because <math display="inline">\partial_{n+1} \partial_n = 0</math>. This chain complex has its own homology group <math display="inline">H_n^{CW}(X)</math> and we can prove is isomorphic to the "normal" homology group of <math display="inline">H_n(X)</math>.<ref>Hatcher 2001, pp. 139.</ref> [explain functions, injections, isomorphisms, etc.] In the above diagram, <math display="inline">H_n(X)</math> is isomorphic to <math display="inline">H_n(X^{n+1})</math> [how?] which is in turn isomorphic to <math display="inline">H_n(X^n) / \mathrm{im}\, \partial_{n+1}</math> by virtue of it being part of an exact sequence. Both being part of a exact sequences, <math display="inline">j_n</math> and <math display="inline">\partial_{n+1}</math> are injective. <math display="inline">\partial_{n+1}</math> maps each element of <math display="inline">H_{n+1}(X^{n+1}, X^n)</math> to a unique element of <math display="inline">H_n(X^n)</math> which in turn is mapped by <math display="inline">j_n</math> to a unique element of <math display="inline">H_n(X^n, X^{n-1})</math>. Therefore, <math display="inline">\mathrm{im}\, \partial_{n+1}</math> is mapped isomorphically onto <math display="inline">\mathrm{im}\,(j_n \partial_{n+1}) = \mathrm{im}\, d_{n+1}</math>. Trivially, <math display="inline">j_n</math> maps <math display="inline">H_n(X^n)</math> isomorphically onto its own image, therefore <math display="inline">\mathrm{im}\, j_n = \ker \partial_n</math>. Since <math display="inline">j_{n-1}</math> is also injective by virtue of being an exact sequence, the zero element of <math display="inline">H_{n-1}(X^{n-1})</math> is mapped to the zero element of <math display="inline">H_{n-1}(X^{n-1}, X^{n-2})</math> and, being injective, no other element is. Therefore, <math display="inline">\ker \partial_n = \ker d_n</math>. Putting this all together we get <math display="inline">j_n</math> induces an isomorphism between <math display="inline">H_n(X^n) / \mathrm{im}\, \partial_{n+1}</math> and <math display="inline">\ker d_n / \mathrm{im}\, d_{n+1}</math>.<ref>Hatcher 2001, pp. 139-140.</ref> Because we saw above that <math display="inline">H_n(X^n, X^{n-1})</math> is generated by linear combinations of <math display="inline">n</math>-cells then any subgroup must be generated by a subset of these same cells and so is <math display="inline">\ker d_n / \mathrm{im}\, d_{n+1}</math>.<ref>Hatcher 2001, pp. 140.</ref> TODO: # Finish the two proofs above (exact sequences and good pairs) ## Explain inclusion and quotient map # Draw lots of diagrams # Come up with lots of examples # Restructure, with lots more signposting/up-fronting of theorems (perhaps move this whole section to its own chapter) == Notes == {{Reflist}} == References == * {{citation | last1=Baryshnikov | first1=Yuliy | last2=Melczer | first2=Stephen | last3=Pemantle | first3=Robin | title=Stationary Points at Infinity for Analytic Combinatorics | year=2022 | journal=Foundations of Computational Mathematics | volume=22 | number=5 | pages=1631-1664 | url=https://www2.math.upenn.edu/~pemantle/papers/SPAI-published-version.pdf }}. * {{cite book | last=Hatcher | first1=Allen | title=Algebraic Topology | publisher=Cambridge University Press | year=2001 | url=https://pi.math.cornell.edu/~hatcher/AT/AT+.pdf }} * {{cite book | last=Henle | first1=Michael | title=A Combinatorial Introduction to Topology | publisher=Dover Publications Inc. New York | year=1979 }} * {{citation | last=Mather | first=John | title=Notes on Topological Stability | year=2012 | journal=Bulletin of the American Mathematical Society | volume=49 | number=4 | pages=475-506 | url=https://www.ams.org/journals/bull/2012-49-04/S0273-0979-2012-01383-6/S0273-0979-2012-01383-6.pdf }}. * {{cite book | last1=Pemantle | first1=Robin | last2=Wilson | first2=Mark C. | last3=Melczer | first3=Stephen | title=Analytic Combinatorics in Several Variables | publisher=Cambridge University Press | year=2024 | edition=2nd | url=https://acsvproject.com/PemantleWilsonMelczer23.pdf }} ai0r3e8e37aaql8sd2h75uw6xoetd32 General Literary Chinese from Scratch 0 481710 4656608 4656179 2026-08-07T14:29:20Z Shira the Mogul 3560559 /* Unit 2: An Overview of Sinitic Poetry */ revisions and removing commented-out poems that now have boilerplates 4656608 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/The Mountains with Yelü Tuyu/]] <!--- 立木海上刻詩 耶律圖欲 / 耶律倍 / 李贊華 小山壓大山,大山全無力。 羞見故鄉人,從此投外國。 ---> # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/Ultimate Justice with Xiezhi/]] # [[/The Virtue of the Fenghuang/]] # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] <!--- 便面蘆間有漁·武田信玄 山色水光烟接天,漁翁江上棹蘆辺 丹青若写得勝景,万里風波一釣船 便面半月照梅花·武田信玄 蘆葦清風垂頂絲,窺魚白鷺水生涯 江南記得曾遊夕,似見梨花院落時 島森哲男. (2015). 武田信玄漢詩校釈. 宮城教育大学紀要, 49, 333–352. https://mue.repo.nii.ac.jp/records/440 似 is a really useful thing to teach early on. ---> # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] <!--- https://www.fanyahanwen-corpus.cn/corpus_viewer/%E6%97%A5%E6%9C%AC%E6%BC%A2%E6%96%87/clean/%E6%97%A5%E6%9C%AC/%E6%B1%9F%E6%88%B8%E6%99%82%E4%BB%A3/%E8%9D%A6%E5%A4%B7%E5%85%B1%E5%92%8C%E5%9B%BD/%E5%9C%A8%E6%B5%B7%E7%89%99%E5%BA%9C ---> # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== <!--- 三國史記 for sure! ---> <!--- 放蟬賦 by Yi Kyubo ---> <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] <!--- 道可道,非常道。名可名,非常名。無名天地之始;有名萬物之母。故常無欲,以觀其妙;常有欲,以觀其徼。此兩者,同出而異名,同謂之玄。玄之又玄,衆妙之門。I can expect learners to recognise the stuff here. ---> # [[/Qingtan with Xie Daoyun/]] <!--- 謝道韞; mentioned in the sanzijing. could be good! 《泰山吟·謝道韞》 峩峩東嶽高,秀極衝青天。 巖中間虛宇,寂寞幽以玄。 非工復非匠,雲構發自然。 器象爾何物,遂令我屢遷。 逝將宅斯宇,可以盡天年。 《拟嵇中散咏松诗·謝道韞》 遙望山上松,隆冬不能凋。 願想遊不憩,瞻彼萬仞條。 騰躍未能升,頓足俟王喬。 時哉不我與,大運所飄遙。 ---> # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] <!--- 康熙二十二年封王尚貞敕 皇帝敕諭琉球國中山王世子尚貞:惟爾遠處海隅,虔修職貢;屬在塚嗣,序應承祧。以朝命未膺,罔敢專擅;恪遵典制,奉表請封。朕念爾世守臣節,忠誠可嘉!特遣正使翰林院檢討汪楫、副使內閣中書舍人加一級林麟焻,齎敕封爾為琉球國中山王,並賜爾及妃文幣等物。爾祗承寵眷,懋紹先猷;輯和臣民,慎固封守:用安宗社於苞桑,永作天家之屏翰。欽哉,毋替朕命!故諭。 Teach imperial edicts. Consider seeing if there's a letter of acceptance from Shō Tei. Recorded in 琉球國志略 https://ctext.org/wiki.pl?if=en&chapter=966326 ---> # [[/The Twilight of Ryukyu with Shō Ten/]] <!--- 神田酒樓街燈 尚典 酒樓今秋設芳筵, 一望街燈燦燦連。 烟氣引來通柱上, 光爭星月照神田。 ---> # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] <!--- https://wikisource.org/wiki/%E5%A4%A7%E9%87%91%E7%9A%87%E5%BC%9F%E9%83%BD%E7%B5%B1%E7%B6%93%E7%95%A5%E9%83%8E%E5%90%9B%E8%A1%8C%E8%A8%98 ---> # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] <!--- 教義詔 楊廣 武有七德,先之以安民。政有六本,興之以教義。高麗高元,虧失藩禮,將欲問罪遼左,恢宣勝略。雖懷伐國,仍事省方。今往涿郡,巡撫民俗。其河北諸郡及山西、山東年九十已上者,版授太守;八十者,授縣令。 ---> # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] <!--- 順治帝 告示 逆酋李自成已於通城斃命,各地鄉勇務隨我軍剿殺逆賊殘餘,凡有斬獲逆酋及擒獲逆酋交我軍者,一經驗證,按軍功論級給賞,必以示我朝皇恩浩蕩。 大清順治二年五月二十四日 恩詔 今月何日,為國曆改歲之履端,即為永昌書元之紀念?緬惟我朝民眾,三元肇慶,四始發祥。陳椒酒以飛觴,躋堂介壽;換桃符以獻歲,辟戶書新。翹望德容,河勝額手。今山河如舊,歲序更新;今天下同春,咸頒麗澤。願我朝君臣與萬民同樂,共沐化日光天,方不虛度韶華。 永昌二年新正初一 There's probably better choices here. Review. ---> # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/cfe6700e01f6fd59616a375d31aa8cd096677be1 this first ---> # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] <!--- Kangxi Dictionary Abstract - https://zh.wikisource.org/wiki/%E5%BA%B7%E7%86%99%E5%AD%97%E5%85%B8 ---> # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} j554zq33cnamk54ureyjlc9q59gzlo9 4656609 4656608 2026-08-07T14:29:37Z Shira the Mogul 3560559 /* Unit 2: An Overview of Sinitic Poetry */ 4656609 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/The Mountains with Yelü Tuyu/]] <!--- 立木海上刻詩 耶律圖欲 / 耶律倍 / 李贊華 小山壓大山,大山全無力。 羞見故鄉人,從此投外國。 ---> # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/Ultimate Justice with Xiezhi/]] # [[/The Virtue of the Fenghuang/]] # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] <!--- 便面蘆間有漁·武田信玄 山色水光烟接天,漁翁江上棹蘆辺 丹青若写得勝景,万里風波一釣船 便面半月照梅花·武田信玄 蘆葦清風垂頂絲,窺魚白鷺水生涯 江南記得曾遊夕,似見梨花院落時 島森哲男. (2015). 武田信玄漢詩校釈. 宮城教育大学紀要, 49, 333–352. https://mue.repo.nii.ac.jp/records/440 似 is a really useful thing to teach early on. ---> # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] <!--- https://www.fanyahanwen-corpus.cn/corpus_viewer/%E6%97%A5%E6%9C%AC%E6%BC%A2%E6%96%87/clean/%E6%97%A5%E6%9C%AC/%E6%B1%9F%E6%88%B8%E6%99%82%E4%BB%A3/%E8%9D%A6%E5%A4%B7%E5%85%B1%E5%92%8C%E5%9B%BD/%E5%9C%A8%E6%B5%B7%E7%89%99%E5%BA%9C ---> # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== <!--- 三國史記 for sure! ---> <!--- 放蟬賦 by Yi Kyubo ---> <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] <!--- 道可道,非常道。名可名,非常名。無名天地之始;有名萬物之母。故常無欲,以觀其妙;常有欲,以觀其徼。此兩者,同出而異名,同謂之玄。玄之又玄,衆妙之門。I can expect learners to recognise the stuff here. ---> # [[/Qingtan with Xie Daoyun/]] <!--- 謝道韞; mentioned in the sanzijing. could be good! 《泰山吟·謝道韞》 峩峩東嶽高,秀極衝青天。 巖中間虛宇,寂寞幽以玄。 非工復非匠,雲構發自然。 器象爾何物,遂令我屢遷。 逝將宅斯宇,可以盡天年。 《拟嵇中散咏松诗·謝道韞》 遙望山上松,隆冬不能凋。 願想遊不憩,瞻彼萬仞條。 騰躍未能升,頓足俟王喬。 時哉不我與,大運所飄遙。 ---> # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] <!--- 康熙二十二年封王尚貞敕 皇帝敕諭琉球國中山王世子尚貞:惟爾遠處海隅,虔修職貢;屬在塚嗣,序應承祧。以朝命未膺,罔敢專擅;恪遵典制,奉表請封。朕念爾世守臣節,忠誠可嘉!特遣正使翰林院檢討汪楫、副使內閣中書舍人加一級林麟焻,齎敕封爾為琉球國中山王,並賜爾及妃文幣等物。爾祗承寵眷,懋紹先猷;輯和臣民,慎固封守:用安宗社於苞桑,永作天家之屏翰。欽哉,毋替朕命!故諭。 Teach imperial edicts. Consider seeing if there's a letter of acceptance from Shō Tei. Recorded in 琉球國志略 https://ctext.org/wiki.pl?if=en&chapter=966326 ---> # [[/The Twilight of Ryukyu with Shō Ten/]] <!--- 神田酒樓街燈 尚典 酒樓今秋設芳筵, 一望街燈燦燦連。 烟氣引來通柱上, 光爭星月照神田。 ---> # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] <!--- https://wikisource.org/wiki/%E5%A4%A7%E9%87%91%E7%9A%87%E5%BC%9F%E9%83%BD%E7%B5%B1%E7%B6%93%E7%95%A5%E9%83%8E%E5%90%9B%E8%A1%8C%E8%A8%98 ---> # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] <!--- 教義詔 楊廣 武有七德,先之以安民。政有六本,興之以教義。高麗高元,虧失藩禮,將欲問罪遼左,恢宣勝略。雖懷伐國,仍事省方。今往涿郡,巡撫民俗。其河北諸郡及山西、山東年九十已上者,版授太守;八十者,授縣令。 ---> # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] <!--- 順治帝 告示 逆酋李自成已於通城斃命,各地鄉勇務隨我軍剿殺逆賊殘餘,凡有斬獲逆酋及擒獲逆酋交我軍者,一經驗證,按軍功論級給賞,必以示我朝皇恩浩蕩。 大清順治二年五月二十四日 恩詔 今月何日,為國曆改歲之履端,即為永昌書元之紀念?緬惟我朝民眾,三元肇慶,四始發祥。陳椒酒以飛觴,躋堂介壽;換桃符以獻歲,辟戶書新。翹望德容,河勝額手。今山河如舊,歲序更新;今天下同春,咸頒麗澤。願我朝君臣與萬民同樂,共沐化日光天,方不虛度韶華。 永昌二年新正初一 There's probably better choices here. Review. ---> # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/cfe6700e01f6fd59616a375d31aa8cd096677be1 this first ---> # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] <!--- Kangxi Dictionary Abstract - https://zh.wikisource.org/wiki/%E5%BA%B7%E7%86%99%E5%AD%97%E5%85%B8 ---> # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} nuyiqiqb1fsjcp617c0rpeg39qdyqad 4656612 4656609 2026-08-07T14:34:53Z Shira the Mogul 3560559 /* Unit 3: Confucianism and the World */ relation is difficult to justify... 4656612 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/Ultimate Justice with Xiezhi/]] # [[/The Virtue of the Fenghuang/]] # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] <!--- 便面蘆間有漁·武田信玄 山色水光烟接天,漁翁江上棹蘆辺 丹青若写得勝景,万里風波一釣船 便面半月照梅花·武田信玄 蘆葦清風垂頂絲,窺魚白鷺水生涯 江南記得曾遊夕,似見梨花院落時 島森哲男. (2015). 武田信玄漢詩校釈. 宮城教育大学紀要, 49, 333–352. https://mue.repo.nii.ac.jp/records/440 似 is a really useful thing to teach early on. ---> # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] <!--- https://www.fanyahanwen-corpus.cn/corpus_viewer/%E6%97%A5%E6%9C%AC%E6%BC%A2%E6%96%87/clean/%E6%97%A5%E6%9C%AC/%E6%B1%9F%E6%88%B8%E6%99%82%E4%BB%A3/%E8%9D%A6%E5%A4%B7%E5%85%B1%E5%92%8C%E5%9B%BD/%E5%9C%A8%E6%B5%B7%E7%89%99%E5%BA%9C ---> # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== <!--- 三國史記 for sure! ---> <!--- 放蟬賦 by Yi Kyubo ---> <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] <!--- 道可道,非常道。名可名,非常名。無名天地之始;有名萬物之母。故常無欲,以觀其妙;常有欲,以觀其徼。此兩者,同出而異名,同謂之玄。玄之又玄,衆妙之門。I can expect learners to recognise the stuff here. ---> # [[/Qingtan with Xie Daoyun/]] <!--- 謝道韞; mentioned in the sanzijing. could be good! 《泰山吟·謝道韞》 峩峩東嶽高,秀極衝青天。 巖中間虛宇,寂寞幽以玄。 非工復非匠,雲構發自然。 器象爾何物,遂令我屢遷。 逝將宅斯宇,可以盡天年。 《拟嵇中散咏松诗·謝道韞》 遙望山上松,隆冬不能凋。 願想遊不憩,瞻彼萬仞條。 騰躍未能升,頓足俟王喬。 時哉不我與,大運所飄遙。 ---> # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] <!--- 康熙二十二年封王尚貞敕 皇帝敕諭琉球國中山王世子尚貞:惟爾遠處海隅,虔修職貢;屬在塚嗣,序應承祧。以朝命未膺,罔敢專擅;恪遵典制,奉表請封。朕念爾世守臣節,忠誠可嘉!特遣正使翰林院檢討汪楫、副使內閣中書舍人加一級林麟焻,齎敕封爾為琉球國中山王,並賜爾及妃文幣等物。爾祗承寵眷,懋紹先猷;輯和臣民,慎固封守:用安宗社於苞桑,永作天家之屏翰。欽哉,毋替朕命!故諭。 Teach imperial edicts. Consider seeing if there's a letter of acceptance from Shō Tei. Recorded in 琉球國志略 https://ctext.org/wiki.pl?if=en&chapter=966326 ---> # [[/The Twilight of Ryukyu with Shō Ten/]] <!--- 神田酒樓街燈 尚典 酒樓今秋設芳筵, 一望街燈燦燦連。 烟氣引來通柱上, 光爭星月照神田。 ---> # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] <!--- https://wikisource.org/wiki/%E5%A4%A7%E9%87%91%E7%9A%87%E5%BC%9F%E9%83%BD%E7%B5%B1%E7%B6%93%E7%95%A5%E9%83%8E%E5%90%9B%E8%A1%8C%E8%A8%98 ---> # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] <!--- 教義詔 楊廣 武有七德,先之以安民。政有六本,興之以教義。高麗高元,虧失藩禮,將欲問罪遼左,恢宣勝略。雖懷伐國,仍事省方。今往涿郡,巡撫民俗。其河北諸郡及山西、山東年九十已上者,版授太守;八十者,授縣令。 ---> # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] <!--- 順治帝 告示 逆酋李自成已於通城斃命,各地鄉勇務隨我軍剿殺逆賊殘餘,凡有斬獲逆酋及擒獲逆酋交我軍者,一經驗證,按軍功論級給賞,必以示我朝皇恩浩蕩。 大清順治二年五月二十四日 恩詔 今月何日,為國曆改歲之履端,即為永昌書元之紀念?緬惟我朝民眾,三元肇慶,四始發祥。陳椒酒以飛觴,躋堂介壽;換桃符以獻歲,辟戶書新。翹望德容,河勝額手。今山河如舊,歲序更新;今天下同春,咸頒麗澤。願我朝君臣與萬民同樂,共沐化日光天,方不虛度韶華。 永昌二年新正初一 There's probably better choices here. Review. ---> # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/cfe6700e01f6fd59616a375d31aa8cd096677be1 this first ---> # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] <!--- Kangxi Dictionary Abstract - https://zh.wikisource.org/wiki/%E5%BA%B7%E7%86%99%E5%AD%97%E5%85%B8 ---> # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} mwos1j6588c8y6u85qc32s867jq4sgu 4656617 4656612 2026-08-07T14:44:56Z Shira the Mogul 3560559 /* Unit 6: Nation Focus - Japan */ 4656617 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/Ultimate Justice with Xiezhi/]] # [[/The Virtue of the Fenghuang/]] # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== <!--- 三國史記 for sure! ---> <!--- 放蟬賦 by Yi Kyubo ---> <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] <!--- 道可道,非常道。名可名,非常名。無名天地之始;有名萬物之母。故常無欲,以觀其妙;常有欲,以觀其徼。此兩者,同出而異名,同謂之玄。玄之又玄,衆妙之門。I can expect learners to recognise the stuff here. ---> # [[/Qingtan with Xie Daoyun/]] <!--- 謝道韞; mentioned in the sanzijing. could be good! 《泰山吟·謝道韞》 峩峩東嶽高,秀極衝青天。 巖中間虛宇,寂寞幽以玄。 非工復非匠,雲構發自然。 器象爾何物,遂令我屢遷。 逝將宅斯宇,可以盡天年。 《拟嵇中散咏松诗·謝道韞》 遙望山上松,隆冬不能凋。 願想遊不憩,瞻彼萬仞條。 騰躍未能升,頓足俟王喬。 時哉不我與,大運所飄遙。 ---> # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] <!--- 康熙二十二年封王尚貞敕 皇帝敕諭琉球國中山王世子尚貞:惟爾遠處海隅,虔修職貢;屬在塚嗣,序應承祧。以朝命未膺,罔敢專擅;恪遵典制,奉表請封。朕念爾世守臣節,忠誠可嘉!特遣正使翰林院檢討汪楫、副使內閣中書舍人加一級林麟焻,齎敕封爾為琉球國中山王,並賜爾及妃文幣等物。爾祗承寵眷,懋紹先猷;輯和臣民,慎固封守:用安宗社於苞桑,永作天家之屏翰。欽哉,毋替朕命!故諭。 Teach imperial edicts. Consider seeing if there's a letter of acceptance from Shō Tei. Recorded in 琉球國志略 https://ctext.org/wiki.pl?if=en&chapter=966326 ---> # [[/The Twilight of Ryukyu with Shō Ten/]] <!--- 神田酒樓街燈 尚典 酒樓今秋設芳筵, 一望街燈燦燦連。 烟氣引來通柱上, 光爭星月照神田。 ---> # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] <!--- https://wikisource.org/wiki/%E5%A4%A7%E9%87%91%E7%9A%87%E5%BC%9F%E9%83%BD%E7%B5%B1%E7%B6%93%E7%95%A5%E9%83%8E%E5%90%9B%E8%A1%8C%E8%A8%98 ---> # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] <!--- 教義詔 楊廣 武有七德,先之以安民。政有六本,興之以教義。高麗高元,虧失藩禮,將欲問罪遼左,恢宣勝略。雖懷伐國,仍事省方。今往涿郡,巡撫民俗。其河北諸郡及山西、山東年九十已上者,版授太守;八十者,授縣令。 ---> # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] <!--- 順治帝 告示 逆酋李自成已於通城斃命,各地鄉勇務隨我軍剿殺逆賊殘餘,凡有斬獲逆酋及擒獲逆酋交我軍者,一經驗證,按軍功論級給賞,必以示我朝皇恩浩蕩。 大清順治二年五月二十四日 恩詔 今月何日,為國曆改歲之履端,即為永昌書元之紀念?緬惟我朝民眾,三元肇慶,四始發祥。陳椒酒以飛觴,躋堂介壽;換桃符以獻歲,辟戶書新。翹望德容,河勝額手。今山河如舊,歲序更新;今天下同春,咸頒麗澤。願我朝君臣與萬民同樂,共沐化日光天,方不虛度韶華。 永昌二年新正初一 There's probably better choices here. Review. ---> # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/cfe6700e01f6fd59616a375d31aa8cd096677be1 this first ---> # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] <!--- Kangxi Dictionary Abstract - https://zh.wikisource.org/wiki/%E5%BA%B7%E7%86%99%E5%AD%97%E5%85%B8 ---> # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} exk412kd48aj8z4lt2fyhn73zow43z1 4656620 4656617 2026-08-07T14:53:57Z Shira the Mogul 3560559 /* Unit 9: An Introduction to Daoism */ how could I forget wunengzi!!! 4656620 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/Ultimate Justice with Xiezhi/]] # [[/The Virtue of the Fenghuang/]] # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== <!--- 三國史記 for sure! ---> <!--- 放蟬賦 by Yi Kyubo ---> <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] <!--- 康熙二十二年封王尚貞敕 皇帝敕諭琉球國中山王世子尚貞:惟爾遠處海隅,虔修職貢;屬在塚嗣,序應承祧。以朝命未膺,罔敢專擅;恪遵典制,奉表請封。朕念爾世守臣節,忠誠可嘉!特遣正使翰林院檢討汪楫、副使內閣中書舍人加一級林麟焻,齎敕封爾為琉球國中山王,並賜爾及妃文幣等物。爾祗承寵眷,懋紹先猷;輯和臣民,慎固封守:用安宗社於苞桑,永作天家之屏翰。欽哉,毋替朕命!故諭。 Teach imperial edicts. Consider seeing if there's a letter of acceptance from Shō Tei. Recorded in 琉球國志略 https://ctext.org/wiki.pl?if=en&chapter=966326 ---> # [[/The Twilight of Ryukyu with Shō Ten/]] <!--- 神田酒樓街燈 尚典 酒樓今秋設芳筵, 一望街燈燦燦連。 烟氣引來通柱上, 光爭星月照神田。 ---> # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] <!--- https://wikisource.org/wiki/%E5%A4%A7%E9%87%91%E7%9A%87%E5%BC%9F%E9%83%BD%E7%B5%B1%E7%B6%93%E7%95%A5%E9%83%8E%E5%90%9B%E8%A1%8C%E8%A8%98 ---> # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] <!--- 教義詔 楊廣 武有七德,先之以安民。政有六本,興之以教義。高麗高元,虧失藩禮,將欲問罪遼左,恢宣勝略。雖懷伐國,仍事省方。今往涿郡,巡撫民俗。其河北諸郡及山西、山東年九十已上者,版授太守;八十者,授縣令。 ---> # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] <!--- 順治帝 告示 逆酋李自成已於通城斃命,各地鄉勇務隨我軍剿殺逆賊殘餘,凡有斬獲逆酋及擒獲逆酋交我軍者,一經驗證,按軍功論級給賞,必以示我朝皇恩浩蕩。 大清順治二年五月二十四日 恩詔 今月何日,為國曆改歲之履端,即為永昌書元之紀念?緬惟我朝民眾,三元肇慶,四始發祥。陳椒酒以飛觴,躋堂介壽;換桃符以獻歲,辟戶書新。翹望德容,河勝額手。今山河如舊,歲序更新;今天下同春,咸頒麗澤。願我朝君臣與萬民同樂,共沐化日光天,方不虛度韶華。 永昌二年新正初一 There's probably better choices here. Review. ---> # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/cfe6700e01f6fd59616a375d31aa8cd096677be1 this first ---> # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] <!--- Kangxi Dictionary Abstract - https://zh.wikisource.org/wiki/%E5%BA%B7%E7%86%99%E5%AD%97%E5%85%B8 ---> # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} qcn6ue8u5ln6739dlj7s5mw8zys1so8 4656625 4656620 2026-08-07T14:58:27Z Shira the Mogul 3560559 /* Unit 10: Nation Focus - Ryukyu Kingdom */ cleaning up 4656625 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/Ultimate Justice with Xiezhi/]] # [[/The Virtue of the Fenghuang/]] # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== <!--- 三國史記 for sure! ---> <!--- 放蟬賦 by Yi Kyubo ---> <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] <!--- https://wikisource.org/wiki/%E5%A4%A7%E9%87%91%E7%9A%87%E5%BC%9F%E9%83%BD%E7%B5%B1%E7%B6%93%E7%95%A5%E9%83%8E%E5%90%9B%E8%A1%8C%E8%A8%98 ---> # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] <!--- 教義詔 楊廣 武有七德,先之以安民。政有六本,興之以教義。高麗高元,虧失藩禮,將欲問罪遼左,恢宣勝略。雖懷伐國,仍事省方。今往涿郡,巡撫民俗。其河北諸郡及山西、山東年九十已上者,版授太守;八十者,授縣令。 ---> # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] <!--- 順治帝 告示 逆酋李自成已於通城斃命,各地鄉勇務隨我軍剿殺逆賊殘餘,凡有斬獲逆酋及擒獲逆酋交我軍者,一經驗證,按軍功論級給賞,必以示我朝皇恩浩蕩。 大清順治二年五月二十四日 恩詔 今月何日,為國曆改歲之履端,即為永昌書元之紀念?緬惟我朝民眾,三元肇慶,四始發祥。陳椒酒以飛觴,躋堂介壽;換桃符以獻歲,辟戶書新。翹望德容,河勝額手。今山河如舊,歲序更新;今天下同春,咸頒麗澤。願我朝君臣與萬民同樂,共沐化日光天,方不虛度韶華。 永昌二年新正初一 There's probably better choices here. Review. ---> # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/cfe6700e01f6fd59616a375d31aa8cd096677be1 this first ---> # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] <!--- Kangxi Dictionary Abstract - https://zh.wikisource.org/wiki/%E5%BA%B7%E7%86%99%E5%AD%97%E5%85%B8 ---> # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} ioa7s8ryjgutd1utcqbowvrtoj5dinl 4656644 4656625 2026-08-07T15:03:44Z Shira the Mogul 3560559 /* Unit 15: Literary Chinese in the Military */ boilerplates -> cleanup 4656644 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/Ultimate Justice with Xiezhi/]] # [[/The Virtue of the Fenghuang/]] # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== <!--- 三國史記 for sure! ---> <!--- 放蟬賦 by Yi Kyubo ---> <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/cfe6700e01f6fd59616a375d31aa8cd096677be1 this first ---> # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] <!--- Kangxi Dictionary Abstract - https://zh.wikisource.org/wiki/%E5%BA%B7%E7%86%99%E5%AD%97%E5%85%B8 ---> # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} 9yn9as8qj9b5ng29hkmkq7km0l138j0 4656646 4656644 2026-08-07T15:09:47Z Shira the Mogul 3560559 /* Unit 16: Nation Focus - Vietnam */ rescuing a page! 4656646 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/Ultimate Justice with Xiezhi/]] # [[/The Virtue of the Fenghuang/]] # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== <!--- 三國史記 for sure! ---> <!--- 放蟬賦 by Yi Kyubo ---> <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== # [[/Đỗ Pháp Thuận and the Southern Winds/]] # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] <!--- Kangxi Dictionary Abstract - https://zh.wikisource.org/wiki/%E5%BA%B7%E7%86%99%E5%AD%97%E5%85%B8 ---> # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} 8rqnqxkvbbjn3yj6eqgdt5uhozj913p 4656649 4656646 2026-08-07T15:14:44Z Shira the Mogul 3560559 /* Unit 19: People Focus - Manchu peoples */ 4656649 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/Ultimate Justice with Xiezhi/]] # [[/The Virtue of the Fenghuang/]] # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== <!--- 三國史記 for sure! ---> <!--- 放蟬賦 by Yi Kyubo ---> <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== # [[/Đỗ Pháp Thuận and the Southern Winds/]] # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} j3lq4ihvqalv4venhe2q3urqtm6qd6g 4656650 4656649 2026-08-07T15:19:35Z Shira the Mogul 3560559 /* Unit 5: Myths and Legends of East Asia */ 4656650 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> * [[/The Poison of Zhen/]] <!--- referenced a lot in histories ---> # [[/Ultimate Justice with Xiezhi/]] <!--- the yellow emperor met one, gao yao also used one ---> # [[/The Virtue of the Fenghuang/]] <!--- shanhaijing has a great line on this ---> # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== <!--- 三國史記 for sure! ---> <!--- 放蟬賦 by Yi Kyubo ---> <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== # [[/Đỗ Pháp Thuận and the Southern Winds/]] # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} db5ek48cyhin2i1ek8ys4uw4imaoch9 4656651 4656650 2026-08-07T15:19:47Z Shira the Mogul 3560559 /* Unit 5: Myths and Legends of East Asia */ 4656651 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/The Poison of Zhen/]] <!--- referenced a lot in histories ---> # [[/Ultimate Justice with Xiezhi/]] <!--- the yellow emperor met one, gao yao also used one ---> # [[/The Virtue of the Fenghuang/]] <!--- shanhaijing has a great line on this ---> # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== <!--- 三國史記 for sure! ---> <!--- 放蟬賦 by Yi Kyubo ---> <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== # [[/Đỗ Pháp Thuận and the Southern Winds/]] # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} 5ycbw4gic5izqnr3537npfmfj9mjvld 4656652 4656651 2026-08-07T15:20:50Z Shira the Mogul 3560559 /* Unit 7: Nation Focus - Korea */ 4656652 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/The Poison of Zhen/]] <!--- referenced a lot in histories ---> # [[/Ultimate Justice with Xiezhi/]] <!--- the yellow emperor met one, gao yao also used one ---> # [[/The Virtue of the Fenghuang/]] <!--- shanhaijing has a great line on this ---> # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== <!--- 三國史記 for sure! ---> <!--- 放蟬賦 by Yi Kyubo ---> <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> # [[/Fall Off Your Horse!/]] <!--- a famous record from 朝鮮王朝實錄 ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== # [[/Đỗ Pháp Thuận and the Southern Winds/]] # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} qtegr7yvsd784sl4cpfcyvoybshrbj2 4656654 4656652 2026-08-07T15:29:58Z Shira the Mogul 3560559 /* Unit 7: Nation Focus - Korea */ fleshing this out 4656654 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/The Poison of Zhen/]] <!--- referenced a lot in histories ---> # [[/Ultimate Justice with Xiezhi/]] <!--- the yellow emperor met one, gao yao also used one ---> # [[/The Virtue of the Fenghuang/]] <!--- shanhaijing has a great line on this ---> # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== # [[/Feigned Surrender with Ŭlchi Mundŏk/]] <!--- 乙支文德漢詩 ---> # [[/A fu with Yi Kyubo/]] # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> # [[/Fall Off Your Horse!/]] <!--- a famous record from 朝鮮王朝實錄 ---> # [[/The Diary of Yi Sun-Sin/]] <!--- 亂中日記 ---> # [[/Tales from Mount Kumo/]] <!--- 金鰲新話 ---> # [[/Pak Chiwŏn Tours the Qing/]] <!--- 熱河日記 ---> # [[/Korea's Three Kingdoms/]] <!--- 三國史記 for sure! ---> # [[/Hwang Yun-seok's Essays/]] <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== # [[/Đỗ Pháp Thuận and the Southern Winds/]] # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} ni7w6f2ll8ogjjmj9vs6i7xh55a22ev 4656659 4656654 2026-08-07T15:37:49Z Shira the Mogul 3560559 /* Unit 6: Nation Focus - Japan */ 4656659 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/The Poison of Zhen/]] <!--- referenced a lot in histories ---> # [[/Ultimate Justice with Xiezhi/]] <!--- the yellow emperor met one, gao yao also used one ---> # [[/The Virtue of the Fenghuang/]] <!--- shanhaijing has a great line on this ---> # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> # [[/A Biographical Painting of Toyotomi Hideyoshi/]] <!--- This is on Fanya Hanwen Corpus ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== # [[/Feigned Surrender with Ŭlchi Mundŏk/]] <!--- 乙支文德漢詩 ---> # [[/A fu with Yi Kyubo/]] # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> # [[/Fall Off Your Horse!/]] <!--- a famous record from 朝鮮王朝實錄 ---> # [[/The Diary of Yi Sun-Sin/]] <!--- 亂中日記 ---> # [[/Tales from Mount Kumo/]] <!--- 金鰲新話 ---> # [[/Pak Chiwŏn Tours the Qing/]] <!--- 熱河日記 ---> # [[/Korea's Three Kingdoms/]] <!--- 三國史記 for sure! ---> # [[/Hwang Yun-seok's Essays/]] <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== # [[/Đỗ Pháp Thuận and the Southern Winds/]] # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} tv2z5uqyrw0jbqotuzco72c25xws4si 4656660 4656659 2026-08-07T15:39:45Z Shira the Mogul 3560559 /* Unit 18: Buddhist Literature */ 4656660 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/The Poison of Zhen/]] <!--- referenced a lot in histories ---> # [[/Ultimate Justice with Xiezhi/]] <!--- the yellow emperor met one, gao yao also used one ---> # [[/The Virtue of the Fenghuang/]] <!--- shanhaijing has a great line on this ---> # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> # [[/A Biographical Painting of Toyotomi Hideyoshi/]] <!--- This is on Fanya Hanwen Corpus ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== # [[/Feigned Surrender with Ŭlchi Mundŏk/]] <!--- 乙支文德漢詩 ---> # [[/A fu with Yi Kyubo/]] # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> # [[/Fall Off Your Horse!/]] <!--- a famous record from 朝鮮王朝實錄 ---> # [[/The Diary of Yi Sun-Sin/]] <!--- 亂中日記 ---> # [[/Tales from Mount Kumo/]] <!--- 金鰲新話 ---> # [[/Pak Chiwŏn Tours the Qing/]] <!--- 熱河日記 ---> # [[/Korea's Three Kingdoms/]] <!--- 三國史記 for sure! ---> # [[/Hwang Yun-seok's Essays/]] <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> <!--- Possible Jurchen/Khitan focus? 耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== # [[/Đỗ Pháp Thuận and the Southern Winds/]] # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/Buddhism in Battle Standards/]] # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} 4xib70uyu12radk6831fe0npt13f6xt 4656677 4656660 2026-08-07T18:33:29Z Shira the Mogul 3560559 /* Unit 13: People Focus - Zhuang peoples */ 4656677 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/The Poison of Zhen/]] <!--- referenced a lot in histories ---> # [[/Ultimate Justice with Xiezhi/]] <!--- the yellow emperor met one, gao yao also used one ---> # [[/The Virtue of the Fenghuang/]] <!--- shanhaijing has a great line on this ---> # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> # [[/A Biographical Painting of Toyotomi Hideyoshi/]] <!--- This is on Fanya Hanwen Corpus ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== # [[/Feigned Surrender with Ŭlchi Mundŏk/]] <!--- 乙支文德漢詩 ---> # [[/A fu with Yi Kyubo/]] # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> # [[/Fall Off Your Horse!/]] <!--- a famous record from 朝鮮王朝實錄 ---> # [[/The Diary of Yi Sun-Sin/]] <!--- 亂中日記 ---> # [[/Tales from Mount Kumo/]] <!--- 金鰲新話 ---> # [[/Pak Chiwŏn Tours the Qing/]] <!--- 熱河日記 ---> # [[/Korea's Three Kingdoms/]] <!--- 三國史記 for sure! ---> # [[/Hwang Yun-seok's Essays/]] <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== # [[/Đỗ Pháp Thuận and the Southern Winds/]] # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/Buddhism in Battle Standards/]] # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} azuttu18tgj8yztjpealclm8st47kqi 4656678 4656677 2026-08-07T18:33:43Z Shira the Mogul 3560559 /* Unit 9: An Introduction to Daoism */ 4656678 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/The Poison of Zhen/]] <!--- referenced a lot in histories ---> # [[/Ultimate Justice with Xiezhi/]] <!--- the yellow emperor met one, gao yao also used one ---> # [[/The Virtue of the Fenghuang/]] <!--- shanhaijing has a great line on this ---> # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> # [[/A Biographical Painting of Toyotomi Hideyoshi/]] <!--- This is on Fanya Hanwen Corpus ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== # [[/Feigned Surrender with Ŭlchi Mundŏk/]] <!--- 乙支文德漢詩 ---> # [[/A fu with Yi Kyubo/]] # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> # [[/Fall Off Your Horse!/]] <!--- a famous record from 朝鮮王朝實錄 ---> # [[/The Diary of Yi Sun-Sin/]] <!--- 亂中日記 ---> # [[/Tales from Mount Kumo/]] <!--- 金鰲新話 ---> # [[/Pak Chiwŏn Tours the Qing/]] <!--- 熱河日記 ---> # [[/Korea's Three Kingdoms/]] <!--- 三國史記 for sure! ---> # [[/Hwang Yun-seok's Essays/]] <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/Transmitting the Dao with Yelü Chucai/]] <!---耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. https://zh.wikisource.org/wiki/%E7%8E%84%E9%A2%A8%E6%85%B6%E6%9C%83%E9%8C%84 ---> # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== # [[/Đỗ Pháp Thuận and the Southern Winds/]] # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/Buddhism in Battle Standards/]] # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} myo980k0w43xmw4cs2g8xw2fg6zxe0m 4656679 4656678 2026-08-07T18:36:28Z Shira the Mogul 3560559 /* Unit 13: People Focus - Zhuang peoples */ 4656679 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/The Poison of Zhen/]] <!--- referenced a lot in histories ---> # [[/Ultimate Justice with Xiezhi/]] <!--- the yellow emperor met one, gao yao also used one ---> # [[/The Virtue of the Fenghuang/]] <!--- shanhaijing has a great line on this ---> # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> # [[/A Biographical Painting of Toyotomi Hideyoshi/]] <!--- This is on Fanya Hanwen Corpus ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== # [[/Feigned Surrender with Ŭlchi Mundŏk/]] <!--- 乙支文德漢詩 ---> # [[/A fu with Yi Kyubo/]] # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> # [[/Fall Off Your Horse!/]] <!--- a famous record from 朝鮮王朝實錄 ---> # [[/The Diary of Yi Sun-Sin/]] <!--- 亂中日記 ---> # [[/Tales from Mount Kumo/]] <!--- 金鰲新話 ---> # [[/Pak Chiwŏn Tours the Qing/]] <!--- 熱河日記 ---> # [[/Korea's Three Kingdoms/]] <!--- 三國史記 for sure! ---> # [[/Hwang Yun-seok's Essays/]] <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/Transmitting the Dao with Yelü Chucai/]] <!---耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. https://zh.wikisource.org/wiki/%E7%8E%84%E9%A2%A8%E6%85%B6%E6%9C%83%E9%8C%84 ---> # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. Found here: https://ctext.org/wiki.pl?if=gb&res=215640&remap=gb ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Zhang Honghe/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== # [[/Đỗ Pháp Thuận and the Southern Winds/]] # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/Buddhism in Battle Standards/]] # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} tv7az9cudzyljxwwr1y3ufcs6jcjufr 4656692 4656679 2026-08-07T19:14:06Z Shira the Mogul 3560559 /* Unit 13: People Focus - Zhuang peoples */ 4656692 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/The Poison of Zhen/]] <!--- referenced a lot in histories ---> # [[/Ultimate Justice with Xiezhi/]] <!--- the yellow emperor met one, gao yao also used one ---> # [[/The Virtue of the Fenghuang/]] <!--- shanhaijing has a great line on this ---> # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> # [[/A Biographical Painting of Toyotomi Hideyoshi/]] <!--- This is on Fanya Hanwen Corpus ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== # [[/Feigned Surrender with Ŭlchi Mundŏk/]] <!--- 乙支文德漢詩 ---> # [[/A fu with Yi Kyubo/]] # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> # [[/Fall Off Your Horse!/]] <!--- a famous record from 朝鮮王朝實錄 ---> # [[/The Diary of Yi Sun-Sin/]] <!--- 亂中日記 ---> # [[/Tales from Mount Kumo/]] <!--- 金鰲新話 ---> # [[/Pak Chiwŏn Tours the Qing/]] <!--- 熱河日記 ---> # [[/Korea's Three Kingdoms/]] <!--- 三國史記 for sure! ---> # [[/Hwang Yun-seok's Essays/]] <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/Transmitting the Dao with Yelü Chucai/]] <!---耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. https://zh.wikisource.org/wiki/%E7%8E%84%E9%A2%A8%E6%85%B6%E6%9C%83%E9%8C%84 ---> # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. Found here: https://ctext.org/wiki.pl?if=gb&res=215640&remap=gb ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Li Bi/]] # [[/The Beauty of Wuyuan with Fang Ju/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== # [[/Đỗ Pháp Thuận and the Southern Winds/]] # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/Buddhism in Battle Standards/]] # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} 54bd1voziffbtt9pcfns2vo06qkkz9x 4656700 4656692 2026-08-07T20:25:13Z Shira the Mogul 3560559 /* Unit 13: People Focus - Zhuang peoples */ some lessons 4656700 wikitext text/x-wiki __notoc__ Welcome to the Wikibook for Literary Chinese (Known as 漢文 "Han Language" in East Asia or 文言 "Literary Language" in China), aimed at individuals hoping to gain a general knowledge of it before progressing into genres they wish to be acquainted with. This is not the [[Classical Chinese]] textbook, which is aimed at Chinese Zhou-Qin era texts. This text aims to shed light on post-Zhou-Qin texts across East Asia, which mimic those texts. However, as Zhou-Qin era texts served as the main body from which individuals learned, they are employed here as and when they are considered necessary or otherwise useful. It does so through a "buffet" approach, showering you, the reader, with an ocean of texts of myriad genre. ==Table of Contents== === Front matter === * [[/Introduction/]] * [[/Appendices/]] === Useful resources === These are quick grab-bags that can be useful for vocabulary-building. * [[/Antonym List/]] <!--- 文/武,大/小,厚/薄,橫/縱...---> * [[/Collocation Groups/]] <!--- e.g. 四象,三靈…… ---> * [[/Pronoun Table/]] * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等 Yan Fu's Qing-era translations for modern terms] <!--- Wikiversity has this (https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/嚴譯及部定詞等) and the below, I will effectively be translating a lot of it! ---> * [https://zh.wikiversity.org/wiki/Subject:華製新漢語及中文固有語/上古語考輯 Communicative Terms] <!--- this will be translated eventually, but right now it's bad to just leave this here. ---> === Useful primers === Across history, many primers have been made for teaching Literary Chinese to children. These are a few that are recommended for use alongside this work, ideally in flashcards. * [https://www.fdgwz.org.cn/Web/Show/11308 倉頡篇] - Cangjie's Chapters, the earliest one. It is extant, but incomplete. It contains several rare characters, and so if used, I would personally recommend doing so later, or out of interest. * 三字經 - The Three Character Classic, an excellent piece for Confucian education. Pair with 弟子规 for best results. ** 三字經(太平天國版)- For Christians, there is a version made by Hong Xiuquan from the Taiping Rebellion. Despite the context, it is a legitimately useful primer and can be used to self-teach for the Delegate's Edition of the Christian Bible. * 千字文 - The Thousand Character Classic, a remarkable piece of constrained writing that only uses each character once. Amazing for building vocabulary whilst seeing historical allusions and the like. * 五字鑑 - The Five-Character Mirror, essentially the 24 Histories of China compressed into a primer. Uses 5-character couplets, the longest in this list. * 龍文鞭影 - The Shadow of Longwen's Whip, a historical allusion trainer. Best paired with a context piece. ===Unit 0: The Han script=== This unit is intended for those with no familiarity of the Han script. It will prepare you for the units ahead, teaching largely pictographic characters. By the end of this unit, students will: * Recognise around 50 characters. * Understand how characters are composed and how this gives them meaning. * Have a basic idea of how to handwrite and/or type characters using the Cangjie Input Method. * Know some bare basics of Literary Chinese grammar (e.g. Basic word order, where adjectives go, lack of "is", 有...) Lessons: # [[/An Introduction to the Han Script/]] # [[/People, Big and Small/]] # [[/How do we write Chinese?/]] # [[/What are Chinese characters, anyway?/]] # [[/The Sun, the Moon, and the Five Elements/]] # [[/Getting Familiar with Body Parts/]] # [[/Using Numbers and Using Weapons/]] <!--- 竹戈十大中一弓廿卜---> # [[/Tilling the Fields with 有/]] <!--- 山田 ---> # [[/How Characters are Made/|How Characters are Made with Kiyohara no Sanemoto]] # [[/Cangjie Created Characters/]] <!--- Get people to use Cangjie ---> # [[/The Kangxi Radical System/]] <!--- Introduce some monoradical texts to train recognition. ---> ===Unit 1: Basic Skills=== This unit is intended for those with minimal familiarity with the Han script and no familiarity with Literary Chinese. There is a focus on simple structures, skills for dissecting common textual structures, and short-form poetry in this unit. Before starting this unit, students should: * Recognise around ~30 characters. * Can use Cangjie input. * Have given Unit 0 a cursory glance. <br> By the end of this unit, students will: * Recognise around ~100 characters. * Comprehend numbers, the Heavenly Stems, and the Earthly Branches, and be able to use them to quantify time and date. * Intuit the basic topic -> comment idea behind Literary Chinese. "This, it is..." * Understand basic function words such as 也, 而, 有, and 謂. Lessons: # [[/The All-Purpose 也/]] # [[/An Introduction to Chinese Numbers/]] <!--- It is hard to find authentic materials for this ---> # [[/One, Two, Left, and Right with Gongsun Long/]] <!--- 曰:「二有一乎?」 曰:「二無一。」 曰:「二有右乎?」 曰:「二無右。」 曰:「二有左乎?」 曰:「二無左。」 曰:「右可謂二乎?」 曰:「不可。」 曰:「左可謂二乎?」 曰:「不可。」 曰:「左與右可謂二乎?」 曰:「可。」 ---> # [[/The Heavenly Stems/]] <!--- Introduce ordinals, which will be used to demonstrate sentence patterns later. ---> # [[/Tell the Time with Earthly Branches/]] <!--- Introduce verbs and timekeeping ---> # [[/Lunar Dates with the Spring and Autumn Annals/]] <!--- Vocabulary: 歲,年,朔,月,日,來,前,初,正,春秋夏冬,曆,上,下. Consider including traditional names for months in a list. ---> # [[/Skimming for Major Events in Historical Annals/]] <!--- Don't simply use Confucius's Chunqiu: We can use texts inspired by it. E.g. 三國史記 - 十五年京城旱。秋七月,蝗。very few new characters, lots one can use. Instantly able to use. https://zh.wikisource.org/wiki/%E4%B8%89%E5%9C%8B%E5%8F%B2%E8%A8%98/%E5%8D%B701 Skimming annals is very possible and a very useful skill. Don't skip out on it. Teach students to skim read!!! ---> # [[/Dinner with the Daimyo/]] <!-- 侍宴·大友皇子 皇明光日月,帝徳載天地。 三才併秦昌,万国表臣義。 --> # [[/In Discourse with Jibong/]] <!-- 芝峰類說 倭國謂田爲畠。謂水田爲田。火田爲畑。猶我國以水田爲畓也。故官名有畠山殿。地名有畑島云。 --> # [[/Shinto FAQ with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E7%9C%9E%E9%81%93%E5%95%8F%E5%B0%8D 眞道問對 本田親徳 really good way of operationalising 乎 and much of the early grammar. 問 天帝無始無終乎。 對 天帝無始無終也。 旣以無始無終之力 與無始無終之體 造無始無終之萬物。 其功亦無始無終也。 問 天地大原在道乎。 對 天地大原實在道。 鬼神依道而立。 人民依道而活。 萬物依道而息。 This is great! ---> <!--- Some cool stuff I saw someone studying from https://zh.wikisource.org/wiki/%E8%87%B3%E5%B0%8F%E4%B8%98%E8%A5%BF%E5%B0%8F%E7%9F%B3%E6%BD%AD%E8%A8%98# https://zh.wikisource.org/wiki/%E6%A0%B8%E8%88%9F%E8%A8%98 Could be used for period focus ---> ===Unit 2: An Overview of Sinitic Poetry=== This unit will teach you how Sinitic Poetry operates; - that is, the way individuals in the Sinosphere compose poetry in Literary Chinese. Despite this language's fall out of favour in the past century, this tradition is still remarkably alive and well, and their short length makes them more accessible than elaborate prose. In this unit, you will begin from the ''Classic of Poetry'' before travelling through poems from the Tang dynasty, Singapore, Japan, Vietnam, the Ryukyu Kingdom, and Korea. When introducing poetry, I will furthermore use the language from the nation it is from to show how it is recited by its people. After discussing the Classic of Poetry, we will also be a small detour into a discussion on Ping-Ze 平仄, the Tang dynasty system of alternating tones, so to produce rhyme on tonal and phonological levels. This had a major impact on Literary Chinese poetry as a whole! By the end of this Unit, students will: * Recognise around 120 more characters. * Be able to explain how Sinitic Poetry rhymes and the themes it contains. * Be able to use function words such as 在, 無, 不, 聿, and 于/於 in poetic contexts. * Recognise the switch between 吾/我 in the subject-object positions and demonstrate it in usage. * (Chinese speakers) Be able to differentiate 于 and 於, and understand the "interest(ed) in" meaning of 好 in most circumstances. <!--- Summary of the above part about 于 and 於 for other editors: 于 and 於 were distinct words for an extremely long time and were still such to Literary Chinese writers. Their "merging" through Simplified-Traditional Chinese distinctions is a very modern thing. I will summarise their usages here, using Pulleyblank's Outline of Classical Chinese Grammar (2000); * 于 - This can mean "to go" or "to/at". 黃鳥于飛 "The yellow birds go flying". Must be post-verbal. It can also appear in 至于. * 於 - This is an all-purpose locative preposition - from "on/at/in" to "from" or even "than" (甲於乙). The implication of motion is not there at all. Must be pre-verbal. It can also appear in 之於 or be an archaic noun for a crow 於 (烏). ---> Lessons: # [[/Across the Rivers with Emperor Puliuru Guang/]] <!--- Illustrate ping-ze ---> # [[/To Study the Odes/]] # [[/A Detour into Orthodox Ping-Ze/]] <!--- 平 and 仄 are useful characters themselves. Show 仄 in the binomes 反仄,歉仄,逼仄 as it's often difficult to immediately use ---> # [[/The Restraint of Du Fu/]] # [[/The Longing of Li Bai/]] # [[/The Environment with Bukha Timur/]] # [[/Pillow Talk with Guan Yunshi/]] <!--- 紅繡鞋·貫雲石 挨著靠著雲窗同坐,偎著抱著月枕雙歌,聽著數著愁著怕著早四更過。四更過情未足,情未足夜如梭。天哪,更閏一更兒妨甚么! Uyghur author! ---> # [[/Buddhist Philosophy with Ngô Chân Lưu and Taisei Shōan/]] <!-- 元火·吳真流 木中元有火,元火復還生。 若為木無火,鉆燧何有萌。--> <!-- 杜鵑·大成聖安 夢覚孤床静 杜鵑帯雨飛 一声来近枕 何者不沾衣 --> # [[/Odes with Mō Taiei and Zheng Chengxun/]] <!-- 詠松·毛泰永 植體宜千仞,垂陰動百尋。 李膺真烈烈,和嶠自森森。 桃李何堪較,雪霜安得侵。 萬年身不老,種子又成林。 AKA Inoha Seiki 伊野波 盛紀 --> <!-- 詠班蘭·鄭成勛 南國多芳草,班蘭最有名。 深根將綠茁,長葉亦叢生。 取味迎賓合,入厨任水烹。 可憐經一用,擲棄不留情。 鄭成勛《樵隱詩集》 https://nus.edu.sg/nuslibraries/dsprojects/sg-jiutishi/poem/827 --> # [[/A Golden Cup and the Fall of a Dynasty with Yan Fu/]] # [[/On a Journey with Sadula/]] <!--- No lesson entry: 朝中措·襄陽古道灞陵橋 襄陽古道灞陵橋,詩興與秋高。 千古風流人物,一時多少雄豪。 霜清玉塞,雲飛隴首,風落江皋。 夢到鳳凰台上,山圍故國周遭。 北郊晚步 陂水荷凋晚,茅檐燕去涼。 遠林明落景,平麓淡秋光。 群牧歸村巷,孤禽立野航。 自諳閑散樂,園圃意尤長。 Jurchen poet and grandson of Emperor Shizong of Jin. He's a Zen Buddhist, so we'll go back to him later. ---> ===Unit 3: Confucianism and the World=== This is a Confucian-themed unit with a smattering of other items. You will see the odd geography of the past, early linguistic philosophy, and terrifying breakaway states! By the end of this unit, students should be able to: * Recognise around 200+ characters. * Read basic annals and histories with some dictionary assistance, and comprehend 3-character structures reliably. * Have encountered basic grammatical points such as 之、乎、者、也、而、則、乃、所、以、於、于、與、且、蓋、and 夫. ** 於 and 于 should be distinguishable. * Survive a text of at least 250 characters and read for gist. Lessons: # [[/A Brief Overview of Confucianism/]] # [[/Teaching the Annals in Qi/]] <!-- Gongyang Gao's commentary --> # [[/Is a White Horse a Horse?/]]<!-- Teach negation with 非 in 公孙龍子 and compare with 不 --> # [[/The Three Character Classic/]] # [[/Expressing Filial Conduct with Confucius and Hara Saihin/]] <!-- 次韻杏坪先生 父執有君孤不孤 相依遍接搢紳徒 区区自抱地方寸 杳杳重遊天一隅 羇雁飛鳴迷汝國 家人思夢入江都 如教志業青年遂 世上寧無逐臭夫 --> # [[/Confucianism and the Environment with Sai On/]]<!-- 木假山記 --> # [[/In Debate with Mencius/]] ===Unit 4: Women's Writing=== In this unit, women's writing from various areas of China will be explored. This is chiefly targeted at poetry and the themes within; from the feminine voice of the Classic of Poetry to the remonstrance towards the Khitan Emperor Tianzuo of Jin by his Consort Dasese. The role of women in courtly society is to be elucidated here! # [[/An Unmarried Life with Heo Nansŏrhŏn/]] <!--- 貧女吟 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 ---> # [[/Responding to Lord Trần with Hồ Xuân Hương/]] <!--- Responding to 陳光靜 Trần Quang Tĩnh 《和陳侯》 愧無才調使人驚,十載風塵貫耳鈴。 已是臨枰知敵手,莫須敲月苦殫精。 為輪為彈隨遭遇,誰鳳誰鶯任賦生。 造物於人何苟惜,明珠休向暗中呈。 莫須 is an important structure to teach here. ---> # [[/Gaze into the Autumn Night with Taisei Shōan/]] <!--- 秋夜偶成·大成聖安 長天浮爽気,月色興無窮 群犬吠山径,百蟲啼野風 悲秋秋夜永,感古古今同 自是孤窓下,凄然万慮空 ---> # [[/Visiting a Temple with Yu Xuanji/]] <!--- 遊崇真觀南樓覩新及第題名處 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 ---> # [[/Remonstrance with Dasese/]] <!--- https://zh.wikisource.org/wiki/%E8%AB%B7%E8%AB%AB%E6%AD%8C 諷諫歌·大瑟瑟 勿嗟塞上兮暗紅塵。 勿傷多難兮畏夷人。 不如塞奸邪之路兮選取賢臣。 直須臥薪嚐膽兮激壯士之捐身。 可以朝清漠北兮夕枕燕雲。 Dasese (or 萧瑟瑟) was a Khitan consort to Emperor Tianzuo of Liao. She remonstrated him as the Jurchens were beginning to encroach upon the Khitan, and was forced to commit suicide for her remonstrance. Tianzuo would soon pay for his malfeasance. ---> # [[/The Love Songs of the Odes/]] <!--- 褰裳 子惠思我,褰裳涉溱。子不我思,豈無他人?狂童之狂也且! 子惠思我,褰裳涉洧。子不我思,豈無他士?狂童之狂也且! 柏舟 彼柏舟,在彼中河,髧彼兩髦,實維我儀,之死矢靡它,母也天只,不諒人只。 汎彼柏舟,在彼河側,髧彼兩髦,實維我特,之死矢靡慝,母也天只,不諒人只。 行露 厭浥行露,豈不夙夜,謂行多露。 誰謂雀無角?何以穿我屋?誰謂女無家?何以速我獄?雖速我獄,室家不足。 誰謂鼠無牙?何以穿我墉?誰謂女無家?何以速我訟?雖速我訟,亦不女從。 ---> # [[/Rules for Women with Ban Zhao/]] <!--- https://zh.wikisource.org/wiki/%E5%A5%B3%E8%AA%A1 ---> # [[/The Tragedy of Cai Wenji/]] <!--- 悲憤詩 〔兩漢〕蔡文姬 漢季失權柄,董卓亂天常。 志欲圖篡弒,先害諸賢良。 逼迫遷舊邦,擁主以自強。 海內興義師,欲共討不祥。 卓眾來東下,金甲耀日光。 平土人脆弱,來兵皆胡羌。 獵野圍城邑,所向悉破亡。 斬截無孑遺,屍骸相撐拒。 馬邊懸男頭,馬後載婦女。 長驅西入關,迥路險且阻。 還顧邈冥冥,肝脾為爛腐。 所略有萬計,不得令屯聚。 或有骨肉俱,欲言不敢語。 失意幾微間,輒言斃降虜。 要當以亭刃,我曹不活汝。 豈復惜性命,不堪其詈罵。 或便加棰杖,毒痛參並下。 旦則號泣行,夜則悲吟坐。 欲死不能得,欲生無一可。 彼蒼者何辜,乃遭此厄禍。 邊荒與華異,人俗少義理。 處所多霜雪,胡風春夏起。 翩翩吹我衣,肅肅入我耳。 感時念父母,哀嘆無窮已。 有客從外來,聞之常歡喜。 迎問其消息,輒復非鄉里。 邂逅徼時願,骨肉來迎己。 己得自解免,當復棄兒子。 天屬綴人心,念別無會期。 存亡永乖隔,不忍與之辭。 兒前抱我頸,問母欲何之。 人言母當去,豈復有還時。 阿母常仁惻,今何更不慈。 我尚未成人,奈何不顧思。 見此崩五內,恍惚生狂痴。 號泣手撫摩,當發復回疑。 兼有同時輩,相送告離別。 慕我獨得歸,哀叫聲摧裂。 馬為立踟躕,車為不轉轍。 觀者皆噓唏,行路亦嗚咽。 去去割情戀,遄征日遐邁。 悠悠三千里,何時復交會。 念我出腹子,匈臆為摧敗。 既至家人盡,又復無中外。 城廓為山林,庭宇生荊艾。 白骨不知誰,縱橫莫覆蓋。 出門無人聲,豺狼號且吠。 煢煢對孤景,怛吒糜肝肺。 登高遠眺望,魂神忽飛逝。 奄若壽命盡,旁人相寬大。 為復強視息,雖生何聊賴。 託命於新人,竭心自勖勵。 流離成鄙賤,常恐復捐廢。 人生幾何時,懷憂終年歲。 ---> ===Unit 5: Myths and Legends of East Asia=== <!--- Shanhaijing, Zibuyu... Etc. Zhiguai literature. This aims to provide a counterpoint to what Confucius wouldn't discuss - thus Zibuyu. Going straight into Daoism isn't ideal. ---> # [[/Exploring the World of Mountains and Seas/]]<!-- Structure: 出焉 --> # [[/Oh, the Qilin!/]] <!--- Even here, the odes can be studied! ---> # [[/The Poison of Zhen/]] <!--- referenced a lot in histories ---> # [[/Ultimate Justice with Xiezhi/]] <!--- the yellow emperor met one, gao yao also used one ---> # [[/The Virtue of the Fenghuang/]] <!--- shanhaijing has a great line on this ---> # [[/The Entrapment of Hua Po/]] # [[/Nüwa Created the World/]] ===Unit 6: Nation Focus - Japan=== # [[/The Inariyama Sword/]] <!--- short and sweet! ---> # [[/Entering Japan with Takeda Shingen/]] # [[/The Oldest Inscription in Japan/]] <!--- 宇治橋断碑 ---> # [[/The End of a Rebellion/]] # [[/Shinto Teachings with Honda Chikaatsu/]] <!--- https://wikisource.org/wiki/%E9%81%93%E4%B9%8B%E5%A4%A7%E5%8E%9F 本田親徳 道之大原 ---> # [[/The Diary of Fujiwara no Teika/]] <!--- 明月記 ---> # [[/Reading the History of Japan with Prince Toneri/]] <!--- 日本書記, etc. ---> # [[/A Biographical Painting of Toyotomi Hideyoshi/]] <!--- This is on Fanya Hanwen Corpus ---> <!--- # [[/Occupying Taiwan/]] ---> <!--- I have some colonial literature on me that can be used here. ---> ===Unit 7: Nation Focus - Korea=== # [[/Feigned Surrender with Ŭlchi Mundŏk/]] <!--- 乙支文德漢詩 ---> # [[/A fu with Yi Kyubo/]] # [[/An Elegy to the Empress with Choe Ja/]] <!--- Choe Ja 元德大后輓詞·崔滋(최자) 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 ---> # [[/Language Reform with Sejong the Great/]] <!--- 訓民正音 https://github.com/ShiraTheMogul/fanyahanwen-corpus/commit/1ef2b42cc50055affaa5ef39c61b87ed31c34a60 multiple poems and descriptive terms, possibly the best capstone ---> # [[/Fall Off Your Horse!/]] <!--- a famous record from 朝鮮王朝實錄 ---> # [[/The Diary of Yi Sun-Sin/]] <!--- 亂中日記 ---> # [[/Tales from Mount Kumo/]] <!--- 金鰲新話 ---> # [[/Pak Chiwŏn Tours the Qing/]] <!--- 熱河日記 ---> # [[/Korea's Three Kingdoms/]] <!--- 三國史記 for sure! ---> # [[/Hwang Yun-seok's Essays/]] <!--- https://zh.wikisource.org/wiki/%E9%A0%A4%E9%BD%8B%E9%81%BA%E7%A8%BF 頤齋遺稿 黃胤錫 Joseon scholar! ---> ===Unit 8: Christian Literature=== # [[/A Different Three Character Classic with Hong Xiuquan/]] # [[/Friar Juan Cobo's Veritable Record/]] <!--- One of few texts from the Philippines that I have ever found! https://bnedigital.bne.es/bd/en/viewer?id=0160187c-9d9b-4f34-84d6-bc03fd310c69 ---> # [[/The Delegate's Edition/]] # [[/Nestorian Steles during the Tang/]] <!--- 大秦景教宣元至本經經幢 and 景教碑 ---> # [[/Hong Xiuquan's Bible/]] <!--- https://bible.fhl.net/ob/nob.html?book=407 ---> <!--- I don't want to focus too much on Hong Xiuquan here, so look for more material, especially from missionaries. ---> ===Unit 9: An Introduction to Daoism=== <!--- And now back to your regularly scheduled Zhuangzi/Laozi/Liezi. But with more interesting stuff. Trust! ---> # [[/Laozi Explains the Dao/]] # [[/Qingtan with Xie Daoyun/]] # [[/The Doubting Neighbour/]] # [[/Kuafu Chases the Sun/]] # [[/The Frog in a Well/]] # [[/Wu wei with King Hui of Liang/]] # [[/The Old Man that Moves the Mountains/]] # [[/Master Zhuang Dreams of Butterflies/]] # [[/Master Incapable and the Poisonous Bird/]] # [[/Transmitting the Dao with Yelü Chucai/]] <!---耶律楚材 - Served 窝阔台, 玄風慶會錄 is short and respectable enough to work with. https://zh.wikisource.org/wiki/%E7%8E%84%E9%A2%A8%E6%85%B6%E6%9C%83%E9%8C%84 ---> # [[/The Indifferent Taoist/]] <!--- northern song https://zh.wikisource.org/wiki/%E7%8E%89%E6%AD%B7%E5%AF%B6%E9%88%94 ---> <!--- Currently very stereotypical, but there's stuff to work with at least. Need to include those weird Daoist characters among other things. ---> ===Unit 10: Nation Focus - Ryukyu Kingdom=== # [[/Historical Annals with Sai On/]] <!--- Kyuko is an easy cop ---> # [[/The Enthronement of Shō Tei/]] # [[/The Twilight of Ryukyu with Shō Ten/]] # [[/A Trip to Ryukyu with Luo Sen/]] <!--- Pre-Capstone ---> <!--- 遐邇貫珍 1854-11 - 日本日記 羅森 https://archive.org/details/HEKC185411/page/n5/mode/1up A solid description of Ryukyu cultural customs in Volume 11. Absolutely incredible. 日三日火船直向東北而駛出了臺灣之外幾日不見天涯是時北風大作波浪沖天火船亦甚飄蕩而不能立見有沙鷗隨風而逐浪心直駛七日漸見小山而到琉球琉球一國長闊一百七十五里其國城在地球圖緯線赤道之北二十六度十四分經線中華北京偏東十一度二十四分自明以來世封王爵叨列藩籬其處土產不過蔬菜番薯菜油黑糖等類人民束髻大補是穿草履男女粧飾頭上祇插一簪二簪為別故少年之男女瞥目則無異及其壯也皆留鬚髯故街上長鬚之人甚多甲寅正月初一予上岸遊玩見街上兒童甚多分以銅錢各極歡喜人民亦甚謙恭民居間亦貼新春聯于門外但不見有別等繁華之事那霸有寺寺內有園是名家世宦之墳所以石刊刻姓名年號于碑上每日道人打掃供奉生花樹葉于墓前另有人家祖墳與中國之明塚無異峰巒之上樹木多植民房則以蠻石圍墻內以茅草結屋而居佳物椅棹俱無惟以草蓆屈膝而坐對火盆而吹煙民間亦有識中國言語字墨者 不張舖店惟有墟塲男不貿易婦女為之以貨易貨而外方之金銀弗尚焉然而百姓亦甚畏官長飲食亦甚粗粕甘守樸儉不務奢華亦鮮欺詐板門紙窓夜間亦不防竊曾見途中撿物亦能以返原人公門之內冷冷落落並無案牘之煩淳樸之風畧有同于上古之世我等外國之欲買什物須言于官官為代辦正月初六提督被理衛廉士等一班將官布列威嚴與予乘轎至王宮總理大臣尚宏勳為主席布政大夫馬良才為知客享宴甚豐食物多與中國無異宴後各官皆饋有紙扇烟包布帛等項是物雖粗此亦世子之恭敬外國故亞國亦以禮物而返贈之世子王宮離岸三里在于山頂是名守禮將至其宮一路亦有樹木石牌坊宮室亦甚寬大幽雅垣局可觀其處多栽鳳尾草森樹等類以障陰山邊田土樹藝五穀近海沙田水漲之後人收其沙以煎鹽此時明月當圓予覽山川亦足見一方之風景 ---> <!--- 中山世鑑 and so on. Lots of poetry too. ---> ===Unit 11: Nation Focus - Singapore=== <!--- National Library of Singapore has a poetry series that's super good! ---> ===Unit 12: Literary Chinese in Medicine=== <!--- do not endorse the medical practices discussed in these...make sure to link back to the heavenly stems here as they are associated with specific body parts. ---> # [[/The Books of the Yellow Emperor/]] <!-- 黃帝内徑 ---> # [[/Deviant Qi with Zhang Congzheng/]] <!--- https://zh.wikisource.org/wiki/%E5%84%92%E9%96%80%E4%BA%8B%E8%A6%AA ---> # [[/Anatomy with Sugita Genpaku/]] <!--- 解体新書 ---> # [[/A Lost Wu Medical Text analysed in Japan/]] <!--- 難經古義 ---> ===Unit 13: People Focus - Zhuang peoples=== <!--- https://mooc1.chaoxing.com/mooc-ans/ztnodedetailcontroller/visitnodedetail?courseId=84745403&knowledgeId=84745463&_from_=&_fromV2_=&rtag= 《峤西诗钞》 is also a really good shout. Found here: https://ctext.org/wiki.pl?if=gb&res=215640&remap=gb ---> <!--- Basically, there are Zhuang and Tangut peoples who wrote in Literary Chinese, and their inclusion here is to show that even those who made their own scripts would use this tongue. 张鸿翮 imported the character 朴 to describe a bug, for example. ---> # [[/Zhuang poetry with Li Bi/]] # [[/The Beauty of Wuyuan with Fang Ju/]] # [[/Disaster and Society with Wei Fenghua/]] # [[/Who Deserves a Biography?/]] <!--- https://wenyi.gmw.cn/2024-06/25/content_37398911.htm 一是忠实记录了汉诗创作与古壮字交融的文化现象。清代壮族诗人张鸿翮(hé)《大塘谣》(《峤西诗钞》卷二)云: 去了休。去到大塘红蓼洲。红蓼生花,不结子。绿朴生花,毬见毬。 诗中所说“绿朴”,是壮族对柚子的惯称。“柚子”,壮语发音为“bug”。根据《古壮字字典》,其对应的古壮字为“朴(㭪)”。诗人将古壮字运用到汉文诗歌创作中,刻下了明清壮汉文化交相辉映的注脚。 This sort of thing is why Zhuang and Tangut inclusion is important, as they show how flexible Literary Chinese can be. ---> ===Unit 14: People Focus - Tangut peoples=== <!--- 羅福萇 and 羅振玉 wrote studies on Western Xia / Tangut script. Look for poets and stuff. ---> ===Unit 15: Literary Chinese in the Military=== <!--- Real Sun Zi hours! 7 Military Classics are an obvious shout, but look for more stuff too. ---> # [[/Fū! Rin! Ka! Zan!/]] # [[/A Bilingual Stele of the Khitans/]] # [[/Going to war with Boyan/]] <!--- Boyan's Poem from the 元史   伯顏,蒙古巴林部人。至元十一年拜中書左丞相,總兵伐宋。官至開府儀同三司,薨贈太師,封淮安王,諡忠武。   《玉堂嘉話》:初,宋未下時,江南謠云:「江南若破,白雁來過。」當時莫喻其意。及宋亡,蓋知指丞相巴延也。   過梅嶺岡留題 馬首經從庾嶺回 【 庾嶺回 七修類稿(乾隆刊本)卷四十六作「嶺島歸」。】 ,王師到處悉平夷。擔頭不帶江南物,只插梅花一兩枝。   《七修類藳》:伯顏下江南,過金陵梅嶺岡詩云云。所以著名,亦有是善。 ---> # [[/An Edict from the Xianbei/]] # [[/The Suppression of the Kingdom of Dongning/]] <!--- 台灣鄭氏始末 https://ctext.org/wiki.pl?if=en&chapter=139938 Largely a record of wars in Dongning rather than anything about the trade etc, so it fits here. ---> # [[/The Shunzhi Emperor vs Li Zicheng/]] # [[/The Art of War/]] ===Unit 16: Nation Focus - Vietnam=== # [[/Đỗ Pháp Thuận and the Southern Winds/]] # [[/Ancestor Veneration with the Descendants of Zhu Xi/]] <!--- https://github.com/ShiraTheMogul/fanyahanwen-corpus/tree/main/corpus%2F%E8%B6%8A%E5%8D%97%E6%BC%A2%E6%96%87%2Fclean somewhere in here ---> # [[/Spreading Revolutionary Consciousness with Phan Bội Châu and Liang Qichao/]] <!--- 越南亡國史 Possibly the most important text in Vietnamese history, not even gonna lie. https://zh.wikisource.org/wiki/%E8%B6%8A%E5%8D%97%E4%BA%A1%E5%9C%8B%E5%8F%B2 ---> # [[/Academia in Literary Chinese between East and West/]] <!--- 南風雜誌 is a massive shout here. Absolutely amazing series. ---> ===Unit 17: Historical Annals and Encyclopediae=== <!--- 永樂大典 will teach how to infer from gaps in texts! 《編類》 is an incredibly interesting essay from here that can bring up the odes and Confucius's「思無邪」quote. It can prepare students for the wrath of Qing academia later. ---> # [[/An Introduction to Biographical Paintings/]] <!-- Many older paintings include biographies at the top in Literary Chinese. Students need to learn these. https://commons.wikimedia.org/wiki/File:%E6%AD%B7%E4%BB%A3%E8%81%96%E8%B3%A2%E5%8D%8A%E8%BA%AB%E5%83%8F_%E5%86%8A_%E8%AB%B8%E8%91%9B%E4%BA%AE_(Zhuge_Liang).png - Famous figure, also part of a very notable series. https://commons.wikimedia.org/wiki/File:Otomo-Sorin-2.jpg - Contains the Japanese repetition character 々 https://commons.wikimedia.org/wiki/File:Toyotomi_hideyoshi4.jpg - simply has aura --> # [[/The History of Liao, Jin, and Song with Toqto'a/]] <!--- 脱脱 ---> # [[/Two Years in the Forbidden City with Yu Deling/]] <!--- 清宮禁二年記 https://zh.wikisource.org/wiki/%E6%B8%85%E5%AE%AE%E7%A6%81%E4%BA%8C%E5%B9%B4%E8%A8%98 ---> # [[/Selected Records of the History of the Da Shun/]] <!--- Fair Use of a 2010 book written in Literary Chinese about the Da Shun dynasty. Limit to 500 characters, if that. Use to encourage recognition of Simplified variants and modern Wenyanwen. ---> # [[/Documenting the World with Terajima/]] <!--- 和漢三才図会 寺島良安, built off 三才圖會 ---> ===Unit 18: Buddhist Literature=== <!--- You would be forgiven for wondering why this is so late, but if you look at many classical Buddhist texts you'll quickly see a ton of loanwords that make it significantly more difficult to read than the average text. Thus, it goes here for now. ---> <!--- Place focus on practical stuff first. Stuff you can and WILL see in Buddhist temples. Stuff Buddhists can take away immediately. Skills-based approach feels strongest here. ---> <!--- Look at Northern Liang and Later Qin literature, as there is a ton of work by translators from India during the 16 kingdoms period, particularly those two. ---> <!--- Stuff by Bodhidharma 達摩 could be fun too https://zh.wikisource.org/wiki/Author:%E9%81%94%E6%91%A9 ---> # [[/Dipping your feet in with Wenyan Shu/]] <!--- 華亭 世尊遺法本忘言,教外別傳意已圓。 只履攜將蔥嶺去,不妨來上月明船。 ---> # [[/Buddhism in Battle Standards/]] # [[/The Seven Tathagatas/]] <!--- 南無寶勝如來 南無多寶如來 南無妙色身如來 南無廣博身如來 南無離怖畏如來 南無甘露王如來 南無阿彌陀佛 Use to introduce some core vocabulary in repetitive manner. Useful phrases from my trip to Jing'an Temple 南無本師釋迦牟尼佛 - Pay homage to the root teacher 南無大悲觀世音菩薩 - Pay homage to the goddess of mercy 廣種福田 - widely plant a meritorious field ---> # [[/Two Buddhist Temples in Shanghai/]] <!--- 留雲禪寺 雲留雲翔領畧幾許禪機此地有雲散天開真如界。 塔內塔外普示無邊圓覺是故曰塔影雙照解脫門。 歲次壬午冬月吉旦。 覺醒敬撰。 楊胡生沐手恭書。 善信印利明敬獻。 ---> <!--- 福慧宝鼎 慧明大和尚 - introduce the Buddhist timekeeping system with 佛歷 around this point. 赤烏古剎 建寺一千七百六十周年紀念 古剎三國建 滬瀆有重玄 石佛音淨現 聖跡顯重元 唐時稱永泰 宋敕名靜安 聖祖留佛闡 仲師移伽藍 元收八景偈 明鑄鐘聲梵 清樹化羅漢 選賢十方讚 佛日普光明 福慧共修善 鼎運昌隆際 轉正法輪緣 歲次丁亥住持慧明監製 ---> # [[/Foreseeing Monkhood with Yi Xing/]] <!--- 看命一掌金 ---> # [[/A Trip to Western Xia with Zhi Guang and Hui Zhen/]] <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%91%AA%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> <!--- https://zh.wikisource.org/wiki/%E5%AF%86%E5%92%92%E5%9C%93%E5%9B%A0%E5%BE%80%E7%94%9F%E9%9B%86 ---> # [[/Jizang's Three Discourses/]] <!--- https://zh.wikisource.org/wiki/%E4%B8%89%E8%AB%96%E7%8E%84%E7%BE%A9 ---> <!--- I saw these texts being quoted and thus should consider them in some capacity. 《般若波羅蜜多心經》 《金剛般若波羅蜜經》 《一切智光明仙人慈心因緣不食肉經》 《妙法蓮華經》 《大般涅槃經》 《大方等大集經》 《大毘盧舍那成佛神變加持經蓮華胎藏悲生曼荼羅廣大成就儀軌供養方便會》/ 胎藏曼荼羅 《佛說救拔焰口餓鬼陀羅尼經》 《雜阿含經》 Look at Japan's 五山文学 ---> ===Unit 19: People Focus - Manchu peoples=== # [[/Qing dynasty Poetry with Nara Singde/]] <!--- 飲水詞 納蘭性德 https://zh.wikisource.org/wiki/Author:%E7%B4%8D%E8%98%AD%E6%80%A7%E5%BE%B7 ---> # [[/Amassing Words with the Kangxi Emperor/]] # [[/Amassing Literature with the Qianlong Emperor/]] <!--- Siku Quanshu abstract https://zh.wikisource.org/wiki/%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E7%B8%BD%E7%9B%AE%E6%8F%90%E8%A6%81 ---> <!--- Yongzheng Emperor's Poetry https://zh.wikisource.org/wiki/Author:%E9%9B%8D%E6%AD%A3%E5%B8%9D 《和碩怡賢親王祭文》 Also include 滿洲國 stuff to show the fall of the Qing and attempts to preserve it through becoming a Japanese puppet state. It is important to show how Literary Chinese can be misused as well. 滿洲國建國宣言 is a good shout, as is 法制 to prepare students who may be interested in Taiwan legal stuff later down the road. https://zh.wikisource.org/wiki/Category:%E6%BB%BF%E6%B4%B2%E5%9C%8B ---> # [[/Paintings and Beauty with Puru Aisin-Gioro/]] <!--- Saw these in Shanghai Museum with some writing, seemed really cool. Teaches another skill. ---> ===Unit 20: Qing-RoC Literature=== <!--- many writers here, will be difficult to sift through. Include 四库全書 abstracts and stuff here. ---> # [[/Jewish Refugees in Shanghai/]] <!--- Show passports, certificates, etc, from the Jewish Refugee Museum, anonymised. ---> # [[/A Literary Chinese Abstract/]] <!--- Abstracts from siku quanshu, probably want others ---> # [[/Lament with Lu Ruoteng/]] <!--- 《疑猜》盧若騰,東寧國 盟誓變為交質子,春秋戰國風如此;末世上下相疑猜, 更質妻子防逃徙。 此法只可羈庸奴,若遇梟雄術窮矣;妻可再娶子再育, 安能長坐針氈裏。 我贈一法君記存;推心置腹人知恩;眾人畜之眾人報, 幾個國士在君門。 盧若騰撰,陳漢光編輯,《島噫詩》,臺灣文獻叢刊第二四五種(臺北:臺灣銀行經濟研究室,1968年)21頁。 ---> # [[/Common Linguistics Knowledge in the RoC/]] <!--- 音韻常識 ---> ==References used for this page== * Yang, B. (2016). 文言语法 [Literary Chinese Grammar] (1st ed). 中华书局 [Zhonghua Book Company]. ISBN: 978-7-101-11619-9 * Priestley, K. E., & Shou-jung, C. (1962). China’s Men of Letters, Yesterday and Today. Dragonfly Books. {{BookCat}} 8n2vqfq91176upzg0m15e31gunvpmbz General Literary Chinese from Scratch/An Introduction to the Han Script 0 481711 4656693 4638218 2026-08-07T19:22:31Z Shira the Mogul 3560559 4656693 wikitext text/x-wiki {{BookCat}} Hello! If you're here, you want to learn Literary Chinese. You have probably heard tales of how "hard" this writing system is, and this unit is designed to make it easier so you can get up and use it. ==Lesson== [[File:Shang dynasty inscribed scapula.jpg|thumb|300px|An [[w:Oracle bone|Oracle bone]] written by [[w:Zheng (diviner)|Zheng]] (爭).]] The Han script is built on pictures drawn by ancient people around 5,000 years ago, around the time of the Shang dynasty when it was just a tribe. It is truly ancient, and that means lots of writing for you to access here. A good bunch of the most basic words are still abstract versions of the pictures those ancient people drew. Here's three: * 木 - Tree * 一 - One * 二 - Two What do you think "three" would be? With that knowledge in mind, look at these sentences: <blockquote> 一物曰木。二木曰林。三木曰森。 </blockquote> You can probably guess what this means based on context. Gloss: One thing (is) called (a) tree. Two trees (are) called (a) forest. Three trees (are) called (a) heavy forest. You now know several things: * You know where numbers go. * You know how the words in basic sentences are ordered. * You know how to say something is called something. * You know what 林 and 森 are in Chinese. * You know that we don't need "is/are" or "a/the" in this language! Good luck in the next few lessons! Try looking for [[:wikt:Category:Han pictograms|more characters like this]] (like 火 and 人!) via Wiktionary. ==Cangjie codes== If you are not yet familiar with the [[w:Cangjie input method|Cangjie input method]], this will come later. * [[:wikt:一|一]] - 一 (M) * [[:wikt:二|二]] - 一一 (MM) * [[:wikt:三|三]] - 一一一 (MMM) * [[:wikt:木|木]] - 木 (D) * [[:wikt:林|林]] - 木木 (D) * [[:wikt:森|森]] - 木木木 (D) * [[:wikt:曰|曰]] - 曰 (A) * [[:wikt:物|物]] - 竹手心竹竹 (HQPHH) Notice something consistent here? [[Category:Book:General Literary Chinese from Scratch]] 13qr6fqvi8hb8mpq2xh158q1ml2vtlr General Literary Chinese from Scratch/How do we write Chinese? 0 483677 4656667 4640436 2026-08-07T17:35:33Z Shira the Mogul 3560559 /* */ 4656667 wikitext text/x-wiki Hello! Now that you know a few characters, let's talk about how we write them. [[File:永-order.gif|200px|thumb|永, meaning "forever" or "eternity".]] The character you see here means "forever" or "eternity," and is pronounced ''yong'' in Chinese. It is one of few characters that uses all eight types of strokes that make up every character in regular script (''Kaiti'' {{lang|zh|楷體}}). [[File:Yong's skeleton.png|thumb|200px|Each of the strokes, numbered.]] These strokes are as follows:{{efn|Here, I use the modern Chinese names, but they vary across era and region. Do not be beholden to them - just know what they are.}} * {{lang|zh|㇔}} - "''Dian''," a small down-left stroke. * {{lang|zh|㇐}} - "''Heng''," a horizontal stroke. * {{lang|zh|㇑}} - "Shu," a vertical stroke. ** {{lang|zh|㇚}} - "''Gou''," is a downward-vertical version of ''shu'', ending in a slight "hook" at the bottom. * {{lang|zh|㇀}} - "''Ti''," a right-up flick stroke. * {{lang|zh|㇁}} - "''Wan''," a curve. * {{lang|zh|㇒}} - "''Pie''," a curve that falls to the left. * {{lang|zh|㇏}} - "''Na''," a curve that falls to the right, starting thin and ending flat. Let's see them in action. <gallery class="skin-invert" widths="100px" heights="100px"> File:丶-order.gif File:一-order.gif File:丨-order.gif File:丿-order.gif File:乛-order.gif File:乙-order.gif File:亅-order.gif File:乚-order.gif </gallery> If you look at ''yong'', you will see that all the above strokes are used in some capacity. I strongly recommend you practice this character the most out of all you have right now. Let's look at the rules being followed with these strokes. Typically, when writing a character, the following rules are followed:<ref>Björkstén, J. (1994). Learn to Write Chinese Characters. Yale University Press. {{ISBN|0-300-05771-7}}.</ref><ref>Zhou, R. (2021). 永字八法: 书法艺术讲义 [yǒngzìbāfǎ shūfǎ yìshù jiǎngyì] (L. Zhou, Ed.; 4th corrected ed.). 广西师范大学出版社 [Guangxi Normal University Press].</ref> # Horizontal strokes are written before vertical ones. ## For example, {{lang|zh|十}} "ten" # Left-falling strokes are written before right-falling ones. ## For example, with {{lang|zh|人}} as you learned in the last lesson, you would write the left stroke first. # Characters are written from top to bottom. ## For example, when writing {{lang|zh|三}}, as you learned in the first lesson, you write the three strokes from top-to-bottom. # Characters are written from left to right. ## If we turn {{lang|zh|三}} on its side and add a ''wan'', we get {{lang|zh|川}} "river," which would be written left-to-right. # If a character is framed from above, the frame is written first. ## {{lang|zh|网}} "net" is a good example of this: First, you write the frame, then the rest of it. # If a character is framed from below, the frame is written last. ## {{lang|zh|凶}} "omen, vicious, peril" does this: First, you write the cross, then the box holding it. # Frames are closed last. ## When writing {{lang|zh|日}} "sun, day," the frame holding the first ''heng'' {{lang|zh|㇐}} will be closed after it is already written. # In a symmetrical character, the middle is drawn first, then the sides. ## {{lang|zh|水}} "water" and {{lang|zh|小}} "small" work this way. You can also see this applied in ''yong'' above. It should be stressed that this is very general, and some characters may violate these rules or even use strange strokes. Don't worry about it too much: Unless you want to learn super-standard ''kaiti'', historical fonts, or calligraphy, you will not need to go super into it. Above all else, find what works for you, and then start writing. These strokes make up ~214 components as documented by Mei Yingzhuo ({{lang|zh|梅膺祚}}) in the ''Zihui'' ({{lang|zh|字彙}}) dictionary during the Ming dynasty of China. While this is a lot, they are worth learning over time to memorise characters more effectively. Take this sentence, made as an example: <blockquote> {{lang|zh|土在地均}} ''Soil exists on ground-level''<br> "Soil exists on level ground"<br> </blockquote> The first character appears in the latter three as a component. Try writing it out yourself, guessing which strokes you need to perform. We will go into this more in a later lesson. For now, we just want to see you writing. Now that you understand how we write Chinese, try writing the characters you have learned before, and in this lesson, using these rules. Take it slow, day by day, and most of all, relax. Recall that many people use this system every day: It is for humans! ==Notes== {{notelist}} ==References== {{reflist}} [[Category:Book:General Literary Chinese from Scratch]] 77p5fpdadt981al8kyx2upf1ed9vbhm Chess Opening Theory/1. d4/1...c5/2. d5/2...e5/3. e4 0 483939 4656580 4640479 2026-08-07T12:12:18Z ~2026-43603-79 3619797 4656580 wikitext text/x-wiki I donot want to write . it is a lot of space. {{BookCat}} g2lag02ocfrgdwf9fv0dp07xeakjv0g Abstract Algebra/Alphabet field 0 484908 4656712 4655808 2026-08-07T21:34:25Z Rgdboer 1021217 alpha primitive root of f 4656712 wikitext text/x-wiki Prerequisites (recommended): * [[Abstract Algebra/Fields]] * [[Abstract Algebra/Rings, ideals, ring homomorphisms]] [[File:Cube_5.png|thumb|right|200px|The letters of the English alphabet correspond to places in a 3x3x3 cube where one position is occupied by zero or space.]] The study of algebraic number theory shows that there is a finite field for every power of a prime number. Therefore, the English alphabet, supplemented by a space, is a set of twenty- seven elements, three to the third power, so there is an algebraic field with elements in bijective correspondence with it. One needs the field with three elements, <math>Z_3</math>, to construct the larger field. Note that in <math>Z_3</math> one has modular arithmetic for which three is zero, four is one, and two is minus one. The field of twenty-seven elements has a group of units of twenty-six elements. Constructing the field amounts to generating the group as a cyclic group. Here another modulus arithmetic is used in a residue class ring. Start with the infinite-dimensional ring of polynomials <math>Z_3[X]</math> and consider the ideal in it generated by the polynomial <math>f(X) = X^3 + 2X + 1: \quad Z_3 \ /\ (f(X)).</math> Polynomial f represents the class of zero in the ring of residues. f(X) = 0 means <math>X^3 = -2X -1 = X + 2.</math> The cyclic group is generated by powers of a root of f(X) = 0, and, whenever the cube of X appears, it is replaced with X + 2. If &alpha; is a primitive root of f, then <math>\{\alpha^n\}_{n=0}^{25} = C_{26}</math> is the group of units of the field. Recall <math>\alpha^3 = \alpha + 2.</math> The twenty-six trinomials in &alpha; correspond to the alphabet as follows: <math>\begin{pmatrix}0 & A & N \\B & J & D \\ O & Q & W \end{pmatrix}\quad \begin{pmatrix}C & V & M \\K & G & L \\ E & S & H \end{pmatrix}\quad \begin{pmatrix}P & R & I \\Z & U & F \\ X & Y & T \end{pmatrix}</math> These 3x3 squares correspond to polynomials with <math>0 \times \alpha^2,\ \ 1 \times \alpha^2, \ \ 2 \times \alpha^2</math> respectively. A=1, B=&alpha;, C=&alpha;^2, and D=&alpha;+2. The three squares may be assembled into a 3x3x3 cube, representing the three-dimensional vector space over the field with three elements. This vector space reveals the additive structure of the alphabet field: addition is component-wise and modulo three. In a field, every nonzero element has a multiplicative inverse. Here A and N are their own inverses. Otherwise, note :<math>1 = \alpha^{26} = \alpha^j \times \alpha^{26-j} </math> for 0 < j < 26. The following pairs are multiplicative inverses of each other in the alphabet field: :BZ CY DX EW FV GU HT IS JR KQ LP MO. For example, MO = <math>\alpha^{12} \times \alpha^{14} = (\alpha^2 + 2) 2\alpha = 2\alpha^3 + 4\alpha = \alpha + 2(\alpha + 2) = 1.</math> {{BookCat}} 9bvcgf01a3rcujrhkib1ndr5ntb40ow General Literary Chinese from Scratch/The Environment with Bukha Timur 0 485042 4656607 4656062 2026-08-07T14:28:32Z Shira the Mogul 3560559 4656607 wikitext text/x-wiki Comment to be written. ==Background== Bukha Timur was a Mongol writer from the Uyghur Kingdom of Gaochang. == Text == ===西湖竹枝詞·布哈特穆爾=== <poem> 湖上春歸人未歸,桃紅柳緑黄鶯飛。 桃花落時多結子,楊花落處秪沾衣。 </poem> ===宫词·布哈特穆爾=== <poem> 玉樓珠箔晚天涼,秋色依稀滿建章。 金井梧桐霜葉盡,自隨流水出宮牆。 </poem> ==References== * 《御選四朝詩》Available at: https://zh.wikisource.org/wiki/%E5%BE%A1%E9%81%B8%E5%9B%9B%E6%9C%9D%E8%A9%A9_(%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E6%9C%AC) {{BookCat}} gbsj22n9zliw77x1w83z4xuid2giswa 4656611 4656607 2026-08-07T14:34:36Z Shira the Mogul 3560559 4656611 wikitext text/x-wiki Comment to be written. ==Background== Bukha Timur was a Mongol writer from the Uyghur Kingdom of Gaochang. == Texts == ===西湖竹枝詞·布哈特穆爾=== <poem> 湖上春歸人未歸,桃紅柳緑黄鶯飛。 桃花落時多結子,楊花落處秪沾衣。 </poem> ===宫词·布哈特穆爾=== <poem> 玉樓珠箔晚天涼,秋色依稀滿建章。 金井梧桐霜葉盡,自隨流水出宮牆。 </poem> ===立木海上刻詩·耶律圖欲=== Yelü Tuyu, a Khitan Confucian scholar, also discussed scenery. What parallels can you draw between this poem and Bukha Timur's? <poem> 小山壓大山,大山全無力。 羞見故鄉人,從此投外國 </poem> ==References== * 《御選四朝詩》Available at: https://zh.wikisource.org/wiki/%E5%BE%A1%E9%81%B8%E5%9B%9B%E6%9C%9D%E8%A9%A9_(%E5%9B%9B%E5%BA%AB%E5%85%A8%E6%9B%B8%E6%9C%AC) * 《立木海上刻詩·耶律圖欲》Available at: https://zh.wikisource.org/wiki/%E7%AB%8B%E6%9C%A8%E6%B5%B7%E4%B8%8A%E5%88%BB%E8%A9%A9 {{BookCat}} pwqcurn633gzgurvnlvg06kmv5rv68n General Literary Chinese from Scratch/Entering Japan with Takeda Shingen 0 485048 4656616 4656070 2026-08-07T14:44:11Z Shira the Mogul 3560559 4656616 wikitext text/x-wiki [[File:Takeda Shingen.jpg|thumb|200px|武田信玄]] Comment to be written. <!--- 似 is a really useful thing to teach early on. ---> ==Text== ===便面蘆間有漁·武田信玄=== <poem> 山色水光烟接天,漁翁江上棹蘆辺 丹青若写得勝景,万里風波一釣船 </poem> ===便面半月照梅花·武田信玄=== <poem> 蘆葦清風垂頂絲,窺魚白鷺水生涯 江南記得曾遊夕,似見梨花院落時 </poem> ==References== * 島森哲男. (2015). 武田信玄漢詩校釈. 宮城教育大学紀要, 49, 333–352. https://mue.repo.nii.ac.jp/records/440 {{BookCat}} c7hsptecrz0nzn7tcy8zuntz5yjxpja Scratch Virtual Machine/Blocks 0 485064 4656665 4656294 2026-08-07T17:30:01Z Some helpful person 3510188 4656665 wikitext text/x-wiki This section records the behavior of every Scratch block implemented in the Scratch 3.0 VM and common modifications. Each category of blocks has a subpage, with a section for each block including a description, list of steps taken, and pseudocode. ({{Abbr|WIP.|Work in progress.}}) {{/Navbox|state=expanded}} {{BookCat}} 2o9raov2cwrjd0g3knbvyfmy71mup96 4656672 4656665 2026-08-07T17:56:20Z Some helpful person 3510188 4656672 wikitext text/x-wiki This section records the behavior of every Scratch block implemented in the Scratch 3.0 VM and common modifications. Each category of blocks has a subpage, with a section for each block including a description, list of steps taken, and pseudocode. ({{Abbr|WIP.|Work in progress.}}) {{/Navbox|state=uncollapsed}} {{BookCat}} 3hids15kyevhfxq9nuce07m0r2f2dnu Scratch Virtual Machine/Features 0 485073 4656686 4656196 2026-08-07T19:01:53Z Some helpful person 3510188 4656686 wikitext text/x-wiki At first glance, Scratch is a simple visual block-based programming language. However, one may not realize the wide range of features Scratch supports, and thus what a conforming virtual machine running Scratch should also support. A fully functional Scratch environment can: * Execute scripts * Retain and operate on information in a runtime * Render and manipulate multiple raster and vector images on a screen (officially at least 30 times per second) * Play and manipulate several sounds simultaneously (supporting stereo audio) * Receive input from a microphone * Access the current date to the millisecond (independent of time zone) * Detect the user's Scratch username (if they are logged in) * Connect to external servers over the Internet (for cloud variables, text to speech, translation, etc., or otherwise achieve these functions in a local way) * Interact with supported hardware devices over Bluetooth via Scratch Link protocols Despite all of this functionality, the official behavior of Scratch is largely determined by the Scratch 3.0 Virtual Machine. This is somewhat reversed from other programming languages where the virtual machine is made to conform to the language. Later chapters explain how the Scratch 3.0 Virtual Machine implements Scratch, so that it may theoretically be faithfully reimplemented elsewhere from this very book! ==References== {{BookCat}} om15bsf9ku8q9gfrgm9hrwr9d0c64h3 Statistics for Sociologists 0 485134 4656597 4656566 2026-08-07T14:12:26Z Rcragun 41177 /* Table of Contents */ 4656597 wikitext text/x-wiki == Table of Contents == {| class="wikitable" | align=right |- | {{print version}} |- | {{PDF version|Statistics for Sociologists}} |} * '''Statistics for Sociologists: An Introduction Using R and the General Social Survey''' * '''Part I: Foundations''' ** [[/Chapter 1: Why Statistics? Making Sense of Social Life with Data/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 2: Getting Started with R and RStudio/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 3: The General Social Survey - What It Is and How to Use It/]] {{stage short|00%|August 6, 2026}} ** [[/Chapter 4: Types of Variables and Levels of Measurement/]] {{stage short|00%|August 6, 2026}} * '''Part II: Working with Data''' ** [[/Chapter 5: Loading, Exploring, and Cleaning GSS Data/]] {{stage short|00%|August 6, 2026}} ** [[/Chapter 6: Recoding and Transforming Variables/]] {{stage short|00%|August 6, 2026}} * '''Part III: Descriptive Statistics''' ** [[/Chapter 7: Frequency Distributions and Visualizing Data/]] {{stage short|00%|August 6, 2026}} ** [[/Chapter 8: Measures of Central Tendency/]] {{stage short|00%|August 6, 2026}} ** [[/Chapter 9: Measures of Variability/]] {{stage short|00%|August 6, 2026}} ** [[/Chapter 10: The Normal Distribution and Areas Under the Curve/]] {{stage short|00%|August 6, 2026}} ** [[/Chapter 11: Sampling Distributions, Standard Error, and Statistical Power/]] {{stage short|00%|August 6, 2026}} ** [[/Chapter 12: Confidence Intervals/]] {{stage short|00%|August 6, 2026}} * '''Part IV: Inferential Statistics''' ** [[/Chapter 13: Hypothesis Testing, t-Tests, and Effect Sizes/]] {{stage short|00%|August 6, 2026}} ** [[/Chapter 14: Chi-Square Tests and Effet Sizes/|Chapter 14: Chi-Square Tests and Effect Sizes]] {{stage short|00%|August 6, 2026}} ** [[/Chapter 15: ANOVA and Effect Sizes/]] {{stage short|00%|August 6, 2026}} ** [[/Chapter 16: Bivariate Regression and Effect Sizes/]] {{stage short|00%|August 6, 2026}} ** [[/Chapter 17: An Introduction to Bayesian Thinking/]] {{stage short|00%|August 6, 2026}} ** [[/Chapter 18: Putting It All Together - Replicating Sociological Research/]] {{stage short|00%|August 6, 2026}} ==Instructor Resources== * [[/Noted Contributors/]] * [[/Course Adoptions/]] (if you adopt this text for your course, please make a note of it on this page) {{BookCat}} cxzd06nobojvydcwmqj3gyd35x3k5pw 4656600 4656597 2026-08-07T14:16:24Z Rcragun 41177 updated one chapter title and added completeness indicators 4656600 wikitext text/x-wiki == Table of Contents == {| class="wikitable" | align=right |- | {{print version}} |- | {{PDF version|Statistics for Sociologists}} |} * '''Statistics for Sociologists: An Introduction Using R and the General Social Survey''' * '''Part I: Foundations''' ** [[/Chapter 1: Why Statistics? Making Sense of Social Life with Data/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 2: Getting Started with R and RStudio/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 3: The General Social Survey - What It Is and How to Use It/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 4: Types of Variables and Levels of Measurement/]] {{stage short|75%|August 6, 2026}} * '''Part II: Working with Data''' ** [[/Chapter 5: Loading, Exploring, and Cleaning GSS Data/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 6: Recoding and Transforming Variables/]] {{stage short|75%|August 6, 2026}} * '''Part III: Descriptive Statistics''' ** [[/Chapter 7: Frequency Distributions and Visualizing Data/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 8: Measures of Central Tendency/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 9: Measures of Variability/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 10: The Normal Distribution and Areas Under the Curve/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 11: Sampling Distributions, Standard Error, and Statistical Power/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 12: Confidence Intervals/]] {{stage short|75%|August 6, 2026}} * '''Part IV: Inferential Statistics''' ** [[/Chapter 13: Hypothesis Testing, t-Tests, and Effect Sizes/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 14: Chi-Square Tests and Effet Sizes/|Chapter 14: Chi-Square Tests and Effect Sizes]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 15: ANOVA and Effect Sizes/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 16: Bivariate Regression, Correlation, and Effect Sizes/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 17: An Introduction to Bayesian Thinking/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 18: Putting It All Together - Replicating Sociological Research/]] {{stage short|75%|August 6, 2026}} ==Instructor Resources== * [[/Noted Contributors/]] * [[/Course Adoptions/]] (if you adopt this text for your course, please make a note of it on this page) {{BookCat}} mau53uocrwgg93gtdawt5vxotn93lfl 4656707 4656600 2026-08-07T20:52:20Z Rcragun 41177 Updated percentage complete on Chapter 1 4656707 wikitext text/x-wiki == Table of Contents == {| class="wikitable" | align=right |- | {{print version}} |- | {{PDF version|Statistics for Sociologists}} |} * '''Statistics for Sociologists: An Introduction Using R and the General Social Survey''' * '''Part I: Foundations''' ** [[/Chapter 1: Why Statistics? Making Sense of Social Life with Data/]] {{stage short|100%|August 6, 2026}} ** [[/Chapter 2: Getting Started with R and RStudio/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 3: The General Social Survey - What It Is and How to Use It/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 4: Types of Variables and Levels of Measurement/]] {{stage short|75%|August 6, 2026}} * '''Part II: Working with Data''' ** [[/Chapter 5: Loading, Exploring, and Cleaning GSS Data/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 6: Recoding and Transforming Variables/]] {{stage short|75%|August 6, 2026}} * '''Part III: Descriptive Statistics''' ** [[/Chapter 7: Frequency Distributions and Visualizing Data/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 8: Measures of Central Tendency/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 9: Measures of Variability/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 10: The Normal Distribution and Areas Under the Curve/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 11: Sampling Distributions, Standard Error, and Statistical Power/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 12: Confidence Intervals/]] {{stage short|75%|August 6, 2026}} * '''Part IV: Inferential Statistics''' ** [[/Chapter 13: Hypothesis Testing, t-Tests, and Effect Sizes/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 14: Chi-Square Tests and Effet Sizes/|Chapter 14: Chi-Square Tests and Effect Sizes]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 15: ANOVA and Effect Sizes/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 16: Bivariate Regression, Correlation, and Effect Sizes/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 17: An Introduction to Bayesian Thinking/]] {{stage short|75%|August 6, 2026}} ** [[/Chapter 18: Putting It All Together - Replicating Sociological Research/]] {{stage short|75%|August 6, 2026}} ==Instructor Resources== * [[/Noted Contributors/]] * [[/Course Adoptions/]] (if you adopt this text for your course, please make a note of it on this page) {{BookCat}} kh08r92yukq4uk6yri25kuunsi3lf4c Statistics for Sociologists/Chapter 1: Why Statistics? Making Sense of Social Life with Data 0 485135 4656584 4656565 2026-08-07T14:01:35Z Rcragun 41177 small updates 4656584 wikitext text/x-wiki = Chapter 1: Why Statistics? Making Sense of Social Life with Data = Ask a room full of sociology students why they're taking a statistics course, and you will get some version of the same three answers: it's required, they heard it's "not that bad," and they are visibly regretting their choice of major. This chapter exists to argue, gently but persistently, that all three of those students are wrong about at least one thing. Statistics is not a hoop. It is one of the more interesting tools ever built for answering a question sociology cares about more than almost any other discipline: what is actually going on with people, as opposed to what we assume is going on with people. That distinction — between what's actually going on and what we assume is going on — is the entire subject of this book. <!-- IMAGE: An engaging opening image for the chapter — something evocative of "data hiding in plain sight" within everyday social life (a crowded public space, a subway platform, a stadium crowd) rather than a literal chart. Sets tone before any statistics appears. --> == What Statistics Is (and What It Isn't) == Statistics is not magic. It will not tell you what people ''should'' do, whether capitalism is good, or why your cousin holds the political views he holds. It cannot generate a fact from nothing, and it cannot rescue a badly designed study. Statistics is, more modestly, a set of tools for describing patterns in data and for deciding how much confidence those patterns deserve. It is also not "just arithmetic," despite what the equation-heavy chapters later in this book might suggest to a skeptical reader flipping ahead. Arithmetic tells you that 2 + 2 = 4. Statistics tells you whether the four-point gap in reported happiness between two groups of people is a real social pattern worth taking seriously, or the kind of noise you'd expect to see even if nothing were going on at all. That second question — is this real, and does it matter — is a much more interesting question than any of the arithmetic required to answer it, and it is the question this entire book is organized around. (If statistics really were just arithmetic, this book would be four pages long, and one of those pages would be a lecture on the order of operations.) Here is a useful mental model: statistics is what you get when you refuse to trust your gut about how the social world works until you've checked. == Anecdote vs. Evidence == Humans are excellent at building confident, coherent stories out of very small amounts of information. This was probably a useful skill on the savanna. It is a much less useful skill for understanding society, because society does not fit inside any one person's field of view. Consider a genuinely humbling body of research on how badly people estimate basic facts about their own societies. Survey researchers have repeatedly asked people in wealthy democracies to guess things like the percentage of the population that is Muslim, the percentage of teenagers who become pregnant each year, or the share of national wealth held by the top 1%. The results are not close. People in the United States, for instance, have historically guessed the Muslim share of the population at somewhere around 15%; the actual figure is about 1%.<ref>Ipsos MORI, "Perils of Perception" surveys, various years.</ref> This is not a small rounding error. This is being off by a factor of fifteen while feeling completely confident about it. The point is not that people are stupid. The point is that human intuition about large-scale social patterns is built from whatever we happen to have personally encountered — the news we watch, the neighborhood we live in, the one loud cousin at Thanksgiving — and none of that adds up to a representative picture of anything. Anecdote feels like evidence. It is not evidence. It is a sample size of one, dressed up in a confident tone of voice. Your uncle at Thanksgiving may be extremely confident about what "everyone" thinks; he is, statistically speaking, an n of one, and no peer-reviewed journal on Earth will publish him, no matter how loudly he clears his throat before the next point. Statistics exists because "I feel like this is true" and "this is true" are different claims, and sociology needs a way to tell them apart. == What Sociology Needs Statistics For == Sociologists use statistics for a handful of related but distinct jobs: * '''Describing populations.''' How many people hold a given belief? What does the income distribution actually look like? Description sounds boring until you realize almost no one's intuitive guess about these numbers is correct. * '''Testing hypotheses.''' Does education predict income? Does religious attendance predict happiness? Sociological theory generates predictions; statistics is how those predictions get checked against reality instead of just sounding plausible in a seminar room. * '''Identifying patterns.''' Social life is full of relationships between variables that are invisible at the individual level and only show up once you look at enough people at once — this is arguably the founding insight of the entire discipline, going back to Durkheim noticing that suicide, an intensely personal act, follows remarkably stable social patterns.<ref>Durkheim, É. (1951). ''Suicide: A Study in Sociology'' (J. A. Spaulding & G. Simpson, Trans.). Free Press. (Original work ''Le Suicide: Étude de sociologie'' published 1897)</ref> Sociologists have, in other words, been doing data science since roughly 1897; we just called it "reading very carefully" and didn't have a venture capitalist offering to fund it. * '''Informing policy.''' Governments and organizations make decisions that affect millions of people based on what the data seem to show. Getting the statistics wrong has consequences that extend well past a bad grade on a problem set. Throughout this book, you will do all four of these things using the General Social Survey, a dataset that has been asking Americans about their lives, beliefs, and behaviors since 1972. You'll meet it properly in Chapter 3. For now, just know that everything from here forward is aimed at letting you ask real questions about real people and get real answers — not perfect answers, but honest ones, with the uncertainty attached. == A Field That Occasionally Embarrasses Itself: The Replication Crisis == Here is where this book earns some credibility by admitting something uncomfortable: a fair amount of what gets published across the social and behavioral sciences — sociology fully included, not just the neighbors down the hall in the psychology department — does not hold up when someone else checks it. Starting around 2011, researchers began systematically trying to replicate published findings — that is, running the same study again, often with fresh data and more statistical power, to see if it produced the same result. The first wave of this work focused on psychology: a large-scale effort by the Open Science Collaboration attempted to replicate 100 studies from top psychology journals, and fewer than half succeeded.<ref>Open Science Collaboration, "Estimating the Reproducibility of Psychological Science," ''Science'', 2015.</ref> For years afterward, "the replication crisis" got treated in casual conversation as psychology's problem to solve, which let everyone else in the social sciences feel a little smug about it. That smugness became harder to justify in 2026. A massive replication effort — the DARPA-funded SCORE project — attempted to replicate 274 specific findings drawn from 164 papers published between 2009 and 2018, across six fields: business, economics, education, political science, psychology, ''and sociology''.<ref>Tyner, A. H. et al. "Investigating the replicability of the social and behavioural sciences." ''Nature'' 652, 143–150 (2026).</ref> The replications were not casual efforts, either — they were high-powered (median 99.6% power to detect the original effect), used the original study materials when available, and were peer-reviewed in advance. This was about as fair a test as a field can get. The results, by discipline, were remarkably consistent — consistently unflattering. Across all six fields, only about half of claims held up: 55.1% of individual claims and 49.3% of papers replicated with a statistically significant result in the original direction. Sociology's rate was 51.1% — essentially indistinguishable from psychology's 49.0%, and statistically no different from any other field in the study (the range across disciplines ran from 42.5% to 63.1%, and the differences between fields were not significant). In plainer terms: if you flip a coin to decide whether a published sociology finding will replicate, you will do about as well as the field's actual track record — which is not a compliment, but it is at least an ''equitable'' embarrassment, evenly distributed across the disciplines that study people. It gets more specific, and slightly worse. Among the sociology studies where an effect size could be directly compared, the original published effect was already fairly modest (median Pearson's ''r'' = 0.10) — smaller, on average, than the original effects reported in business, economics, or psychology. When those same claims were replicated, the median effect size shrank further, to ''r'' = 0.03. That is not quite zero. It is, however, close enough to see zero from where it's standing. None of this happened because researchers were, as a rule, committing fraud. It happened because of a set of ordinary, human, entirely predictable practices that this book will spend real time on: * '''Small samples''' that produce noisy, unstable results that happen to look like a pattern. * '''p-hacking''' — trying several analyses and reporting only the one that "worked" (more on this in Chapter 18, where it gets a proper dissection). * '''Publication bias''' — journals overwhelmingly publish studies that find something, so the file drawer fills up with the honest null results nobody ever sees. (The file drawer, it turns out, is a lot roomier than anyone likes to admit — sociology has been contributing to it right alongside everyone else.) * '''No data or code sharing''', which meant that for decades, nobody could even check anyone else's work without redoing the entire study from scratch. So: this is not a chapter about psychology's problem. It is a chapter about sociology's problem, documented as recently as this year, with your discipline's name attached to the data in black and white. The GSS-based examples in this book will use real sample sizes and real reported effects specifically so you get comfortable with what honest, adequately powered social science looks like — which, encouragingly, is not that hard to produce once you know what to watch for, and which is exactly what the rest of this book is trying to teach you to do. == Open Science: The Field Grows Up == The response to the replication crisis has been a genuine culture shift, usually filed under the heading '''open science''': the practice of doing research in a way that lets other people check it. In practice this means a few concrete habits, all of which you will build over the course of this book: * '''Transparency''' about what you did — including the analyses that didn't pan out. * '''Data sharing''', so other researchers can look at what you looked at. * '''Code sharing''', so other researchers can run what you ran, rather than guessing at your methods from a paragraph in a journal article. * '''Pre-registration''', which means writing down your hypothesis and analysis plan ''before'' you look at the results — the statistical equivalent of calling your shot. <!-- IMAGE: A screenshot or logo of the Open Science Framework (OSF) website/homepage, to give students a visual sense of the actual tool before Chapter 2's walkthrough. --> A tool that has become central to this shift is the '''Open Science Framework''' (OSF), a free platform where researchers post their data, code, and pre-registrations. Think of it as a public diary for your research — except instead of embarrassing teenage feelings, it holds your regression code, which, depending on how that regression turned out, might be the more embarrassing of the two. You'll set up your own OSF project in Chapter 2, and you'll see "Open Science Corner" boxes like this one scattered through the rest of the book: {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Sharing your code and data is not an act of vulnerability, and it is not something you do only after you've become an established researcher with tenure and nothing left to prove. It is a basic professional habit, on the same level as citing your sources — and after the last decade, the field has run out of excuses not to do it. }} None of this is presented here as mandatory virtue. It's presented as what careful researchers already do, because the alternative — as an entire replication crisis demonstrated — is occasionally embarrassing itself in front of the entire discipline. == Chapter Summary == Statistics is a set of tools for figuring out whether a pattern you think you see in social life is actually there, and if it is, whether it's big enough to matter. Human intuition is bad at this job on its own — we build confident stories out of tiny, unrepresentative samples of our own experience, and those stories routinely turn out to be wrong when checked against actual data. Sociology relies on statistics to describe populations, test theories, find patterns invisible at the individual level, and inform decisions that affect real people. The field has recently had to reckon with a replication crisis — and a 2026 large-scale replication effort confirmed that sociology's published findings hold up about as often as psychology's, roughly half the time, with effect sizes that often shrink close to nothing on a second look. This is not one field's embarrassment; it is a shared one, caused by small samples, selective reporting, and a lack of transparency across the social sciences. The discipline-wide response, open science, is less a set of rules than a professional habit of showing your work. This book will build that habit alongside every statistical skill in it. == Think About It == This chapter has no R code and no practice problems — just some things worth sitting with before Chapter 2 gets you into RStudio. # Think of a belief you hold about some group of people (a generation, a political party, a profession — anything) that is based mostly on personal experience or things you've seen online rather than on any data you've actually looked at. What would it take to check whether that belief holds up? What data would you need? # The chapter argues that anecdotes "feel like evidence." Why do you think vivid individual stories are so much more persuasive to most people than a table of statistics showing the same pattern across thousands of cases? Is this a flaw we should try to correct, or does it serve some purpose? # If a well-known, widely cited finding in your field of interest turned out to fail replication tomorrow, what do you think the honest response should be — from the original researcher, from the field, and from the public that had heard about the finding? Does it matter whether the original researcher did anything wrong? <!-- FIGURE: A comparison chart showing public perception vs. actual statistics for 2-3 social facts (e.g., percentage Muslim, teen pregnancy rate, wealth held by top 1%), similar to Ipsos "Perils of Perception" visualizations. Author to generate with real survey data. --> <!-- FIGURE: Optional second figure — bar chart of replication rates by discipline from Tyner et al. (2026), Table 3, highlighting that sociology (51.1%) and psychology (49.0%) are statistically indistinguishable. Author to generate if desired; data available in the source PDF. --> == References == <references/> oglewulo8ohkwytei16dv0ma5twjkad 4656694 4656584 2026-08-07T19:32:07Z Rcragun 41177 /* Chapter 1: Why Statistics? Making Sense of Social Life with Data */ added image 4656694 wikitext text/x-wiki = Chapter 1: Why Statistics? Making Sense of Social Life with Data = Ask a room full of sociology students why they're taking a statistics course, and you will get some version of the same three answers: it's required, they heard it's "not that bad," and they are visibly regretting their choice of major. This chapter exists to argue, gently but persistently, that all three of those students are wrong about at least one thing. Statistics is not just a hoop you have to jump through. It is one of the more interesting tools ever built for answering a question sociology cares about more than almost any other discipline: what is actually going on with people, as opposed to what we assume is going on with people. That distinction — between what's actually going on and what we assume is going on — is the entire subject of this book. [[File:Group of people, Novosibirsk 1.jpg|alt=A group of people in a park.|thumb|600x600px|There is a lot going on within any group of people. Statistics are used in Sociology to study groups of people.]] == What Statistics Is (and What It Isn't) == Statistics is not magic. It will not tell you what people ''should'' do, whether capitalism is good, or why your cousin holds the political views he holds. It cannot generate a fact from nothing, and it cannot rescue a badly designed study. Statistics is, more modestly, a set of tools for describing patterns in data and for deciding how much confidence those patterns deserve. It is also not "just arithmetic," despite what the equation-heavy chapters later in this book might suggest to a skeptical reader flipping ahead. Arithmetic tells you that 2 + 2 = 4. Statistics tells you whether the four-point gap in reported happiness between two groups of people is a real social pattern worth taking seriously, or the kind of noise you'd expect to see even if nothing were going on at all. That second question — is this real, and does it matter — is a much more interesting question than any of the arithmetic required to answer it, and it is the question this entire book is organized around. (If statistics really were just arithmetic, this book would be four pages long, and one of those pages would be a lecture on the order of operations.) Here is a useful mental model: statistics is what you get when you refuse to trust your gut about how the social world works until you've checked. == Anecdote vs. Evidence == Humans are excellent at building confident, coherent stories out of very small amounts of information. This was probably a useful skill on the savanna. It is a much less useful skill for understanding society, because society does not fit inside any one person's field of view. Consider a genuinely humbling body of research on how badly people estimate basic facts about their own societies. Survey researchers have repeatedly asked people in wealthy democracies to guess things like the percentage of the population that is Muslim, the percentage of teenagers who become pregnant each year, or the share of national wealth held by the top 1%. The results are not close. People in the United States, for instance, have historically guessed the Muslim share of the population at somewhere around 15%; the actual figure is about 1%.<ref>Ipsos MORI, "Perils of Perception" surveys, various years.</ref> This is not a small rounding error. This is being off by a factor of fifteen while feeling completely confident about it. The point is not that people are stupid. The point is that human intuition about large-scale social patterns is built from whatever we happen to have personally encountered — the news we watch, the neighborhood we live in, the one loud cousin at Thanksgiving — and none of that adds up to a representative picture of anything. Anecdote feels like evidence. It is not evidence. It is a sample size of one, dressed up in a confident tone of voice. Your uncle at Thanksgiving may be extremely confident about what "everyone" thinks; he is, statistically speaking, an n of one, and no peer-reviewed journal on Earth will publish him, no matter how loudly he clears his throat before the next point. Statistics exists because "I feel like this is true" and "this is true" are different claims, and sociology needs a way to tell them apart. == What Sociology Needs Statistics For == Sociologists use statistics for a handful of related but distinct jobs: * '''Describing populations.''' How many people hold a given belief? What does the income distribution actually look like? Description sounds boring until you realize almost no one's intuitive guess about these numbers is correct. * '''Testing hypotheses.''' Does education predict income? Does religious attendance predict happiness? Sociological theory generates predictions; statistics is how those predictions get checked against reality instead of just sounding plausible in a seminar room. * '''Identifying patterns.''' Social life is full of relationships between variables that are invisible at the individual level and only show up once you look at enough people at once — this is arguably the founding insight of the entire discipline, going back to Durkheim noticing that suicide, an intensely personal act, follows remarkably stable social patterns.<ref>Durkheim, É. (1951). ''Suicide: A Study in Sociology'' (J. A. Spaulding & G. Simpson, Trans.). Free Press. (Original work ''Le Suicide: Étude de sociologie'' published 1897)</ref> Sociologists have, in other words, been doing data science since roughly 1897; we just called it "reading very carefully" and didn't have a venture capitalist offering to fund it. * '''Informing policy.''' Governments and organizations make decisions that affect millions of people based on what the data seem to show. Getting the statistics wrong has consequences that extend well past a bad grade on a problem set. Throughout this book, you will do all four of these things using the General Social Survey, a dataset that has been asking Americans about their lives, beliefs, and behaviors since 1972. You'll meet it properly in Chapter 3. For now, just know that everything from here forward is aimed at letting you ask real questions about real people and get real answers — not perfect answers, but honest ones, with the uncertainty attached. == A Field That Occasionally Embarrasses Itself: The Replication Crisis == Here is where this book earns some credibility by admitting something uncomfortable: a fair amount of what gets published across the social and behavioral sciences — sociology fully included, not just the neighbors down the hall in the psychology department — does not hold up when someone else checks it. Starting around 2011, researchers began systematically trying to replicate published findings — that is, running the same study again, often with fresh data and more statistical power, to see if it produced the same result. The first wave of this work focused on psychology: a large-scale effort by the Open Science Collaboration attempted to replicate 100 studies from top psychology journals, and fewer than half succeeded.<ref>Open Science Collaboration, "Estimating the Reproducibility of Psychological Science," ''Science'', 2015.</ref> For years afterward, "the replication crisis" got treated in casual conversation as psychology's problem to solve, which let everyone else in the social sciences feel a little smug about it. That smugness became harder to justify in 2026. A massive replication effort — the DARPA-funded SCORE project — attempted to replicate 274 specific findings drawn from 164 papers published between 2009 and 2018, across six fields: business, economics, education, political science, psychology, ''and sociology''.<ref>Tyner, A. H. et al. "Investigating the replicability of the social and behavioural sciences." ''Nature'' 652, 143–150 (2026).</ref> The replications were not casual efforts, either — they were high-powered (median 99.6% power to detect the original effect), used the original study materials when available, and were peer-reviewed in advance. This was about as fair a test as a field can get. The results, by discipline, were remarkably consistent — consistently unflattering. Across all six fields, only about half of claims held up: 55.1% of individual claims and 49.3% of papers replicated with a statistically significant result in the original direction. Sociology's rate was 51.1% — essentially indistinguishable from psychology's 49.0%, and statistically no different from any other field in the study (the range across disciplines ran from 42.5% to 63.1%, and the differences between fields were not significant). In plainer terms: if you flip a coin to decide whether a published sociology finding will replicate, you will do about as well as the field's actual track record — which is not a compliment, but it is at least an ''equitable'' embarrassment, evenly distributed across the disciplines that study people. It gets more specific, and slightly worse. Among the sociology studies where an effect size could be directly compared, the original published effect was already fairly modest (median Pearson's ''r'' = 0.10) — smaller, on average, than the original effects reported in business, economics, or psychology. When those same claims were replicated, the median effect size shrank further, to ''r'' = 0.03. That is not quite zero. It is, however, close enough to see zero from where it's standing. None of this happened because researchers were, as a rule, committing fraud. It happened because of a set of ordinary, human, entirely predictable practices that this book will spend real time on: * '''Small samples''' that produce noisy, unstable results that happen to look like a pattern. * '''p-hacking''' — trying several analyses and reporting only the one that "worked" (more on this in Chapter 18, where it gets a proper dissection). * '''Publication bias''' — journals overwhelmingly publish studies that find something, so the file drawer fills up with the honest null results nobody ever sees. (The file drawer, it turns out, is a lot roomier than anyone likes to admit — sociology has been contributing to it right alongside everyone else.) * '''No data or code sharing''', which meant that for decades, nobody could even check anyone else's work without redoing the entire study from scratch. So: this is not a chapter about psychology's problem. It is a chapter about sociology's problem, documented as recently as this year, with your discipline's name attached to the data in black and white. The GSS-based examples in this book will use real sample sizes and real reported effects specifically so you get comfortable with what honest, adequately powered social science looks like — which, encouragingly, is not that hard to produce once you know what to watch for, and which is exactly what the rest of this book is trying to teach you to do. == Open Science: The Field Grows Up == The response to the replication crisis has been a genuine culture shift, usually filed under the heading '''open science''': the practice of doing research in a way that lets other people check it. In practice this means a few concrete habits, all of which you will build over the course of this book: * '''Transparency''' about what you did — including the analyses that didn't pan out. * '''Data sharing''', so other researchers can look at what you looked at. * '''Code sharing''', so other researchers can run what you ran, rather than guessing at your methods from a paragraph in a journal article. * '''Pre-registration''', which means writing down your hypothesis and analysis plan ''before'' you look at the results — the statistical equivalent of calling your shot. <!-- IMAGE: A screenshot or logo of the Open Science Framework (OSF) website/homepage, to give students a visual sense of the actual tool before Chapter 2's walkthrough. --> A tool that has become central to this shift is the '''Open Science Framework''' (OSF), a free platform where researchers post their data, code, and pre-registrations. Think of it as a public diary for your research — except instead of embarrassing teenage feelings, it holds your regression code, which, depending on how that regression turned out, might be the more embarrassing of the two. You'll set up your own OSF project in Chapter 2, and you'll see "Open Science Corner" boxes like this one scattered through the rest of the book: {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Sharing your code and data is not an act of vulnerability, and it is not something you do only after you've become an established researcher with tenure and nothing left to prove. It is a basic professional habit, on the same level as citing your sources — and after the last decade, the field has run out of excuses not to do it. }} None of this is presented here as mandatory virtue. It's presented as what careful researchers already do, because the alternative — as an entire replication crisis demonstrated — is occasionally embarrassing itself in front of the entire discipline. == Chapter Summary == Statistics is a set of tools for figuring out whether a pattern you think you see in social life is actually there, and if it is, whether it's big enough to matter. Human intuition is bad at this job on its own — we build confident stories out of tiny, unrepresentative samples of our own experience, and those stories routinely turn out to be wrong when checked against actual data. Sociology relies on statistics to describe populations, test theories, find patterns invisible at the individual level, and inform decisions that affect real people. The field has recently had to reckon with a replication crisis — and a 2026 large-scale replication effort confirmed that sociology's published findings hold up about as often as psychology's, roughly half the time, with effect sizes that often shrink close to nothing on a second look. This is not one field's embarrassment; it is a shared one, caused by small samples, selective reporting, and a lack of transparency across the social sciences. The discipline-wide response, open science, is less a set of rules than a professional habit of showing your work. This book will build that habit alongside every statistical skill in it. == Think About It == This chapter has no R code and no practice problems — just some things worth sitting with before Chapter 2 gets you into RStudio. # Think of a belief you hold about some group of people (a generation, a political party, a profession — anything) that is based mostly on personal experience or things you've seen online rather than on any data you've actually looked at. What would it take to check whether that belief holds up? What data would you need? # The chapter argues that anecdotes "feel like evidence." Why do you think vivid individual stories are so much more persuasive to most people than a table of statistics showing the same pattern across thousands of cases? Is this a flaw we should try to correct, or does it serve some purpose? # If a well-known, widely cited finding in your field of interest turned out to fail replication tomorrow, what do you think the honest response should be — from the original researcher, from the field, and from the public that had heard about the finding? Does it matter whether the original researcher did anything wrong? <!-- FIGURE: A comparison chart showing public perception vs. actual statistics for 2-3 social facts (e.g., percentage Muslim, teen pregnancy rate, wealth held by top 1%), similar to Ipsos "Perils of Perception" visualizations. Author to generate with real survey data. --> <!-- FIGURE: Optional second figure — bar chart of replication rates by discipline from Tyner et al. (2026), Table 3, highlighting that sociology (51.1%) and psychology (49.0%) are statistically indistinguishable. Author to generate if desired; data available in the source PDF. --> == References == <references/> og72wngmxg8w2li8s0ccxr55cyn6du2 4656696 4656694 2026-08-07T19:59:44Z Rcragun 41177 /* Anecdote vs. Evidence */ 4656696 wikitext text/x-wiki = Chapter 1: Why Statistics? Making Sense of Social Life with Data = Ask a room full of sociology students why they're taking a statistics course, and you will get some version of the same three answers: it's required, they heard it's "not that bad," and they are visibly regretting their choice of major. This chapter exists to argue, gently but persistently, that all three of those students are wrong about at least one thing. Statistics is not just a hoop you have to jump through. It is one of the more interesting tools ever built for answering a question sociology cares about more than almost any other discipline: what is actually going on with people, as opposed to what we assume is going on with people. That distinction — between what's actually going on and what we assume is going on — is the entire subject of this book. [[File:Group of people, Novosibirsk 1.jpg|alt=A group of people in a park.|thumb|600x600px|There is a lot going on within any group of people. Statistics are used in Sociology to study groups of people.]] == What Statistics Is (and What It Isn't) == Statistics is not magic. It will not tell you what people ''should'' do, whether capitalism is good, or why your cousin holds the political views he holds. It cannot generate a fact from nothing, and it cannot rescue a badly designed study. Statistics is, more modestly, a set of tools for describing patterns in data and for deciding how much confidence those patterns deserve. It is also not "just arithmetic," despite what the equation-heavy chapters later in this book might suggest to a skeptical reader flipping ahead. Arithmetic tells you that 2 + 2 = 4. Statistics tells you whether the four-point gap in reported happiness between two groups of people is a real social pattern worth taking seriously, or the kind of noise you'd expect to see even if nothing were going on at all. That second question — is this real, and does it matter — is a much more interesting question than any of the arithmetic required to answer it, and it is the question this entire book is organized around. (If statistics really were just arithmetic, this book would be four pages long, and one of those pages would be a lecture on the order of operations.) Here is a useful mental model: statistics is what you get when you refuse to trust your gut about how the social world works until you've checked. == Anecdote vs. Evidence == Humans are excellent at building confident, coherent stories out of very small amounts of information. This was probably a useful skill on the savanna. It is a much less useful skill for understanding society, because society does not fit inside any one person's field of view. [[File:Savanna in Mount Merbabu.jpg|alt=A lone individual on the Savanna|thumb|250x250px|Tracking an animal in the Savanna is based on pattern recognition, but is ultimately about following anecdotal data, not aggregate data.]] Consider a genuinely humbling body of research on how badly people estimate basic facts about their own societies. Survey researchers have repeatedly asked people in wealthy democracies to guess things like the percentage of the population that is Muslim, the percentage of teenagers who become pregnant each year, or the share of national wealth held by the top 1%. The results are not close. People in the United States, for instance, have historically guessed the Muslim share of the population at somewhere around 15%; the actual figure is about 1%.<ref>Ipsos MORI, "Perils of Perception" surveys, various years.</ref> This is not a small rounding error. This is being off by a factor of fifteen while feeling completely confident about it. The point is not that people are stupid (well... that's mostly not the point!). The point is that human intuition about large-scale social patterns is built from whatever we happen to have personally encountered — the news we watch, the neighborhood we live in, the one loud cousin at Thanksgiving — and none of that adds up to a representative picture of anything. Anecdote feels like evidence. It is not evidence. It is a sample size of one, dressed up in a confident tone of voice. Your uncle at Thanksgiving may be extremely confident about what "everyone" thinks; he is, statistically speaking, an n of one, and no peer-reviewed journal on Earth will publish him, no matter how loudly he clears his throat before the next point. Statistics exists because "I feel like this is true" and "this is true" are different claims, and sociology needs a way to tell them apart. == What Sociology Needs Statistics For == Sociologists use statistics for a handful of related but distinct jobs: * '''Describing populations.''' How many people hold a given belief? What does the income distribution actually look like? Description sounds boring until you realize almost no one's intuitive guess about these numbers is correct. * '''Testing hypotheses.''' Does education predict income? Does religious attendance predict happiness? Sociological theory generates predictions; statistics is how those predictions get checked against reality instead of just sounding plausible in a seminar room. * '''Identifying patterns.''' Social life is full of relationships between variables that are invisible at the individual level and only show up once you look at enough people at once — this is arguably the founding insight of the entire discipline, going back to Durkheim noticing that suicide, an intensely personal act, follows remarkably stable social patterns.<ref>Durkheim, É. (1951). ''Suicide: A Study in Sociology'' (J. A. Spaulding & G. Simpson, Trans.). Free Press. (Original work ''Le Suicide: Étude de sociologie'' published 1897)</ref> Sociologists have, in other words, been doing data science since roughly 1897; we just didn't have nifty computers to help with the analyses back then, not even human [[wikipedia:Computer_(occupation)|computers]]. * '''Informing policy.''' Governments and organizations make decisions that affect millions of people based on what the data seem to show. Getting the statistics wrong has consequences that extend well past a bad grade on a problem set. Throughout this book, you will do all four of these things using the [[Statistics for Sociologists/Chapter 3: The General Social Survey - What It Is and How to Use It|General Social Survey]], a dataset that includes responses from surveys asking Americans about their lives, beliefs, and behaviors since 1972. You'll meet it properly in Chapter 3. For now, just know that everything from here forward is aimed at letting you ask real questions about real people and get real answers — not perfect answers, but honest ones, with the uncertainty attached. == A Field That Occasionally Embarrasses Itself: The Replication Crisis == Here is where this book earns some credibility by admitting something uncomfortable: a fair amount of what gets published across the social and behavioral sciences — sociology fully included, not just the neighbors down the hall in the psychology department — does not hold up when someone else checks it. Starting around 2011, researchers began systematically trying to replicate published findings — that is, running the same study again, often with fresh data and more statistical power, to see if it produced the same result. The first wave of this work focused on psychology: a large-scale effort by the [http://osc.centerforopenscience.org/ Open Science Collaboration] attempted to replicate 100 studies from top psychology journals, and fewer than half succeeded.<ref>Open Science Collaboration, "Estimating the Reproducibility of Psychological Science," ''Science'', 2015.</ref> For years afterward, "the replication crisis" got treated in casual conversation as psychology's problem to solve, which let everyone else in the social sciences feel a little smug about it. [[File:Miso Soup.jpg|alt=a bowl of soup|thumb|400x400px|One famous study that failed to replicate was a study from the lab of now largely discredited researcher [[wikipedia:Brian_Wansink#Retractions_and_corrections|Brian Wansink]], claiming that people ate more if they were given a bowl of soup that had more soup pumped in from the bottom. Much of Wansink's work was later retracted because the underlying data were manipulated in ways this course will teach you are unethical.]] That smugness became harder to justify in 2026. A massive replication effort — the DARPA-funded SCORE project — attempted to replicate 274 specific findings drawn from 164 papers published between 2009 and 2018, across six fields: business, economics, education, political science, psychology, ''and sociology''.<ref>Tyner, A. H. et al. "Investigating the replicability of the social and behavioural sciences." ''Nature'' 652, 143–150 (2026).</ref> The replications were not casual efforts, either — they were high-powered (median 99.6% power to detect the original effect), used the original study materials when available, and were peer-reviewed in advance. This was about as fair a test as a field can get. The results, by discipline, were remarkably consistent — consistently unflattering. Across all six fields, only about half of claims held up: 55.1% of individual claims and 49.3% of papers replicated with a statistically significant result in the original direction. Sociology's rate was 51.1% — essentially indistinguishable from psychology's 49.0%, and statistically no different from any other field in the study (the range across disciplines ran from 42.5% to 63.1%, and the differences between fields were not significant). In plainer terms: if you flip a coin to decide whether a published sociology finding will replicate, you will do about as well as the field's actual track record — which is not a compliment, but it is at least an ''equitable'' embarrassment, evenly distributed across the disciplines that study people. It gets more specific, and slightly worse. Among the sociology studies where an effect size (more on these in later chapters) could be directly compared, the original published effect was already fairly modest (median Pearson's ''r'' = 0.10) — smaller, on average, than the original effects reported in business, economics, or psychology. When those same claims were replicated, the median effect size shrank further, to ''r'' = 0.03. That is not quite zero. It is, however, close enough to see zero from where it's standing. None of this happened because researchers were, as a rule, committing fraud. It happened because of a set of ordinary, human, entirely predictable practices that this book will spend real time on: * '''Small samples''' that produce noisy, unstable results that happen to look like a pattern. * '''[[wikipedia:Data_dredging|p-hacking]]''' — trying several analyses and reporting only the one that "worked" (more on this in Chapter 18, where it gets a proper dissection). * '''[[wikipedia:Publication_bias|Publication bias]]''' — journals overwhelmingly publish studies that find something, so the file drawer fills up with the honest null results nobody ever sees. (The file drawer, it turns out, is a lot roomier than anyone likes to admit — sociology has been contributing to it right alongside everyone else.) * '''No data or code sharing''', which meant that for decades, nobody could even check anyone else's work without redoing the entire study from scratch. So: this is not a chapter about psychology's problem. It is a chapter about sociology's problem, documented as recently as 2026, with your discipline's name attached to the data in black and white. The GSS-based examples in this book will use real sample sizes and real reported effects specifically so you get comfortable with what honest, adequately powered social science looks like — which, encouragingly, is not that hard to produce once you know what to watch for, and which is exactly what the rest of this book is trying to teach you to do. == Open Science: The Field Grows Up == The response to the replication crisis has been a genuine culture shift, usually filed under the heading [[wikipedia:Open_science|'''open science''':]] the practice of doing research in a way that lets other people check it. In practice this means a few concrete habits, all of which you will build over the course of this book: * '''Transparency''' about what you did — including the analyses that didn't pan out. * '''Data sharing''', so other researchers can look at what you looked at. * '''Code sharing''', so other researchers can run what you ran, rather than guessing at your methods from a paragraph in a journal article. * '''Pre-registration''', which means writing down your hypothesis and analysis plan ''before'' you look at the results — the statistical equivalent of calling your shot. [[File:OSF.png|alt=A screenshot of the OSF.io website.|thumb|600x600px|This is the home page for the OSF, which is run by the Center for Open Science. You'll have plenty of chances to work with the website throughout this course.]] A tool that has become central to this shift is the '''Open Science Framework''' (OSF), a free platform where researchers post their data, code, and pre-registrations. Think of it as a public diary for your research — except instead of embarrassing teenage feelings, it holds your regression code, which, depending on how that regression turned out, might be the more embarrassing of the two. You'll set up your own OSF project in Chapter 2, and you'll see "Open Science Corner" boxes like this one scattered through the rest of the book: {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Sharing your code and data is not an act of vulnerability, and it is not something you do only after you've become an established researcher with tenure and nothing left to prove. It is a basic professional habit, on the same level as citing your sources — and after the last decade, the field has run out of excuses not to do it. }} None of this is presented here as mandatory virtue. It's presented as what careful researchers already do, because the alternative — as an entire replication crisis demonstrated — is occasionally embarrassing itself in front of the entire discipline. == Chapter Summary == Statistics is a set of tools for figuring out whether a pattern you think you see in social life is actually there, and if it is, whether it's big enough to matter. Human intuition is bad at this job on its own — we build confident stories out of tiny, unrepresentative samples of our own experience, and those stories routinely turn out to be wrong when checked against actual data. Sociology relies on statistics to describe populations, test theories, find patterns invisible at the individual level, and inform decisions that affect real people. The field has recently had to reckon with a replication crisis — and a 2026 large-scale replication effort confirmed that sociology's published findings hold up about as often as psychology's, roughly half the time, with effect sizes that often shrink close to nothing on a second look. This is not one field's embarrassment; it is a shared one, caused by small samples, selective reporting, and a lack of transparency across the social sciences. The discipline-wide response, open science, is less a set of rules than a professional habit of showing your work. This book will build that habit alongside every statistical skill in it. == Think About It == This chapter has no R code and no practice problems — just some things worth sitting with before Chapter 2 gets you into RStudio. # Think of a belief you hold about some group of people (a generation, a political party, a profession — anything) that is based mostly on personal experience or things you've seen online rather than on any data you've actually looked at. What would it take to check whether that belief holds up? What data would you need? # The chapter argues that anecdotes "feel like evidence." Why do you think vivid individual stories are so much more persuasive to most people than a table of statistics showing the same pattern across thousands of cases? Is this a flaw we should try to correct, or does it serve some purpose? # If a well-known, widely cited finding in your field of interest turned out to fail replication tomorrow, what do you think the honest response should be — from the original researcher, from the field, and from the public that had heard about the finding? Does it matter whether the original researcher did anything wrong? <!-- FIGURE: A comparison chart showing public perception vs. actual statistics for 2-3 social facts (e.g., percentage Muslim, teen pregnancy rate, wealth held by top 1%), similar to Ipsos "Perils of Perception" visualizations. Author to generate with real survey data. --> <!-- FIGURE: Optional second figure — bar chart of replication rates by discipline from Tyner et al. (2026), Table 3, highlighting that sociology (51.1%) and psychology (49.0%) are statistically indistinguishable. Author to generate if desired; data available in the source PDF. --> == References == <references/> 96ff90x2q2dpvjfmkhk04tev7st6zaf 4656697 4656696 2026-08-07T20:01:10Z Rcragun 41177 /* Open Science: The Field Grows Up */ 4656697 wikitext text/x-wiki = Chapter 1: Why Statistics? Making Sense of Social Life with Data = Ask a room full of sociology students why they're taking a statistics course, and you will get some version of the same three answers: it's required, they heard it's "not that bad," and they are visibly regretting their choice of major. This chapter exists to argue, gently but persistently, that all three of those students are wrong about at least one thing. Statistics is not just a hoop you have to jump through. It is one of the more interesting tools ever built for answering a question sociology cares about more than almost any other discipline: what is actually going on with people, as opposed to what we assume is going on with people. That distinction — between what's actually going on and what we assume is going on — is the entire subject of this book. [[File:Group of people, Novosibirsk 1.jpg|alt=A group of people in a park.|thumb|600x600px|There is a lot going on within any group of people. Statistics are used in Sociology to study groups of people.]] == What Statistics Is (and What It Isn't) == Statistics is not magic. It will not tell you what people ''should'' do, whether capitalism is good, or why your cousin holds the political views he holds. It cannot generate a fact from nothing, and it cannot rescue a badly designed study. Statistics is, more modestly, a set of tools for describing patterns in data and for deciding how much confidence those patterns deserve. It is also not "just arithmetic," despite what the equation-heavy chapters later in this book might suggest to a skeptical reader flipping ahead. Arithmetic tells you that 2 + 2 = 4. Statistics tells you whether the four-point gap in reported happiness between two groups of people is a real social pattern worth taking seriously, or the kind of noise you'd expect to see even if nothing were going on at all. That second question — is this real, and does it matter — is a much more interesting question than any of the arithmetic required to answer it, and it is the question this entire book is organized around. (If statistics really were just arithmetic, this book would be four pages long, and one of those pages would be a lecture on the order of operations.) Here is a useful mental model: statistics is what you get when you refuse to trust your gut about how the social world works until you've checked. == Anecdote vs. Evidence == Humans are excellent at building confident, coherent stories out of very small amounts of information. This was probably a useful skill on the savanna. It is a much less useful skill for understanding society, because society does not fit inside any one person's field of view. [[File:Savanna in Mount Merbabu.jpg|alt=A lone individual on the Savanna|thumb|250x250px|Tracking an animal in the Savanna is based on pattern recognition, but is ultimately about following anecdotal data, not aggregate data.]] Consider a genuinely humbling body of research on how badly people estimate basic facts about their own societies. Survey researchers have repeatedly asked people in wealthy democracies to guess things like the percentage of the population that is Muslim, the percentage of teenagers who become pregnant each year, or the share of national wealth held by the top 1%. The results are not close. People in the United States, for instance, have historically guessed the Muslim share of the population at somewhere around 15%; the actual figure is about 1%.<ref>Ipsos MORI, "Perils of Perception" surveys, various years.</ref> This is not a small rounding error. This is being off by a factor of fifteen while feeling completely confident about it. The point is not that people are stupid (well... that's mostly not the point!). The point is that human intuition about large-scale social patterns is built from whatever we happen to have personally encountered — the news we watch, the neighborhood we live in, the one loud cousin at Thanksgiving — and none of that adds up to a representative picture of anything. Anecdote feels like evidence. It is not evidence. It is a sample size of one, dressed up in a confident tone of voice. Your uncle at Thanksgiving may be extremely confident about what "everyone" thinks; he is, statistically speaking, an n of one, and no peer-reviewed journal on Earth will publish him, no matter how loudly he clears his throat before the next point. Statistics exists because "I feel like this is true" and "this is true" are different claims, and sociology needs a way to tell them apart. == What Sociology Needs Statistics For == Sociologists use statistics for a handful of related but distinct jobs: * '''Describing populations.''' How many people hold a given belief? What does the income distribution actually look like? Description sounds boring until you realize almost no one's intuitive guess about these numbers is correct. * '''Testing hypotheses.''' Does education predict income? Does religious attendance predict happiness? Sociological theory generates predictions; statistics is how those predictions get checked against reality instead of just sounding plausible in a seminar room. * '''Identifying patterns.''' Social life is full of relationships between variables that are invisible at the individual level and only show up once you look at enough people at once — this is arguably the founding insight of the entire discipline, going back to Durkheim noticing that suicide, an intensely personal act, follows remarkably stable social patterns.<ref>Durkheim, É. (1951). ''Suicide: A Study in Sociology'' (J. A. Spaulding & G. Simpson, Trans.). Free Press. (Original work ''Le Suicide: Étude de sociologie'' published 1897)</ref> Sociologists have, in other words, been doing data science since roughly 1897; we just didn't have nifty computers to help with the analyses back then, not even human [[wikipedia:Computer_(occupation)|computers]]. * '''Informing policy.''' Governments and organizations make decisions that affect millions of people based on what the data seem to show. Getting the statistics wrong has consequences that extend well past a bad grade on a problem set. Throughout this book, you will do all four of these things using the [[Statistics for Sociologists/Chapter 3: The General Social Survey - What It Is and How to Use It|General Social Survey]], a dataset that includes responses from surveys asking Americans about their lives, beliefs, and behaviors since 1972. You'll meet it properly in Chapter 3. For now, just know that everything from here forward is aimed at letting you ask real questions about real people and get real answers — not perfect answers, but honest ones, with the uncertainty attached. == A Field That Occasionally Embarrasses Itself: The Replication Crisis == Here is where this book earns some credibility by admitting something uncomfortable: a fair amount of what gets published across the social and behavioral sciences — sociology fully included, not just the neighbors down the hall in the psychology department — does not hold up when someone else checks it. Starting around 2011, researchers began systematically trying to replicate published findings — that is, running the same study again, often with fresh data and more statistical power, to see if it produced the same result. The first wave of this work focused on psychology: a large-scale effort by the [http://osc.centerforopenscience.org/ Open Science Collaboration] attempted to replicate 100 studies from top psychology journals, and fewer than half succeeded.<ref>Open Science Collaboration, "Estimating the Reproducibility of Psychological Science," ''Science'', 2015.</ref> For years afterward, "the replication crisis" got treated in casual conversation as psychology's problem to solve, which let everyone else in the social sciences feel a little smug about it. [[File:Miso Soup.jpg|alt=a bowl of soup|thumb|400x400px|One famous study that failed to replicate was a study from the lab of now largely discredited researcher [[wikipedia:Brian_Wansink#Retractions_and_corrections|Brian Wansink]], claiming that people ate more if they were given a bowl of soup that had more soup pumped in from the bottom. Much of Wansink's work was later retracted because the underlying data were manipulated in ways this course will teach you are unethical.]] That smugness became harder to justify in 2026. A massive replication effort — the DARPA-funded SCORE project — attempted to replicate 274 specific findings drawn from 164 papers published between 2009 and 2018, across six fields: business, economics, education, political science, psychology, ''and sociology''.<ref>Tyner, A. H. et al. "Investigating the replicability of the social and behavioural sciences." ''Nature'' 652, 143–150 (2026).</ref> The replications were not casual efforts, either — they were high-powered (median 99.6% power to detect the original effect), used the original study materials when available, and were peer-reviewed in advance. This was about as fair a test as a field can get. The results, by discipline, were remarkably consistent — consistently unflattering. Across all six fields, only about half of claims held up: 55.1% of individual claims and 49.3% of papers replicated with a statistically significant result in the original direction. Sociology's rate was 51.1% — essentially indistinguishable from psychology's 49.0%, and statistically no different from any other field in the study (the range across disciplines ran from 42.5% to 63.1%, and the differences between fields were not significant). In plainer terms: if you flip a coin to decide whether a published sociology finding will replicate, you will do about as well as the field's actual track record — which is not a compliment, but it is at least an ''equitable'' embarrassment, evenly distributed across the disciplines that study people. It gets more specific, and slightly worse. Among the sociology studies where an effect size (more on these in later chapters) could be directly compared, the original published effect was already fairly modest (median Pearson's ''r'' = 0.10) — smaller, on average, than the original effects reported in business, economics, or psychology. When those same claims were replicated, the median effect size shrank further, to ''r'' = 0.03. That is not quite zero. It is, however, close enough to see zero from where it's standing. None of this happened because researchers were, as a rule, committing fraud. It happened because of a set of ordinary, human, entirely predictable practices that this book will spend real time on: * '''Small samples''' that produce noisy, unstable results that happen to look like a pattern. * '''[[wikipedia:Data_dredging|p-hacking]]''' — trying several analyses and reporting only the one that "worked" (more on this in Chapter 18, where it gets a proper dissection). * '''[[wikipedia:Publication_bias|Publication bias]]''' — journals overwhelmingly publish studies that find something, so the file drawer fills up with the honest null results nobody ever sees. (The file drawer, it turns out, is a lot roomier than anyone likes to admit — sociology has been contributing to it right alongside everyone else.) * '''No data or code sharing''', which meant that for decades, nobody could even check anyone else's work without redoing the entire study from scratch. So: this is not a chapter about psychology's problem. It is a chapter about sociology's problem, documented as recently as 2026, with your discipline's name attached to the data in black and white. The GSS-based examples in this book will use real sample sizes and real reported effects specifically so you get comfortable with what honest, adequately powered social science looks like — which, encouragingly, is not that hard to produce once you know what to watch for, and which is exactly what the rest of this book is trying to teach you to do. == Open Science: The Field Grows Up == [[File:OSF.png|alt=A screenshot of the OSF.io website.|thumb|600x600px|This is the home page for the OSF, which is run by the Center for Open Science. You'll have plenty of chances to work with the website throughout this course.]] The response to the replication crisis has been a genuine culture shift, usually filed under the heading [[wikipedia:Open_science|'''open science''':]] the practice of doing research in a way that lets other people check it. In practice this means a few concrete habits, all of which you will build over the course of this book: * '''Transparency''' about what you did — including the analyses that didn't pan out. * '''Data sharing''', so other researchers can look at what you looked at. * '''Code sharing''', so other researchers can run what you ran, rather than guessing at your methods from a paragraph in a journal article. * '''Pre-registration''', which means writing down your hypothesis and analysis plan ''before'' you look at the results — the statistical equivalent of calling your shot. A tool that has become central to this shift is the '''Open Science Framework''' (OSF), a free platform where researchers post their data, code, and pre-registrations. Think of it as a public diary for your research — except instead of embarrassing teenage feelings, it holds your regression code, which, depending on how that regression turned out, might be the more embarrassing of the two. You'll set up your own OSF project in Chapter 2, and you'll see "Open Science Corner" boxes like this one scattered through the rest of the book: {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Sharing your code and data is not an act of vulnerability, and it is not something you do only after you've become an established researcher with tenure and nothing left to prove. It is a basic professional habit, on the same level as citing your sources — and after the last decade, the field has run out of excuses not to do it. }} None of this is presented here as mandatory virtue. It's presented as what careful researchers already do, because the alternative — as an entire replication crisis demonstrated — is occasionally embarrassing itself in front of the entire discipline. == Chapter Summary == Statistics is a set of tools for figuring out whether a pattern you think you see in social life is actually there, and if it is, whether it's big enough to matter. Human intuition is bad at this job on its own — we build confident stories out of tiny, unrepresentative samples of our own experience, and those stories routinely turn out to be wrong when checked against actual data. Sociology relies on statistics to describe populations, test theories, find patterns invisible at the individual level, and inform decisions that affect real people. The field has recently had to reckon with a replication crisis — and a 2026 large-scale replication effort confirmed that sociology's published findings hold up about as often as psychology's, roughly half the time, with effect sizes that often shrink close to nothing on a second look. This is not one field's embarrassment; it is a shared one, caused by small samples, selective reporting, and a lack of transparency across the social sciences. The discipline-wide response, open science, is less a set of rules than a professional habit of showing your work. This book will build that habit alongside every statistical skill in it. == Think About It == This chapter has no R code and no practice problems — just some things worth sitting with before Chapter 2 gets you into RStudio. # Think of a belief you hold about some group of people (a generation, a political party, a profession — anything) that is based mostly on personal experience or things you've seen online rather than on any data you've actually looked at. What would it take to check whether that belief holds up? What data would you need? # The chapter argues that anecdotes "feel like evidence." Why do you think vivid individual stories are so much more persuasive to most people than a table of statistics showing the same pattern across thousands of cases? Is this a flaw we should try to correct, or does it serve some purpose? # If a well-known, widely cited finding in your field of interest turned out to fail replication tomorrow, what do you think the honest response should be — from the original researcher, from the field, and from the public that had heard about the finding? Does it matter whether the original researcher did anything wrong? <!-- FIGURE: A comparison chart showing public perception vs. actual statistics for 2-3 social facts (e.g., percentage Muslim, teen pregnancy rate, wealth held by top 1%), similar to Ipsos "Perils of Perception" visualizations. Author to generate with real survey data. --> <!-- FIGURE: Optional second figure — bar chart of replication rates by discipline from Tyner et al. (2026), Table 3, highlighting that sociology (51.1%) and psychology (49.0%) are statistically indistinguishable. Author to generate if desired; data available in the source PDF. --> == References == <references/> eifx2w83g6xh34fw6ci1htdmudhbl0h 4656703 4656697 2026-08-07T20:44:09Z Rcragun 41177 /* Anecdote vs. Evidence */ 4656703 wikitext text/x-wiki = Chapter 1: Why Statistics? Making Sense of Social Life with Data = Ask a room full of sociology students why they're taking a statistics course, and you will get some version of the same three answers: it's required, they heard it's "not that bad," and they are visibly regretting their choice of major. This chapter exists to argue, gently but persistently, that all three of those students are wrong about at least one thing. Statistics is not just a hoop you have to jump through. It is one of the more interesting tools ever built for answering a question sociology cares about more than almost any other discipline: what is actually going on with people, as opposed to what we assume is going on with people. That distinction — between what's actually going on and what we assume is going on — is the entire subject of this book. [[File:Group of people, Novosibirsk 1.jpg|alt=A group of people in a park.|thumb|600x600px|There is a lot going on within any group of people. Statistics are used in Sociology to study groups of people.]] == What Statistics Is (and What It Isn't) == Statistics is not magic. It will not tell you what people ''should'' do, whether capitalism is good, or why your cousin holds the political views he holds. It cannot generate a fact from nothing, and it cannot rescue a badly designed study. Statistics is, more modestly, a set of tools for describing patterns in data and for deciding how much confidence those patterns deserve. It is also not "just arithmetic," despite what the equation-heavy chapters later in this book might suggest to a skeptical reader flipping ahead. Arithmetic tells you that 2 + 2 = 4. Statistics tells you whether the four-point gap in reported happiness between two groups of people is a real social pattern worth taking seriously, or the kind of noise you'd expect to see even if nothing were going on at all. That second question — is this real, and does it matter — is a much more interesting question than any of the arithmetic required to answer it, and it is the question this entire book is organized around. (If statistics really were just arithmetic, this book would be four pages long, and one of those pages would be a lecture on the order of operations.) Here is a useful mental model: statistics is what you get when you refuse to trust your gut about how the social world works until you've checked. == Anecdote vs. Evidence == Humans are excellent at building confident, coherent stories out of very small amounts of information. This was probably a useful skill on the savanna. It is a much less useful skill for understanding society, because society does not fit inside any one person's field of view. Consider a genuinely humbling body of research on how badly people estimate basic facts about their own societies. Survey researchers have repeatedly asked people in wealthy democracies to guess things like the percentage of the population that is Muslim, the percentage of teenagers who become pregnant each year, or the share of national wealth held by the top 1%. The results are not close. People in the United States, for instance, have historically guessed the Muslim share of the population at somewhere around 15%; the actual figure is about 1%.<ref>Ipsos MORI, "Perils of Perception" surveys, various years.</ref> This is not a small rounding error. This is being off by a factor of fifteen while feeling completely confident about it. The point is not that people are stupid (well... that's mostly not the point!). The point is that human intuition about large-scale social patterns is built from whatever we happen to have personally encountered — the news we watch, the neighborhood we live in, the one loud cousin at Thanksgiving — and none of that adds up to a representative picture of anything. Anecdote feels like evidence. It is not evidence. It is a sample size of one, dressed up in a confident tone of voice. Your uncle at Thanksgiving may be extremely confident about what "everyone" thinks; he is, statistically speaking, an n of one, and no peer-reviewed journal on Earth will publish him, no matter how loudly he clears his throat before the next point. Statistics exists because "I feel like this is true" and "this is true" are different claims, and sociology needs a way to tell them apart. [[File:Savanna in Mount Merbabu.jpg|alt=A lone individual on the Savanna|thumb|250x250px|Tracking an animal in the Savanna is based on pattern recognition, but is ultimately about following anecdotal data, not aggregate data.]] == What Sociology Needs Statistics For == Sociologists use statistics for a handful of related but distinct jobs: * '''Describing populations.''' How many people hold a given belief? What does the income distribution actually look like? Description sounds boring until you realize almost no one's intuitive guess about these numbers is correct. * '''Testing hypotheses.''' Does education predict income? Does religious attendance predict happiness? Sociological theory generates predictions; statistics is how those predictions get checked against reality instead of just sounding plausible in a seminar room. * '''Identifying patterns.''' Social life is full of relationships between variables that are invisible at the individual level and only show up once you look at enough people at once — this is arguably the founding insight of the entire discipline, going back to Durkheim noticing that suicide, an intensely personal act, follows remarkably stable social patterns.<ref>Durkheim, É. (1951). ''Suicide: A Study in Sociology'' (J. A. Spaulding & G. Simpson, Trans.). Free Press. (Original work ''Le Suicide: Étude de sociologie'' published 1897)</ref> Sociologists have, in other words, been doing data science since roughly 1897; we just didn't have nifty computers to help with the analyses back then, not even human [[wikipedia:Computer_(occupation)|computers]]. * '''Informing policy.''' Governments and organizations make decisions that affect millions of people based on what the data seem to show. Getting the statistics wrong has consequences that extend well past a bad grade on a problem set. Throughout this book, you will do all four of these things using the [[Statistics for Sociologists/Chapter 3: The General Social Survey - What It Is and How to Use It|General Social Survey]], a dataset that includes responses from surveys asking Americans about their lives, beliefs, and behaviors since 1972. You'll meet it properly in Chapter 3. For now, just know that everything from here forward is aimed at letting you ask real questions about real people and get real answers — not perfect answers, but honest ones, with the uncertainty attached. == A Field That Occasionally Embarrasses Itself: The Replication Crisis == Here is where this book earns some credibility by admitting something uncomfortable: a fair amount of what gets published across the social and behavioral sciences — sociology fully included, not just the neighbors down the hall in the psychology department — does not hold up when someone else checks it. Starting around 2011, researchers began systematically trying to replicate published findings — that is, running the same study again, often with fresh data and more statistical power, to see if it produced the same result. The first wave of this work focused on psychology: a large-scale effort by the [http://osc.centerforopenscience.org/ Open Science Collaboration] attempted to replicate 100 studies from top psychology journals, and fewer than half succeeded.<ref>Open Science Collaboration, "Estimating the Reproducibility of Psychological Science," ''Science'', 2015.</ref> For years afterward, "the replication crisis" got treated in casual conversation as psychology's problem to solve, which let everyone else in the social sciences feel a little smug about it. [[File:Miso Soup.jpg|alt=a bowl of soup|thumb|400x400px|One famous study that failed to replicate was a study from the lab of now largely discredited researcher [[wikipedia:Brian_Wansink#Retractions_and_corrections|Brian Wansink]], claiming that people ate more if they were given a bowl of soup that had more soup pumped in from the bottom. Much of Wansink's work was later retracted because the underlying data were manipulated in ways this course will teach you are unethical.]] That smugness became harder to justify in 2026. A massive replication effort — the DARPA-funded SCORE project — attempted to replicate 274 specific findings drawn from 164 papers published between 2009 and 2018, across six fields: business, economics, education, political science, psychology, ''and sociology''.<ref>Tyner, A. H. et al. "Investigating the replicability of the social and behavioural sciences." ''Nature'' 652, 143–150 (2026).</ref> The replications were not casual efforts, either — they were high-powered (median 99.6% power to detect the original effect), used the original study materials when available, and were peer-reviewed in advance. This was about as fair a test as a field can get. The results, by discipline, were remarkably consistent — consistently unflattering. Across all six fields, only about half of claims held up: 55.1% of individual claims and 49.3% of papers replicated with a statistically significant result in the original direction. Sociology's rate was 51.1% — essentially indistinguishable from psychology's 49.0%, and statistically no different from any other field in the study (the range across disciplines ran from 42.5% to 63.1%, and the differences between fields were not significant). In plainer terms: if you flip a coin to decide whether a published sociology finding will replicate, you will do about as well as the field's actual track record — which is not a compliment, but it is at least an ''equitable'' embarrassment, evenly distributed across the disciplines that study people. It gets more specific, and slightly worse. Among the sociology studies where an effect size (more on these in later chapters) could be directly compared, the original published effect was already fairly modest (median Pearson's ''r'' = 0.10) — smaller, on average, than the original effects reported in business, economics, or psychology. When those same claims were replicated, the median effect size shrank further, to ''r'' = 0.03. That is not quite zero. It is, however, close enough to see zero from where it's standing. None of this happened because researchers were, as a rule, committing fraud. It happened because of a set of ordinary, human, entirely predictable practices that this book will spend real time on: * '''Small samples''' that produce noisy, unstable results that happen to look like a pattern. * '''[[wikipedia:Data_dredging|p-hacking]]''' — trying several analyses and reporting only the one that "worked" (more on this in Chapter 18, where it gets a proper dissection). * '''[[wikipedia:Publication_bias|Publication bias]]''' — journals overwhelmingly publish studies that find something, so the file drawer fills up with the honest null results nobody ever sees. (The file drawer, it turns out, is a lot roomier than anyone likes to admit — sociology has been contributing to it right alongside everyone else.) * '''No data or code sharing''', which meant that for decades, nobody could even check anyone else's work without redoing the entire study from scratch. So: this is not a chapter about psychology's problem. It is a chapter about sociology's problem, documented as recently as 2026, with your discipline's name attached to the data in black and white. The GSS-based examples in this book will use real sample sizes and real reported effects specifically so you get comfortable with what honest, adequately powered social science looks like — which, encouragingly, is not that hard to produce once you know what to watch for, and which is exactly what the rest of this book is trying to teach you to do. == Open Science: The Field Grows Up == [[File:OSF.png|alt=A screenshot of the OSF.io website.|thumb|600x600px|This is the home page for the OSF, which is run by the Center for Open Science. You'll have plenty of chances to work with the website throughout this course.]] The response to the replication crisis has been a genuine culture shift, usually filed under the heading [[wikipedia:Open_science|'''open science''':]] the practice of doing research in a way that lets other people check it. In practice this means a few concrete habits, all of which you will build over the course of this book: * '''Transparency''' about what you did — including the analyses that didn't pan out. * '''Data sharing''', so other researchers can look at what you looked at. * '''Code sharing''', so other researchers can run what you ran, rather than guessing at your methods from a paragraph in a journal article. * '''Pre-registration''', which means writing down your hypothesis and analysis plan ''before'' you look at the results — the statistical equivalent of calling your shot. A tool that has become central to this shift is the '''Open Science Framework''' (OSF), a free platform where researchers post their data, code, and pre-registrations. Think of it as a public diary for your research — except instead of embarrassing teenage feelings, it holds your regression code, which, depending on how that regression turned out, might be the more embarrassing of the two. You'll set up your own OSF project in Chapter 2, and you'll see "Open Science Corner" boxes like this one scattered through the rest of the book: {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Sharing your code and data is not an act of vulnerability, and it is not something you do only after you've become an established researcher with tenure and nothing left to prove. It is a basic professional habit, on the same level as citing your sources — and after the last decade, the field has run out of excuses not to do it. }} None of this is presented here as mandatory virtue. It's presented as what careful researchers already do, because the alternative — as an entire replication crisis demonstrated — is occasionally embarrassing itself in front of the entire discipline. == Chapter Summary == Statistics is a set of tools for figuring out whether a pattern you think you see in social life is actually there, and if it is, whether it's big enough to matter. Human intuition is bad at this job on its own — we build confident stories out of tiny, unrepresentative samples of our own experience, and those stories routinely turn out to be wrong when checked against actual data. Sociology relies on statistics to describe populations, test theories, find patterns invisible at the individual level, and inform decisions that affect real people. The field has recently had to reckon with a replication crisis — and a 2026 large-scale replication effort confirmed that sociology's published findings hold up about as often as psychology's, roughly half the time, with effect sizes that often shrink close to nothing on a second look. This is not one field's embarrassment; it is a shared one, caused by small samples, selective reporting, and a lack of transparency across the social sciences. The discipline-wide response, open science, is less a set of rules than a professional habit of showing your work. This book will build that habit alongside every statistical skill in it. == Think About It == This chapter has no R code and no practice problems — just some things worth sitting with before Chapter 2 gets you into RStudio. # Think of a belief you hold about some group of people (a generation, a political party, a profession — anything) that is based mostly on personal experience or things you've seen online rather than on any data you've actually looked at. What would it take to check whether that belief holds up? What data would you need? # The chapter argues that anecdotes "feel like evidence." Why do you think vivid individual stories are so much more persuasive to most people than a table of statistics showing the same pattern across thousands of cases? Is this a flaw we should try to correct, or does it serve some purpose? # If a well-known, widely cited finding in your field of interest turned out to fail replication tomorrow, what do you think the honest response should be — from the original researcher, from the field, and from the public that had heard about the finding? Does it matter whether the original researcher did anything wrong? <!-- FIGURE: A comparison chart showing public perception vs. actual statistics for 2-3 social facts (e.g., percentage Muslim, teen pregnancy rate, wealth held by top 1%), similar to Ipsos "Perils of Perception" visualizations. Author to generate with real survey data. --> <!-- FIGURE: Optional second figure — bar chart of replication rates by discipline from Tyner et al. (2026), Table 3, highlighting that sociology (51.1%) and psychology (49.0%) are statistically indistinguishable. Author to generate if desired; data available in the source PDF. --> == References == <references/> 4viz5p44lmid5959ddbheziv2dnkbfk 4656704 4656703 2026-08-07T20:48:17Z Rcragun 41177 /* Anecdote vs. Evidence */ 4656704 wikitext text/x-wiki = Chapter 1: Why Statistics? Making Sense of Social Life with Data = Ask a room full of sociology students why they're taking a statistics course, and you will get some version of the same three answers: it's required, they heard it's "not that bad," and they are visibly regretting their choice of major. This chapter exists to argue, gently but persistently, that all three of those students are wrong about at least one thing. Statistics is not just a hoop you have to jump through. It is one of the more interesting tools ever built for answering a question sociology cares about more than almost any other discipline: what is actually going on with people, as opposed to what we assume is going on with people. That distinction — between what's actually going on and what we assume is going on — is the entire subject of this book. [[File:Group of people, Novosibirsk 1.jpg|alt=A group of people in a park.|thumb|600x600px|There is a lot going on within any group of people. Statistics are used in Sociology to study groups of people.]] == What Statistics Is (and What It Isn't) == Statistics is not magic. It will not tell you what people ''should'' do, whether capitalism is good, or why your cousin holds the political views he holds. It cannot generate a fact from nothing, and it cannot rescue a badly designed study. Statistics is, more modestly, a set of tools for describing patterns in data and for deciding how much confidence those patterns deserve. It is also not "just arithmetic," despite what the equation-heavy chapters later in this book might suggest to a skeptical reader flipping ahead. Arithmetic tells you that 2 + 2 = 4. Statistics tells you whether the four-point gap in reported happiness between two groups of people is a real social pattern worth taking seriously, or the kind of noise you'd expect to see even if nothing were going on at all. That second question — is this real, and does it matter — is a much more interesting question than any of the arithmetic required to answer it, and it is the question this entire book is organized around. (If statistics really were just arithmetic, this book would be four pages long, and one of those pages would be a lecture on the order of operations.) Here is a useful mental model: statistics is what you get when you refuse to trust your gut about how the social world works until you've checked. == Anecdote vs. Evidence == Humans are excellent at building confident, coherent stories out of very small amounts of information. This was probably a useful skill on the savanna. It is a much less useful skill for understanding society, because society does not fit inside any one person's field of view. Consider a genuinely humbling body of research on how badly people estimate basic facts about their own societies. Survey researchers have repeatedly asked people in wealthy democracies to guess things like the percentage of the population that is Muslim, the percentage of teenagers who become pregnant each year, or the share of national wealth held by the top 1%. The results are not close. People in the United States, for instance, have historically guessed the Muslim share of the population at somewhere around 15%; the actual figure is about 1%.<ref>Ipsos MORI, "Perils of Perception" surveys, various years.</ref> This is not a small rounding error. This is being off by a factor of fifteen while feeling completely confident about it. [[File:Perception vs Reality - Statistics for Sociology Chart.png|alt=A dumbbell chart showing perceptions and reality.|center|thumb|800x800px|A chart illustrating the difference between perceptions of social facts and the reality of social facts.]] The point is not that people are stupid (well... that's mostly not the point!). The point is that human intuition about large-scale social patterns is built from whatever we happen to have personally encountered — the news we watch, the neighborhood we live in, the one loud cousin at Thanksgiving — and none of that adds up to a representative picture of anything. Anecdote feels like evidence. It is not evidence. It is a sample size of one, dressed up in a confident tone of voice. Your uncle at Thanksgiving may be extremely confident about what "everyone" thinks; he is, statistically speaking, an n of one, and no peer-reviewed journal on Earth will publish him, no matter how loudly he clears his throat before the next point. Statistics exists because "I feel like this is true" and "this is true" are different claims, and sociology needs a way to tell them apart. == What Sociology Needs Statistics For == Sociologists use statistics for a handful of related but distinct jobs: * '''Describing populations.''' How many people hold a given belief? What does the income distribution actually look like? Description sounds boring until you realize almost no one's intuitive guess about these numbers is correct. * '''Testing hypotheses.''' Does education predict income? Does religious attendance predict happiness? Sociological theory generates predictions; statistics is how those predictions get checked against reality instead of just sounding plausible in a seminar room. * '''Identifying patterns.''' Social life is full of relationships between variables that are invisible at the individual level and only show up once you look at enough people at once — this is arguably the founding insight of the entire discipline, going back to Durkheim noticing that suicide, an intensely personal act, follows remarkably stable social patterns.<ref>Durkheim, É. (1951). ''Suicide: A Study in Sociology'' (J. A. Spaulding & G. Simpson, Trans.). Free Press. (Original work ''Le Suicide: Étude de sociologie'' published 1897)</ref> Sociologists have, in other words, been doing data science since roughly 1897; we just didn't have nifty computers to help with the analyses back then, not even human [[wikipedia:Computer_(occupation)|computers]]. * '''Informing policy.''' Governments and organizations make decisions that affect millions of people based on what the data seem to show. Getting the statistics wrong has consequences that extend well past a bad grade on a problem set. Throughout this book, you will do all four of these things using the [[Statistics for Sociologists/Chapter 3: The General Social Survey - What It Is and How to Use It|General Social Survey]], a dataset that includes responses from surveys asking Americans about their lives, beliefs, and behaviors since 1972. You'll meet it properly in Chapter 3. For now, just know that everything from here forward is aimed at letting you ask real questions about real people and get real answers — not perfect answers, but honest ones, with the uncertainty attached. == A Field That Occasionally Embarrasses Itself: The Replication Crisis == Here is where this book earns some credibility by admitting something uncomfortable: a fair amount of what gets published across the social and behavioral sciences — sociology fully included, not just the neighbors down the hall in the psychology department — does not hold up when someone else checks it. Starting around 2011, researchers began systematically trying to replicate published findings — that is, running the same study again, often with fresh data and more statistical power, to see if it produced the same result. The first wave of this work focused on psychology: a large-scale effort by the [http://osc.centerforopenscience.org/ Open Science Collaboration] attempted to replicate 100 studies from top psychology journals, and fewer than half succeeded.<ref>Open Science Collaboration, "Estimating the Reproducibility of Psychological Science," ''Science'', 2015.</ref> For years afterward, "the replication crisis" got treated in casual conversation as psychology's problem to solve, which let everyone else in the social sciences feel a little smug about it. [[File:Miso Soup.jpg|alt=a bowl of soup|thumb|400x400px|One famous study that failed to replicate was a study from the lab of now largely discredited researcher [[wikipedia:Brian_Wansink#Retractions_and_corrections|Brian Wansink]], claiming that people ate more if they were given a bowl of soup that had more soup pumped in from the bottom. Much of Wansink's work was later retracted because the underlying data were manipulated in ways this course will teach you are unethical.]] That smugness became harder to justify in 2026. A massive replication effort — the DARPA-funded SCORE project — attempted to replicate 274 specific findings drawn from 164 papers published between 2009 and 2018, across six fields: business, economics, education, political science, psychology, ''and sociology''.<ref>Tyner, A. H. et al. "Investigating the replicability of the social and behavioural sciences." ''Nature'' 652, 143–150 (2026).</ref> The replications were not casual efforts, either — they were high-powered (median 99.6% power to detect the original effect), used the original study materials when available, and were peer-reviewed in advance. This was about as fair a test as a field can get. The results, by discipline, were remarkably consistent — consistently unflattering. Across all six fields, only about half of claims held up: 55.1% of individual claims and 49.3% of papers replicated with a statistically significant result in the original direction. Sociology's rate was 51.1% — essentially indistinguishable from psychology's 49.0%, and statistically no different from any other field in the study (the range across disciplines ran from 42.5% to 63.1%, and the differences between fields were not significant). In plainer terms: if you flip a coin to decide whether a published sociology finding will replicate, you will do about as well as the field's actual track record — which is not a compliment, but it is at least an ''equitable'' embarrassment, evenly distributed across the disciplines that study people. It gets more specific, and slightly worse. Among the sociology studies where an effect size (more on these in later chapters) could be directly compared, the original published effect was already fairly modest (median Pearson's ''r'' = 0.10) — smaller, on average, than the original effects reported in business, economics, or psychology. When those same claims were replicated, the median effect size shrank further, to ''r'' = 0.03. That is not quite zero. It is, however, close enough to see zero from where it's standing. None of this happened because researchers were, as a rule, committing fraud. It happened because of a set of ordinary, human, entirely predictable practices that this book will spend real time on: * '''Small samples''' that produce noisy, unstable results that happen to look like a pattern. * '''[[wikipedia:Data_dredging|p-hacking]]''' — trying several analyses and reporting only the one that "worked" (more on this in Chapter 18, where it gets a proper dissection). * '''[[wikipedia:Publication_bias|Publication bias]]''' — journals overwhelmingly publish studies that find something, so the file drawer fills up with the honest null results nobody ever sees. (The file drawer, it turns out, is a lot roomier than anyone likes to admit — sociology has been contributing to it right alongside everyone else.) * '''No data or code sharing''', which meant that for decades, nobody could even check anyone else's work without redoing the entire study from scratch. So: this is not a chapter about psychology's problem. It is a chapter about sociology's problem, documented as recently as 2026, with your discipline's name attached to the data in black and white. The GSS-based examples in this book will use real sample sizes and real reported effects specifically so you get comfortable with what honest, adequately powered social science looks like — which, encouragingly, is not that hard to produce once you know what to watch for, and which is exactly what the rest of this book is trying to teach you to do. == Open Science: The Field Grows Up == [[File:OSF.png|alt=A screenshot of the OSF.io website.|thumb|600x600px|This is the home page for the OSF, which is run by the Center for Open Science. You'll have plenty of chances to work with the website throughout this course.]] The response to the replication crisis has been a genuine culture shift, usually filed under the heading [[wikipedia:Open_science|'''open science''':]] the practice of doing research in a way that lets other people check it. In practice this means a few concrete habits, all of which you will build over the course of this book: * '''Transparency''' about what you did — including the analyses that didn't pan out. * '''Data sharing''', so other researchers can look at what you looked at. * '''Code sharing''', so other researchers can run what you ran, rather than guessing at your methods from a paragraph in a journal article. * '''Pre-registration''', which means writing down your hypothesis and analysis plan ''before'' you look at the results — the statistical equivalent of calling your shot. A tool that has become central to this shift is the '''Open Science Framework''' (OSF), a free platform where researchers post their data, code, and pre-registrations. Think of it as a public diary for your research — except instead of embarrassing teenage feelings, it holds your regression code, which, depending on how that regression turned out, might be the more embarrassing of the two. You'll set up your own OSF project in Chapter 2, and you'll see "Open Science Corner" boxes like this one scattered through the rest of the book: {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Sharing your code and data is not an act of vulnerability, and it is not something you do only after you've become an established researcher with tenure and nothing left to prove. It is a basic professional habit, on the same level as citing your sources — and after the last decade, the field has run out of excuses not to do it. }} None of this is presented here as mandatory virtue. It's presented as what careful researchers already do, because the alternative — as an entire replication crisis demonstrated — is occasionally embarrassing itself in front of the entire discipline. == Chapter Summary == Statistics is a set of tools for figuring out whether a pattern you think you see in social life is actually there, and if it is, whether it's big enough to matter. Human intuition is bad at this job on its own — we build confident stories out of tiny, unrepresentative samples of our own experience, and those stories routinely turn out to be wrong when checked against actual data. Sociology relies on statistics to describe populations, test theories, find patterns invisible at the individual level, and inform decisions that affect real people. The field has recently had to reckon with a replication crisis — and a 2026 large-scale replication effort confirmed that sociology's published findings hold up about as often as psychology's, roughly half the time, with effect sizes that often shrink close to nothing on a second look. This is not one field's embarrassment; it is a shared one, caused by small samples, selective reporting, and a lack of transparency across the social sciences. The discipline-wide response, open science, is less a set of rules than a professional habit of showing your work. This book will build that habit alongside every statistical skill in it. == Think About It == This chapter has no R code and no practice problems — just some things worth sitting with before Chapter 2 gets you into RStudio. # Think of a belief you hold about some group of people (a generation, a political party, a profession — anything) that is based mostly on personal experience or things you've seen online rather than on any data you've actually looked at. What would it take to check whether that belief holds up? What data would you need? # The chapter argues that anecdotes "feel like evidence." Why do you think vivid individual stories are so much more persuasive to most people than a table of statistics showing the same pattern across thousands of cases? Is this a flaw we should try to correct, or does it serve some purpose? # If a well-known, widely cited finding in your field of interest turned out to fail replication tomorrow, what do you think the honest response should be — from the original researcher, from the field, and from the public that had heard about the finding? Does it matter whether the original researcher did anything wrong? <!-- FIGURE: A comparison chart showing public perception vs. actual statistics for 2-3 social facts (e.g., percentage Muslim, teen pregnancy rate, wealth held by top 1%), similar to Ipsos "Perils of Perception" visualizations. Author to generate with real survey data. --> <!-- FIGURE: Optional second figure — bar chart of replication rates by discipline from Tyner et al. (2026), Table 3, highlighting that sociology (51.1%) and psychology (49.0%) are statistically indistinguishable. Author to generate if desired; data available in the source PDF. --> == References == <references/> 183wxgv67eazrrg7j9l4vfi297ybzbp 4656705 4656704 2026-08-07T20:48:47Z Rcragun 41177 /* A Field That Occasionally Embarrasses Itself: The Replication Crisis */ 4656705 wikitext text/x-wiki = Chapter 1: Why Statistics? Making Sense of Social Life with Data = Ask a room full of sociology students why they're taking a statistics course, and you will get some version of the same three answers: it's required, they heard it's "not that bad," and they are visibly regretting their choice of major. This chapter exists to argue, gently but persistently, that all three of those students are wrong about at least one thing. Statistics is not just a hoop you have to jump through. It is one of the more interesting tools ever built for answering a question sociology cares about more than almost any other discipline: what is actually going on with people, as opposed to what we assume is going on with people. That distinction — between what's actually going on and what we assume is going on — is the entire subject of this book. [[File:Group of people, Novosibirsk 1.jpg|alt=A group of people in a park.|thumb|600x600px|There is a lot going on within any group of people. Statistics are used in Sociology to study groups of people.]] == What Statistics Is (and What It Isn't) == Statistics is not magic. It will not tell you what people ''should'' do, whether capitalism is good, or why your cousin holds the political views he holds. It cannot generate a fact from nothing, and it cannot rescue a badly designed study. Statistics is, more modestly, a set of tools for describing patterns in data and for deciding how much confidence those patterns deserve. It is also not "just arithmetic," despite what the equation-heavy chapters later in this book might suggest to a skeptical reader flipping ahead. Arithmetic tells you that 2 + 2 = 4. Statistics tells you whether the four-point gap in reported happiness between two groups of people is a real social pattern worth taking seriously, or the kind of noise you'd expect to see even if nothing were going on at all. That second question — is this real, and does it matter — is a much more interesting question than any of the arithmetic required to answer it, and it is the question this entire book is organized around. (If statistics really were just arithmetic, this book would be four pages long, and one of those pages would be a lecture on the order of operations.) Here is a useful mental model: statistics is what you get when you refuse to trust your gut about how the social world works until you've checked. == Anecdote vs. Evidence == Humans are excellent at building confident, coherent stories out of very small amounts of information. This was probably a useful skill on the savanna. It is a much less useful skill for understanding society, because society does not fit inside any one person's field of view. Consider a genuinely humbling body of research on how badly people estimate basic facts about their own societies. Survey researchers have repeatedly asked people in wealthy democracies to guess things like the percentage of the population that is Muslim, the percentage of teenagers who become pregnant each year, or the share of national wealth held by the top 1%. The results are not close. People in the United States, for instance, have historically guessed the Muslim share of the population at somewhere around 15%; the actual figure is about 1%.<ref>Ipsos MORI, "Perils of Perception" surveys, various years.</ref> This is not a small rounding error. This is being off by a factor of fifteen while feeling completely confident about it. [[File:Perception vs Reality - Statistics for Sociology Chart.png|alt=A dumbbell chart showing perceptions and reality.|center|thumb|800x800px|A chart illustrating the difference between perceptions of social facts and the reality of social facts.]] The point is not that people are stupid (well... that's mostly not the point!). The point is that human intuition about large-scale social patterns is built from whatever we happen to have personally encountered — the news we watch, the neighborhood we live in, the one loud cousin at Thanksgiving — and none of that adds up to a representative picture of anything. Anecdote feels like evidence. It is not evidence. It is a sample size of one, dressed up in a confident tone of voice. Your uncle at Thanksgiving may be extremely confident about what "everyone" thinks; he is, statistically speaking, an n of one, and no peer-reviewed journal on Earth will publish him, no matter how loudly he clears his throat before the next point. Statistics exists because "I feel like this is true" and "this is true" are different claims, and sociology needs a way to tell them apart. == What Sociology Needs Statistics For == Sociologists use statistics for a handful of related but distinct jobs: * '''Describing populations.''' How many people hold a given belief? What does the income distribution actually look like? Description sounds boring until you realize almost no one's intuitive guess about these numbers is correct. * '''Testing hypotheses.''' Does education predict income? Does religious attendance predict happiness? Sociological theory generates predictions; statistics is how those predictions get checked against reality instead of just sounding plausible in a seminar room. * '''Identifying patterns.''' Social life is full of relationships between variables that are invisible at the individual level and only show up once you look at enough people at once — this is arguably the founding insight of the entire discipline, going back to Durkheim noticing that suicide, an intensely personal act, follows remarkably stable social patterns.<ref>Durkheim, É. (1951). ''Suicide: A Study in Sociology'' (J. A. Spaulding & G. Simpson, Trans.). Free Press. (Original work ''Le Suicide: Étude de sociologie'' published 1897)</ref> Sociologists have, in other words, been doing data science since roughly 1897; we just didn't have nifty computers to help with the analyses back then, not even human [[wikipedia:Computer_(occupation)|computers]]. * '''Informing policy.''' Governments and organizations make decisions that affect millions of people based on what the data seem to show. Getting the statistics wrong has consequences that extend well past a bad grade on a problem set. Throughout this book, you will do all four of these things using the [[Statistics for Sociologists/Chapter 3: The General Social Survey - What It Is and How to Use It|General Social Survey]], a dataset that includes responses from surveys asking Americans about their lives, beliefs, and behaviors since 1972. You'll meet it properly in Chapter 3. For now, just know that everything from here forward is aimed at letting you ask real questions about real people and get real answers — not perfect answers, but honest ones, with the uncertainty attached. == A Field That Occasionally Embarrasses Itself: The Replication Crisis == Here is where this book earns some credibility by admitting something uncomfortable: a fair amount of what gets published across the social and behavioral sciences — sociology fully included, not just the neighbors down the hall in the psychology department — does not hold up when someone else checks it. Starting around 2011, researchers began systematically trying to replicate published findings — that is, running the same study again, often with fresh data and more statistical power, to see if it produced the same result. The first wave of this work focused on psychology: a large-scale effort by the [http://osc.centerforopenscience.org/ Open Science Collaboration] attempted to replicate 100 studies from top psychology journals, and fewer than half succeeded.<ref>Open Science Collaboration, "Estimating the Reproducibility of Psychological Science," ''Science'', 2015.</ref> For years afterward, "the replication crisis" got treated in casual conversation as psychology's problem to solve, which let everyone else in the social sciences feel a little smug about it. [[File:Miso Soup.jpg|alt=a bowl of soup|thumb|400x400px|One famous study that failed to replicate was from the lab of now largely discredited researcher [[wikipedia:Brian_Wansink#Retractions_and_corrections|Brian Wansink]], claiming that people ate more if they were given a bowl of soup that had more soup pumped in from the bottom. Much of Wansink's work was later retracted because the underlying data were manipulated in ways this course will teach you are unethical.]] That smugness became harder to justify in 2026. A massive replication effort — the DARPA-funded SCORE project — attempted to replicate 274 specific findings drawn from 164 papers published between 2009 and 2018, across six fields: business, economics, education, political science, psychology, ''and sociology''.<ref>Tyner, A. H. et al. "Investigating the replicability of the social and behavioural sciences." ''Nature'' 652, 143–150 (2026).</ref> The replications were not casual efforts, either — they were high-powered (median 99.6% power to detect the original effect), used the original study materials when available, and were peer-reviewed in advance. This was about as fair a test as a field can get. The results, by discipline, were remarkably consistent — consistently unflattering. Across all six fields, only about half of claims held up: 55.1% of individual claims and 49.3% of papers replicated with a statistically significant result in the original direction. Sociology's rate was 51.1% — essentially indistinguishable from psychology's 49.0%, and statistically no different from any other field in the study (the range across disciplines ran from 42.5% to 63.1%, and the differences between fields were not significant). In plainer terms: if you flip a coin to decide whether a published sociology finding will replicate, you will do about as well as the field's actual track record — which is not a compliment, but it is at least an ''equitable'' embarrassment, evenly distributed across the disciplines that study people. It gets more specific, and slightly worse. Among the sociology studies where an effect size (more on these in later chapters) could be directly compared, the original published effect was already fairly modest (median Pearson's ''r'' = 0.10) — smaller, on average, than the original effects reported in business, economics, or psychology. When those same claims were replicated, the median effect size shrank further, to ''r'' = 0.03. That is not quite zero. It is, however, close enough to see zero from where it's standing. None of this happened because researchers were, as a rule, committing fraud. It happened because of a set of ordinary, human, entirely predictable practices that this book will spend real time on: * '''Small samples''' that produce noisy, unstable results that happen to look like a pattern. * '''[[wikipedia:Data_dredging|p-hacking]]''' — trying several analyses and reporting only the one that "worked" (more on this in Chapter 18, where it gets a proper dissection). * '''[[wikipedia:Publication_bias|Publication bias]]''' — journals overwhelmingly publish studies that find something, so the file drawer fills up with the honest null results nobody ever sees. (The file drawer, it turns out, is a lot roomier than anyone likes to admit — sociology has been contributing to it right alongside everyone else.) * '''No data or code sharing''', which meant that for decades, nobody could even check anyone else's work without redoing the entire study from scratch. So: this is not a chapter about psychology's problem. It is a chapter about sociology's problem, documented as recently as 2026, with your discipline's name attached to the data in black and white. The GSS-based examples in this book will use real sample sizes and real reported effects specifically so you get comfortable with what honest, adequately powered social science looks like — which, encouragingly, is not that hard to produce once you know what to watch for, and which is exactly what the rest of this book is trying to teach you to do. == Open Science: The Field Grows Up == [[File:OSF.png|alt=A screenshot of the OSF.io website.|thumb|600x600px|This is the home page for the OSF, which is run by the Center for Open Science. You'll have plenty of chances to work with the website throughout this course.]] The response to the replication crisis has been a genuine culture shift, usually filed under the heading [[wikipedia:Open_science|'''open science''':]] the practice of doing research in a way that lets other people check it. In practice this means a few concrete habits, all of which you will build over the course of this book: * '''Transparency''' about what you did — including the analyses that didn't pan out. * '''Data sharing''', so other researchers can look at what you looked at. * '''Code sharing''', so other researchers can run what you ran, rather than guessing at your methods from a paragraph in a journal article. * '''Pre-registration''', which means writing down your hypothesis and analysis plan ''before'' you look at the results — the statistical equivalent of calling your shot. A tool that has become central to this shift is the '''Open Science Framework''' (OSF), a free platform where researchers post their data, code, and pre-registrations. Think of it as a public diary for your research — except instead of embarrassing teenage feelings, it holds your regression code, which, depending on how that regression turned out, might be the more embarrassing of the two. You'll set up your own OSF project in Chapter 2, and you'll see "Open Science Corner" boxes like this one scattered through the rest of the book: {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Sharing your code and data is not an act of vulnerability, and it is not something you do only after you've become an established researcher with tenure and nothing left to prove. It is a basic professional habit, on the same level as citing your sources — and after the last decade, the field has run out of excuses not to do it. }} None of this is presented here as mandatory virtue. It's presented as what careful researchers already do, because the alternative — as an entire replication crisis demonstrated — is occasionally embarrassing itself in front of the entire discipline. == Chapter Summary == Statistics is a set of tools for figuring out whether a pattern you think you see in social life is actually there, and if it is, whether it's big enough to matter. Human intuition is bad at this job on its own — we build confident stories out of tiny, unrepresentative samples of our own experience, and those stories routinely turn out to be wrong when checked against actual data. Sociology relies on statistics to describe populations, test theories, find patterns invisible at the individual level, and inform decisions that affect real people. The field has recently had to reckon with a replication crisis — and a 2026 large-scale replication effort confirmed that sociology's published findings hold up about as often as psychology's, roughly half the time, with effect sizes that often shrink close to nothing on a second look. This is not one field's embarrassment; it is a shared one, caused by small samples, selective reporting, and a lack of transparency across the social sciences. The discipline-wide response, open science, is less a set of rules than a professional habit of showing your work. This book will build that habit alongside every statistical skill in it. == Think About It == This chapter has no R code and no practice problems — just some things worth sitting with before Chapter 2 gets you into RStudio. # Think of a belief you hold about some group of people (a generation, a political party, a profession — anything) that is based mostly on personal experience or things you've seen online rather than on any data you've actually looked at. What would it take to check whether that belief holds up? What data would you need? # The chapter argues that anecdotes "feel like evidence." Why do you think vivid individual stories are so much more persuasive to most people than a table of statistics showing the same pattern across thousands of cases? Is this a flaw we should try to correct, or does it serve some purpose? # If a well-known, widely cited finding in your field of interest turned out to fail replication tomorrow, what do you think the honest response should be — from the original researcher, from the field, and from the public that had heard about the finding? Does it matter whether the original researcher did anything wrong? <!-- FIGURE: A comparison chart showing public perception vs. actual statistics for 2-3 social facts (e.g., percentage Muslim, teen pregnancy rate, wealth held by top 1%), similar to Ipsos "Perils of Perception" visualizations. Author to generate with real survey data. --> <!-- FIGURE: Optional second figure — bar chart of replication rates by discipline from Tyner et al. (2026), Table 3, highlighting that sociology (51.1%) and psychology (49.0%) are statistically indistinguishable. Author to generate if desired; data available in the source PDF. --> == References == <references/> n1vjzfqxl016fwoupo8i80w3mrd44s1 4656706 4656705 2026-08-07T20:50:54Z Rcragun 41177 /* Think About It */ 4656706 wikitext text/x-wiki = Chapter 1: Why Statistics? Making Sense of Social Life with Data = Ask a room full of sociology students why they're taking a statistics course, and you will get some version of the same three answers: it's required, they heard it's "not that bad," and they are visibly regretting their choice of major. This chapter exists to argue, gently but persistently, that all three of those students are wrong about at least one thing. Statistics is not just a hoop you have to jump through. It is one of the more interesting tools ever built for answering a question sociology cares about more than almost any other discipline: what is actually going on with people, as opposed to what we assume is going on with people. That distinction — between what's actually going on and what we assume is going on — is the entire subject of this book. [[File:Group of people, Novosibirsk 1.jpg|alt=A group of people in a park.|thumb|600x600px|There is a lot going on within any group of people. Statistics are used in Sociology to study groups of people.]] == What Statistics Is (and What It Isn't) == Statistics is not magic. It will not tell you what people ''should'' do, whether capitalism is good, or why your cousin holds the political views he holds. It cannot generate a fact from nothing, and it cannot rescue a badly designed study. Statistics is, more modestly, a set of tools for describing patterns in data and for deciding how much confidence those patterns deserve. It is also not "just arithmetic," despite what the equation-heavy chapters later in this book might suggest to a skeptical reader flipping ahead. Arithmetic tells you that 2 + 2 = 4. Statistics tells you whether the four-point gap in reported happiness between two groups of people is a real social pattern worth taking seriously, or the kind of noise you'd expect to see even if nothing were going on at all. That second question — is this real, and does it matter — is a much more interesting question than any of the arithmetic required to answer it, and it is the question this entire book is organized around. (If statistics really were just arithmetic, this book would be four pages long, and one of those pages would be a lecture on the order of operations.) Here is a useful mental model: statistics is what you get when you refuse to trust your gut about how the social world works until you've checked. == Anecdote vs. Evidence == Humans are excellent at building confident, coherent stories out of very small amounts of information. This was probably a useful skill on the savanna. It is a much less useful skill for understanding society, because society does not fit inside any one person's field of view. Consider a genuinely humbling body of research on how badly people estimate basic facts about their own societies. Survey researchers have repeatedly asked people in wealthy democracies to guess things like the percentage of the population that is Muslim, the percentage of teenagers who become pregnant each year, or the share of national wealth held by the top 1%. The results are not close. People in the United States, for instance, have historically guessed the Muslim share of the population at somewhere around 15%; the actual figure is about 1%.<ref>Ipsos MORI, "Perils of Perception" surveys, various years.</ref> This is not a small rounding error. This is being off by a factor of fifteen while feeling completely confident about it. [[File:Perception vs Reality - Statistics for Sociology Chart.png|alt=A dumbbell chart showing perceptions and reality.|center|thumb|800x800px|A chart illustrating the difference between perceptions of social facts and the reality of social facts.]] The point is not that people are stupid (well... that's mostly not the point!). The point is that human intuition about large-scale social patterns is built from whatever we happen to have personally encountered — the news we watch, the neighborhood we live in, the one loud cousin at Thanksgiving — and none of that adds up to a representative picture of anything. Anecdote feels like evidence. It is not evidence. It is a sample size of one, dressed up in a confident tone of voice. Your uncle at Thanksgiving may be extremely confident about what "everyone" thinks; he is, statistically speaking, an n of one, and no peer-reviewed journal on Earth will publish him, no matter how loudly he clears his throat before the next point. Statistics exists because "I feel like this is true" and "this is true" are different claims, and sociology needs a way to tell them apart. == What Sociology Needs Statistics For == Sociologists use statistics for a handful of related but distinct jobs: * '''Describing populations.''' How many people hold a given belief? What does the income distribution actually look like? Description sounds boring until you realize almost no one's intuitive guess about these numbers is correct. * '''Testing hypotheses.''' Does education predict income? Does religious attendance predict happiness? Sociological theory generates predictions; statistics is how those predictions get checked against reality instead of just sounding plausible in a seminar room. * '''Identifying patterns.''' Social life is full of relationships between variables that are invisible at the individual level and only show up once you look at enough people at once — this is arguably the founding insight of the entire discipline, going back to Durkheim noticing that suicide, an intensely personal act, follows remarkably stable social patterns.<ref>Durkheim, É. (1951). ''Suicide: A Study in Sociology'' (J. A. Spaulding & G. Simpson, Trans.). Free Press. (Original work ''Le Suicide: Étude de sociologie'' published 1897)</ref> Sociologists have, in other words, been doing data science since roughly 1897; we just didn't have nifty computers to help with the analyses back then, not even human [[wikipedia:Computer_(occupation)|computers]]. * '''Informing policy.''' Governments and organizations make decisions that affect millions of people based on what the data seem to show. Getting the statistics wrong has consequences that extend well past a bad grade on a problem set. Throughout this book, you will do all four of these things using the [[Statistics for Sociologists/Chapter 3: The General Social Survey - What It Is and How to Use It|General Social Survey]], a dataset that includes responses from surveys asking Americans about their lives, beliefs, and behaviors since 1972. You'll meet it properly in Chapter 3. For now, just know that everything from here forward is aimed at letting you ask real questions about real people and get real answers — not perfect answers, but honest ones, with the uncertainty attached. == A Field That Occasionally Embarrasses Itself: The Replication Crisis == Here is where this book earns some credibility by admitting something uncomfortable: a fair amount of what gets published across the social and behavioral sciences — sociology fully included, not just the neighbors down the hall in the psychology department — does not hold up when someone else checks it. Starting around 2011, researchers began systematically trying to replicate published findings — that is, running the same study again, often with fresh data and more statistical power, to see if it produced the same result. The first wave of this work focused on psychology: a large-scale effort by the [http://osc.centerforopenscience.org/ Open Science Collaboration] attempted to replicate 100 studies from top psychology journals, and fewer than half succeeded.<ref>Open Science Collaboration, "Estimating the Reproducibility of Psychological Science," ''Science'', 2015.</ref> For years afterward, "the replication crisis" got treated in casual conversation as psychology's problem to solve, which let everyone else in the social sciences feel a little smug about it. [[File:Miso Soup.jpg|alt=a bowl of soup|thumb|400x400px|One famous study that failed to replicate was from the lab of now largely discredited researcher [[wikipedia:Brian_Wansink#Retractions_and_corrections|Brian Wansink]], claiming that people ate more if they were given a bowl of soup that had more soup pumped in from the bottom. Much of Wansink's work was later retracted because the underlying data were manipulated in ways this course will teach you are unethical.]] That smugness became harder to justify in 2026. A massive replication effort — the DARPA-funded SCORE project — attempted to replicate 274 specific findings drawn from 164 papers published between 2009 and 2018, across six fields: business, economics, education, political science, psychology, ''and sociology''.<ref>Tyner, A. H. et al. "Investigating the replicability of the social and behavioural sciences." ''Nature'' 652, 143–150 (2026).</ref> The replications were not casual efforts, either — they were high-powered (median 99.6% power to detect the original effect), used the original study materials when available, and were peer-reviewed in advance. This was about as fair a test as a field can get. The results, by discipline, were remarkably consistent — consistently unflattering. Across all six fields, only about half of claims held up: 55.1% of individual claims and 49.3% of papers replicated with a statistically significant result in the original direction. Sociology's rate was 51.1% — essentially indistinguishable from psychology's 49.0%, and statistically no different from any other field in the study (the range across disciplines ran from 42.5% to 63.1%, and the differences between fields were not significant). In plainer terms: if you flip a coin to decide whether a published sociology finding will replicate, you will do about as well as the field's actual track record — which is not a compliment, but it is at least an ''equitable'' embarrassment, evenly distributed across the disciplines that study people. It gets more specific, and slightly worse. Among the sociology studies where an effect size (more on these in later chapters) could be directly compared, the original published effect was already fairly modest (median Pearson's ''r'' = 0.10) — smaller, on average, than the original effects reported in business, economics, or psychology. When those same claims were replicated, the median effect size shrank further, to ''r'' = 0.03. That is not quite zero. It is, however, close enough to see zero from where it's standing. None of this happened because researchers were, as a rule, committing fraud. It happened because of a set of ordinary, human, entirely predictable practices that this book will spend real time on: * '''Small samples''' that produce noisy, unstable results that happen to look like a pattern. * '''[[wikipedia:Data_dredging|p-hacking]]''' — trying several analyses and reporting only the one that "worked" (more on this in Chapter 18, where it gets a proper dissection). * '''[[wikipedia:Publication_bias|Publication bias]]''' — journals overwhelmingly publish studies that find something, so the file drawer fills up with the honest null results nobody ever sees. (The file drawer, it turns out, is a lot roomier than anyone likes to admit — sociology has been contributing to it right alongside everyone else.) * '''No data or code sharing''', which meant that for decades, nobody could even check anyone else's work without redoing the entire study from scratch. So: this is not a chapter about psychology's problem. It is a chapter about sociology's problem, documented as recently as 2026, with your discipline's name attached to the data in black and white. The GSS-based examples in this book will use real sample sizes and real reported effects specifically so you get comfortable with what honest, adequately powered social science looks like — which, encouragingly, is not that hard to produce once you know what to watch for, and which is exactly what the rest of this book is trying to teach you to do. == Open Science: The Field Grows Up == [[File:OSF.png|alt=A screenshot of the OSF.io website.|thumb|600x600px|This is the home page for the OSF, which is run by the Center for Open Science. You'll have plenty of chances to work with the website throughout this course.]] The response to the replication crisis has been a genuine culture shift, usually filed under the heading [[wikipedia:Open_science|'''open science''':]] the practice of doing research in a way that lets other people check it. In practice this means a few concrete habits, all of which you will build over the course of this book: * '''Transparency''' about what you did — including the analyses that didn't pan out. * '''Data sharing''', so other researchers can look at what you looked at. * '''Code sharing''', so other researchers can run what you ran, rather than guessing at your methods from a paragraph in a journal article. * '''Pre-registration''', which means writing down your hypothesis and analysis plan ''before'' you look at the results — the statistical equivalent of calling your shot. A tool that has become central to this shift is the '''Open Science Framework''' (OSF), a free platform where researchers post their data, code, and pre-registrations. Think of it as a public diary for your research — except instead of embarrassing teenage feelings, it holds your regression code, which, depending on how that regression turned out, might be the more embarrassing of the two. You'll set up your own OSF project in Chapter 2, and you'll see "Open Science Corner" boxes like this one scattered through the rest of the book: {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Sharing your code and data is not an act of vulnerability, and it is not something you do only after you've become an established researcher with tenure and nothing left to prove. It is a basic professional habit, on the same level as citing your sources — and after the last decade, the field has run out of excuses not to do it. }} None of this is presented here as mandatory virtue. It's presented as what careful researchers already do, because the alternative — as an entire replication crisis demonstrated — is occasionally embarrassing itself in front of the entire discipline. == Chapter Summary == Statistics is a set of tools for figuring out whether a pattern you think you see in social life is actually there, and if it is, whether it's big enough to matter. Human intuition is bad at this job on its own — we build confident stories out of tiny, unrepresentative samples of our own experience, and those stories routinely turn out to be wrong when checked against actual data. Sociology relies on statistics to describe populations, test theories, find patterns invisible at the individual level, and inform decisions that affect real people. The field has recently had to reckon with a replication crisis — and a 2026 large-scale replication effort confirmed that sociology's published findings hold up about as often as psychology's, roughly half the time, with effect sizes that often shrink close to nothing on a second look. This is not one field's embarrassment; it is a shared one, caused by small samples, selective reporting, and a lack of transparency across the social sciences. The discipline-wide response, open science, is less a set of rules than a professional habit of showing your work. This book will build that habit alongside every statistical skill in it. == Think About It == This chapter has no R code and no practice problems — just some things worth sitting with before Chapter 2 gets you into RStudio. # Think of a belief you hold about some group of people (a generation, a political party, a profession — anything) that is based mostly on personal experience or things you've seen online rather than on any data you've actually looked at. What would it take to check whether that belief holds up? What data would you need? # The chapter argues that anecdotes "feel like evidence." Why do you think vivid individual stories are so much more persuasive to most people than a table of statistics showing the same pattern across thousands of cases? Is this a flaw we should try to correct, or does it serve some purpose? # If a well-known, widely cited finding in your field of interest turned out to fail replication tomorrow, what do you think the honest response should be — from the original researcher, from the field, and from the public that had heard about the finding? Does it matter whether the original researcher did anything wrong? <!-- FIGURE: Optional second figure — bar chart of replication rates by discipline from Tyner et al. (2026), Table 3, highlighting that sociology (51.1%) and psychology (49.0%) are statistically indistinguishable. Author to generate if desired; data available in the source PDF. --> == References == <references/> 542txg848y0dyq2aw2g832wcy75xj0t 4656711 4656706 2026-08-07T21:32:51Z Rcragun 41177 /* A Field That Occasionally Embarrasses Itself: The Replication Crisis */ 4656711 wikitext text/x-wiki = Chapter 1: Why Statistics? Making Sense of Social Life with Data = Ask a room full of sociology students why they're taking a statistics course, and you will get some version of the same three answers: it's required, they heard it's "not that bad," and they are visibly regretting their choice of major. This chapter exists to argue, gently but persistently, that all three of those students are wrong about at least one thing. Statistics is not just a hoop you have to jump through. It is one of the more interesting tools ever built for answering a question sociology cares about more than almost any other discipline: what is actually going on with people, as opposed to what we assume is going on with people. That distinction — between what's actually going on and what we assume is going on — is the entire subject of this book. [[File:Group of people, Novosibirsk 1.jpg|alt=A group of people in a park.|thumb|600x600px|There is a lot going on within any group of people. Statistics are used in Sociology to study groups of people.]] == What Statistics Is (and What It Isn't) == Statistics is not magic. It will not tell you what people ''should'' do, whether capitalism is good, or why your cousin holds the political views he holds. It cannot generate a fact from nothing, and it cannot rescue a badly designed study. Statistics is, more modestly, a set of tools for describing patterns in data and for deciding how much confidence those patterns deserve. It is also not "just arithmetic," despite what the equation-heavy chapters later in this book might suggest to a skeptical reader flipping ahead. Arithmetic tells you that 2 + 2 = 4. Statistics tells you whether the four-point gap in reported happiness between two groups of people is a real social pattern worth taking seriously, or the kind of noise you'd expect to see even if nothing were going on at all. That second question — is this real, and does it matter — is a much more interesting question than any of the arithmetic required to answer it, and it is the question this entire book is organized around. (If statistics really were just arithmetic, this book would be four pages long, and one of those pages would be a lecture on the order of operations.) Here is a useful mental model: statistics is what you get when you refuse to trust your gut about how the social world works until you've checked. == Anecdote vs. Evidence == Humans are excellent at building confident, coherent stories out of very small amounts of information. This was probably a useful skill on the savanna. It is a much less useful skill for understanding society, because society does not fit inside any one person's field of view. Consider a genuinely humbling body of research on how badly people estimate basic facts about their own societies. Survey researchers have repeatedly asked people in wealthy democracies to guess things like the percentage of the population that is Muslim, the percentage of teenagers who become pregnant each year, or the share of national wealth held by the top 1%. The results are not close. People in the United States, for instance, have historically guessed the Muslim share of the population at somewhere around 15%; the actual figure is about 1%.<ref>Ipsos MORI, "Perils of Perception" surveys, various years.</ref> This is not a small rounding error. This is being off by a factor of fifteen while feeling completely confident about it. [[File:Perception vs Reality - Statistics for Sociology Chart.png|alt=A dumbbell chart showing perceptions and reality.|center|thumb|800x800px|A chart illustrating the difference between perceptions of social facts and the reality of social facts.]] The point is not that people are stupid (well... that's mostly not the point!). The point is that human intuition about large-scale social patterns is built from whatever we happen to have personally encountered — the news we watch, the neighborhood we live in, the one loud cousin at Thanksgiving — and none of that adds up to a representative picture of anything. Anecdote feels like evidence. It is not evidence. It is a sample size of one, dressed up in a confident tone of voice. Your uncle at Thanksgiving may be extremely confident about what "everyone" thinks; he is, statistically speaking, an n of one, and no peer-reviewed journal on Earth will publish him, no matter how loudly he clears his throat before the next point. Statistics exists because "I feel like this is true" and "this is true" are different claims, and sociology needs a way to tell them apart. == What Sociology Needs Statistics For == Sociologists use statistics for a handful of related but distinct jobs: * '''Describing populations.''' How many people hold a given belief? What does the income distribution actually look like? Description sounds boring until you realize almost no one's intuitive guess about these numbers is correct. * '''Testing hypotheses.''' Does education predict income? Does religious attendance predict happiness? Sociological theory generates predictions; statistics is how those predictions get checked against reality instead of just sounding plausible in a seminar room. * '''Identifying patterns.''' Social life is full of relationships between variables that are invisible at the individual level and only show up once you look at enough people at once — this is arguably the founding insight of the entire discipline, going back to Durkheim noticing that suicide, an intensely personal act, follows remarkably stable social patterns.<ref>Durkheim, É. (1951). ''Suicide: A Study in Sociology'' (J. A. Spaulding & G. Simpson, Trans.). Free Press. (Original work ''Le Suicide: Étude de sociologie'' published 1897)</ref> Sociologists have, in other words, been doing data science since roughly 1897; we just didn't have nifty computers to help with the analyses back then, not even human [[wikipedia:Computer_(occupation)|computers]]. * '''Informing policy.''' Governments and organizations make decisions that affect millions of people based on what the data seem to show. Getting the statistics wrong has consequences that extend well past a bad grade on a problem set. Throughout this book, you will do all four of these things using the [[Statistics for Sociologists/Chapter 3: The General Social Survey - What It Is and How to Use It|General Social Survey]], a dataset that includes responses from surveys asking Americans about their lives, beliefs, and behaviors since 1972. You'll meet it properly in Chapter 3. For now, just know that everything from here forward is aimed at letting you ask real questions about real people and get real answers — not perfect answers, but honest ones, with the uncertainty attached. == A Field That Occasionally Embarrasses Itself: The Replication Crisis == Here is where this book earns some credibility by admitting something uncomfortable: a fair amount of what gets published across the social and behavioral sciences — sociology fully included, not just the neighbors down the hall in the psychology department — does not hold up when someone else checks it. Starting around 2011, researchers began systematically trying to replicate published findings — that is, running the same study again, often with fresh data and more statistical power, to see if it produced the same result. The first wave of this work focused on psychology: a large-scale effort by the [http://osc.centerforopenscience.org/ Open Science Collaboration] attempted to replicate 100 studies from top psychology journals, and fewer than half succeeded.<ref>Open Science Collaboration, "Estimating the Reproducibility of Psychological Science," ''Science'', 2015.</ref> For years afterward, "the replication crisis" got treated in casual conversation as psychology's problem to solve, which let everyone else in the social sciences feel a little smug about it. That smugness became harder to justify in 2026. A massive replication effort — the DARPA-funded SCORE project — attempted to replicate 274 specific findings drawn from 164 papers published between 2009 and 2018, across six fields: business, economics, education, political science, psychology, ''and sociology''.<ref>Tyner, A. H. et al. "Investigating the replicability of the social and behavioural sciences." ''Nature'' 652, 143–150 (2026).</ref> The replications were not casual efforts, either — they were high-powered (median 99.6% power to detect the original effect), used the original study materials when available, and were peer-reviewed in advance. This was about as fair a test as a field can get. The results, by discipline, were remarkably consistent — consistently unflattering. Across all six fields, only about half of claims held up: 55.1% of individual claims and 49.3% of papers replicated with a statistically significant result in the original direction. Sociology's rate was 51.1% — essentially indistinguishable from psychology's 49.0%, and statistically no different from any other field in the study (the range across disciplines ran from 42.5% to 63.1%, and the differences between fields were not significant). In plainer terms: if you flip a coin to decide whether a published sociology finding will replicate, you will do about as well as the field's actual track record — which is not a compliment, but it is at least an ''equitable'' embarrassment, evenly distributed across the disciplines that study people. It gets more specific, and slightly worse. Among the sociology studies where an effect size (more on these in later chapters) could be directly compared, the original published effect was already fairly modest (median Pearson's ''r'' = 0.10) — smaller, on average, than the original effects reported in business, economics, or psychology. When those same claims were replicated, the median effect size shrank further, to ''r'' = 0.03. That is not quite zero. It is, however, close enough to see zero from where it's standing. None of this happened because researchers were, as a rule, committing fraud. It happened because of a set of ordinary, human, entirely predictable practices that this book will spend real time on: [[File:Miso Soup.jpg|alt=a bowl of soup|thumb|400x400px|One famous study that failed to replicate was from the lab of now largely discredited researcher [[wikipedia:Brian_Wansink#Retractions_and_corrections|Brian Wansink]], claiming that people ate more if they were given a bowl of soup that had more soup pumped in from the bottom. Much of Wansink's work was later retracted because the underlying data were manipulated in ways this course will teach you are unethical.]] * '''Small samples''' that produce noisy, unstable results that happen to look like a pattern. * '''[[wikipedia:Data_dredging|p-hacking]]''' — trying several analyses and reporting only the one that "worked" (more on this in Chapter 18, where it gets a proper dissection). * '''[[wikipedia:Publication_bias|Publication bias]]''' — journals overwhelmingly publish studies that find something, so the file drawer fills up with the honest null results nobody ever sees. (The file drawer, it turns out, is a lot roomier than anyone likes to admit — sociology has been contributing to it right alongside everyone else.) * '''No data or code sharing''', which meant that for decades, nobody could even check anyone else's work without redoing the entire study from scratch. So: this is not a chapter about psychology's problem. It is a chapter about sociology's problem, documented as recently as 2026, with your discipline's name attached to the data in black and white. The GSS-based examples in this book will use real sample sizes and real reported effects specifically so you get comfortable with what honest, adequately powered social science looks like — which, encouragingly, is not that hard to produce once you know what to watch for, and which is exactly what the rest of this book is trying to teach you to do. == Open Science: The Field Grows Up == [[File:OSF.png|alt=A screenshot of the OSF.io website.|thumb|600x600px|This is the home page for the OSF, which is run by the Center for Open Science. You'll have plenty of chances to work with the website throughout this course.]] The response to the replication crisis has been a genuine culture shift, usually filed under the heading [[wikipedia:Open_science|'''open science''':]] the practice of doing research in a way that lets other people check it. In practice this means a few concrete habits, all of which you will build over the course of this book: * '''Transparency''' about what you did — including the analyses that didn't pan out. * '''Data sharing''', so other researchers can look at what you looked at. * '''Code sharing''', so other researchers can run what you ran, rather than guessing at your methods from a paragraph in a journal article. * '''Pre-registration''', which means writing down your hypothesis and analysis plan ''before'' you look at the results — the statistical equivalent of calling your shot. A tool that has become central to this shift is the '''Open Science Framework''' (OSF), a free platform where researchers post their data, code, and pre-registrations. Think of it as a public diary for your research — except instead of embarrassing teenage feelings, it holds your regression code, which, depending on how that regression turned out, might be the more embarrassing of the two. You'll set up your own OSF project in Chapter 2, and you'll see "Open Science Corner" boxes like this one scattered through the rest of the book: {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Sharing your code and data is not an act of vulnerability, and it is not something you do only after you've become an established researcher with tenure and nothing left to prove. It is a basic professional habit, on the same level as citing your sources — and after the last decade, the field has run out of excuses not to do it. }} None of this is presented here as mandatory virtue. It's presented as what careful researchers already do, because the alternative — as an entire replication crisis demonstrated — is occasionally embarrassing itself in front of the entire discipline. == Chapter Summary == Statistics is a set of tools for figuring out whether a pattern you think you see in social life is actually there, and if it is, whether it's big enough to matter. Human intuition is bad at this job on its own — we build confident stories out of tiny, unrepresentative samples of our own experience, and those stories routinely turn out to be wrong when checked against actual data. Sociology relies on statistics to describe populations, test theories, find patterns invisible at the individual level, and inform decisions that affect real people. The field has recently had to reckon with a replication crisis — and a 2026 large-scale replication effort confirmed that sociology's published findings hold up about as often as psychology's, roughly half the time, with effect sizes that often shrink close to nothing on a second look. This is not one field's embarrassment; it is a shared one, caused by small samples, selective reporting, and a lack of transparency across the social sciences. The discipline-wide response, open science, is less a set of rules than a professional habit of showing your work. This book will build that habit alongside every statistical skill in it. == Think About It == This chapter has no R code and no practice problems — just some things worth sitting with before Chapter 2 gets you into RStudio. # Think of a belief you hold about some group of people (a generation, a political party, a profession — anything) that is based mostly on personal experience or things you've seen online rather than on any data you've actually looked at. What would it take to check whether that belief holds up? What data would you need? # The chapter argues that anecdotes "feel like evidence." Why do you think vivid individual stories are so much more persuasive to most people than a table of statistics showing the same pattern across thousands of cases? Is this a flaw we should try to correct, or does it serve some purpose? # If a well-known, widely cited finding in your field of interest turned out to fail replication tomorrow, what do you think the honest response should be — from the original researcher, from the field, and from the public that had heard about the finding? Does it matter whether the original researcher did anything wrong? <!-- FIGURE: Optional second figure — bar chart of replication rates by discipline from Tyner et al. (2026), Table 3, highlighting that sociology (51.1%) and psychology (49.0%) are statistically indistinguishable. Author to generate if desired; data available in the source PDF. --> == References == <references/> rwzc5edj317gac62vera78mualht19k 4656713 4656711 2026-08-07T21:35:00Z Rcragun 41177 /* A Field That Occasionally Embarrasses Itself: The Replication Crisis */ added chart 4656713 wikitext text/x-wiki = Chapter 1: Why Statistics? Making Sense of Social Life with Data = Ask a room full of sociology students why they're taking a statistics course, and you will get some version of the same three answers: it's required, they heard it's "not that bad," and they are visibly regretting their choice of major. This chapter exists to argue, gently but persistently, that all three of those students are wrong about at least one thing. Statistics is not just a hoop you have to jump through. It is one of the more interesting tools ever built for answering a question sociology cares about more than almost any other discipline: what is actually going on with people, as opposed to what we assume is going on with people. That distinction — between what's actually going on and what we assume is going on — is the entire subject of this book. [[File:Group of people, Novosibirsk 1.jpg|alt=A group of people in a park.|thumb|600x600px|There is a lot going on within any group of people. Statistics are used in Sociology to study groups of people.]] == What Statistics Is (and What It Isn't) == Statistics is not magic. It will not tell you what people ''should'' do, whether capitalism is good, or why your cousin holds the political views he holds. It cannot generate a fact from nothing, and it cannot rescue a badly designed study. Statistics is, more modestly, a set of tools for describing patterns in data and for deciding how much confidence those patterns deserve. It is also not "just arithmetic," despite what the equation-heavy chapters later in this book might suggest to a skeptical reader flipping ahead. Arithmetic tells you that 2 + 2 = 4. Statistics tells you whether the four-point gap in reported happiness between two groups of people is a real social pattern worth taking seriously, or the kind of noise you'd expect to see even if nothing were going on at all. That second question — is this real, and does it matter — is a much more interesting question than any of the arithmetic required to answer it, and it is the question this entire book is organized around. (If statistics really were just arithmetic, this book would be four pages long, and one of those pages would be a lecture on the order of operations.) Here is a useful mental model: statistics is what you get when you refuse to trust your gut about how the social world works until you've checked. == Anecdote vs. Evidence == Humans are excellent at building confident, coherent stories out of very small amounts of information. This was probably a useful skill on the savanna. It is a much less useful skill for understanding society, because society does not fit inside any one person's field of view. Consider a genuinely humbling body of research on how badly people estimate basic facts about their own societies. Survey researchers have repeatedly asked people in wealthy democracies to guess things like the percentage of the population that is Muslim, the percentage of teenagers who become pregnant each year, or the share of national wealth held by the top 1%. The results are not close. People in the United States, for instance, have historically guessed the Muslim share of the population at somewhere around 15%; the actual figure is about 1%.<ref>Ipsos MORI, "Perils of Perception" surveys, various years.</ref> This is not a small rounding error. This is being off by a factor of fifteen while feeling completely confident about it. [[File:Perception vs Reality - Statistics for Sociology Chart.png|alt=A dumbbell chart showing perceptions and reality.|center|thumb|800x800px|A chart illustrating the difference between perceptions of social facts and the reality of social facts.]] The point is not that people are stupid (well... that's mostly not the point!). The point is that human intuition about large-scale social patterns is built from whatever we happen to have personally encountered — the news we watch, the neighborhood we live in, the one loud cousin at Thanksgiving — and none of that adds up to a representative picture of anything. Anecdote feels like evidence. It is not evidence. It is a sample size of one, dressed up in a confident tone of voice. Your uncle at Thanksgiving may be extremely confident about what "everyone" thinks; he is, statistically speaking, an n of one, and no peer-reviewed journal on Earth will publish him, no matter how loudly he clears his throat before the next point. Statistics exists because "I feel like this is true" and "this is true" are different claims, and sociology needs a way to tell them apart. == What Sociology Needs Statistics For == Sociologists use statistics for a handful of related but distinct jobs: * '''Describing populations.''' How many people hold a given belief? What does the income distribution actually look like? Description sounds boring until you realize almost no one's intuitive guess about these numbers is correct. * '''Testing hypotheses.''' Does education predict income? Does religious attendance predict happiness? Sociological theory generates predictions; statistics is how those predictions get checked against reality instead of just sounding plausible in a seminar room. * '''Identifying patterns.''' Social life is full of relationships between variables that are invisible at the individual level and only show up once you look at enough people at once — this is arguably the founding insight of the entire discipline, going back to Durkheim noticing that suicide, an intensely personal act, follows remarkably stable social patterns.<ref>Durkheim, É. (1951). ''Suicide: A Study in Sociology'' (J. A. Spaulding & G. Simpson, Trans.). Free Press. (Original work ''Le Suicide: Étude de sociologie'' published 1897)</ref> Sociologists have, in other words, been doing data science since roughly 1897; we just didn't have nifty computers to help with the analyses back then, not even human [[wikipedia:Computer_(occupation)|computers]]. * '''Informing policy.''' Governments and organizations make decisions that affect millions of people based on what the data seem to show. Getting the statistics wrong has consequences that extend well past a bad grade on a problem set. Throughout this book, you will do all four of these things using the [[Statistics for Sociologists/Chapter 3: The General Social Survey - What It Is and How to Use It|General Social Survey]], a dataset that includes responses from surveys asking Americans about their lives, beliefs, and behaviors since 1972. You'll meet it properly in Chapter 3. For now, just know that everything from here forward is aimed at letting you ask real questions about real people and get real answers — not perfect answers, but honest ones, with the uncertainty attached. == A Field That Occasionally Embarrasses Itself: The Replication Crisis == Here is where this book earns some credibility by admitting something uncomfortable: a fair amount of what gets published across the social and behavioral sciences — sociology fully included, not just the neighbors down the hall in the psychology department — does not hold up when someone else checks it. Starting around 2011, researchers began systematically trying to replicate published findings — that is, running the same study again, often with fresh data and more statistical power, to see if it produced the same result. The first wave of this work focused on psychology: a large-scale effort by the [http://osc.centerforopenscience.org/ Open Science Collaboration] attempted to replicate 100 studies from top psychology journals, and fewer than half succeeded.<ref>Open Science Collaboration, "Estimating the Reproducibility of Psychological Science," ''Science'', 2015.</ref> For years afterward, "the replication crisis" got treated in casual conversation as psychology's problem to solve, which let everyone else in the social sciences feel a little smug about it. That smugness became harder to justify in 2026. A massive replication effort — the DARPA-funded SCORE project — attempted to replicate 274 specific findings drawn from 164 papers published between 2009 and 2018, across six fields: business, economics, education, political science, psychology, ''and sociology''.<ref>Tyner, A. H. et al. "Investigating the replicability of the social and behavioural sciences." ''Nature'' 652, 143–150 (2026).</ref> The replications were not casual efforts, either — they were high-powered (median 99.6% power to detect the original effect), used the original study materials when available, and were peer-reviewed in advance. This was about as fair a test as a field can get. [[File:Bar Chart Illustrating Replication Rates in Social Science Disciplines.png|alt=A bar chart illustrating replication rates.|none|thumb|800x800px|This chart, created in R, illustrates the replication rates in the social sciences per Tyner et al. 2026.]] The results, by discipline, were remarkably consistent — consistently unflattering. Across all six fields, only about half of claims held up: 55.1% of individual claims and 49.3% of papers replicated with a statistically significant result in the original direction. Sociology's rate was 51.1% — essentially indistinguishable from psychology's 49.0%, and statistically no different from any other field in the study (the range across disciplines ran from 42.5% to 63.1%, and the differences between fields were not significant). In plainer terms: if you flip a coin to decide whether a published sociology finding will replicate, you will do about as well as the field's actual track record — which is not a compliment, but it is at least an ''equitable'' embarrassment, evenly distributed across the disciplines that study people. It gets more specific, and slightly worse. Among the sociology studies where an effect size (more on these in later chapters) could be directly compared, the original published effect was already fairly modest (median Pearson's ''r'' = 0.10) — smaller, on average, than the original effects reported in business, economics, or psychology. When those same claims were replicated, the median effect size shrank further, to ''r'' = 0.03. That is not quite zero. It is, however, close enough to see zero from where it's standing. None of this happened because researchers were, as a rule, committing fraud. It happened because of a set of ordinary, human, entirely predictable practices that this book will spend real time on: [[File:Miso Soup.jpg|alt=a bowl of soup|thumb|400x400px|One famous study that failed to replicate was from the lab of now largely discredited researcher [[wikipedia:Brian_Wansink#Retractions_and_corrections|Brian Wansink]], claiming that people ate more if they were given a bowl of soup that had more soup pumped in from the bottom. Much of Wansink's work was later retracted because the underlying data were manipulated in ways this course will teach you are unethical.]] * '''Small samples''' that produce noisy, unstable results that happen to look like a pattern. * '''[[wikipedia:Data_dredging|p-hacking]]''' — trying several analyses and reporting only the one that "worked" (more on this in Chapter 18, where it gets a proper dissection). * '''[[wikipedia:Publication_bias|Publication bias]]''' — journals overwhelmingly publish studies that find something, so the file drawer fills up with the honest null results nobody ever sees. (The file drawer, it turns out, is a lot roomier than anyone likes to admit — sociology has been contributing to it right alongside everyone else.) * '''No data or code sharing''', which meant that for decades, nobody could even check anyone else's work without redoing the entire study from scratch. So: this is not a chapter about psychology's problem. It is a chapter about sociology's problem, documented as recently as 2026, with your discipline's name attached to the data in black and white. The GSS-based examples in this book will use real sample sizes and real reported effects specifically so you get comfortable with what honest, adequately powered social science looks like — which, encouragingly, is not that hard to produce once you know what to watch for, and which is exactly what the rest of this book is trying to teach you to do. == Open Science: The Field Grows Up == [[File:OSF.png|alt=A screenshot of the OSF.io website.|thumb|600x600px|This is the home page for the OSF, which is run by the Center for Open Science. You'll have plenty of chances to work with the website throughout this course.]] The response to the replication crisis has been a genuine culture shift, usually filed under the heading [[wikipedia:Open_science|'''open science''':]] the practice of doing research in a way that lets other people check it. In practice this means a few concrete habits, all of which you will build over the course of this book: * '''Transparency''' about what you did — including the analyses that didn't pan out. * '''Data sharing''', so other researchers can look at what you looked at. * '''Code sharing''', so other researchers can run what you ran, rather than guessing at your methods from a paragraph in a journal article. * '''Pre-registration''', which means writing down your hypothesis and analysis plan ''before'' you look at the results — the statistical equivalent of calling your shot. A tool that has become central to this shift is the '''Open Science Framework''' (OSF), a free platform where researchers post their data, code, and pre-registrations. Think of it as a public diary for your research — except instead of embarrassing teenage feelings, it holds your regression code, which, depending on how that regression turned out, might be the more embarrassing of the two. You'll set up your own OSF project in Chapter 2, and you'll see "Open Science Corner" boxes like this one scattered through the rest of the book: {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Sharing your code and data is not an act of vulnerability, and it is not something you do only after you've become an established researcher with tenure and nothing left to prove. It is a basic professional habit, on the same level as citing your sources — and after the last decade, the field has run out of excuses not to do it. }} None of this is presented here as mandatory virtue. It's presented as what careful researchers already do, because the alternative — as an entire replication crisis demonstrated — is occasionally embarrassing itself in front of the entire discipline. == Chapter Summary == Statistics is a set of tools for figuring out whether a pattern you think you see in social life is actually there, and if it is, whether it's big enough to matter. Human intuition is bad at this job on its own — we build confident stories out of tiny, unrepresentative samples of our own experience, and those stories routinely turn out to be wrong when checked against actual data. Sociology relies on statistics to describe populations, test theories, find patterns invisible at the individual level, and inform decisions that affect real people. The field has recently had to reckon with a replication crisis — and a 2026 large-scale replication effort confirmed that sociology's published findings hold up about as often as psychology's, roughly half the time, with effect sizes that often shrink close to nothing on a second look. This is not one field's embarrassment; it is a shared one, caused by small samples, selective reporting, and a lack of transparency across the social sciences. The discipline-wide response, open science, is less a set of rules than a professional habit of showing your work. This book will build that habit alongside every statistical skill in it. == Think About It == This chapter has no R code and no practice problems — just some things worth sitting with before Chapter 2 gets you into RStudio. # Think of a belief you hold about some group of people (a generation, a political party, a profession — anything) that is based mostly on personal experience or things you've seen online rather than on any data you've actually looked at. What would it take to check whether that belief holds up? What data would you need? # The chapter argues that anecdotes "feel like evidence." Why do you think vivid individual stories are so much more persuasive to most people than a table of statistics showing the same pattern across thousands of cases? Is this a flaw we should try to correct, or does it serve some purpose? # If a well-known, widely cited finding in your field of interest turned out to fail replication tomorrow, what do you think the honest response should be — from the original researcher, from the field, and from the public that had heard about the finding? Does it matter whether the original researcher did anything wrong? <!-- FIGURE: Optional second figure — bar chart of replication rates by discipline from Tyner et al. (2026), Table 3, highlighting that sociology (51.1%) and psychology (49.0%) are statistically indistinguishable. Author to generate if desired; data available in the source PDF. --> == References == <references/> ao7bo7tewk1yptauxpa73lyqh96763z Statistics for Sociologists/Chapter 2: Getting Started with R and RStudio 0 485136 4656585 4656564 2026-08-07T14:02:16Z Rcragun 41177 small edits 4656585 wikitext text/x-wiki = Chapter 2: Getting Started with R and RStudio = Every statistics course eventually arrives at an awkward moment: before you can analyze anything, you have to install something. This chapter is that moment. It is not glamorous, and approximately no one has ever described installing software as "fun," but it is a one-time cost, and by the end of this chapter you will have a working statistical environment on your computer and the first few sentences of a new language under your belt. That language is R. This chapter gets you talking to it. <!-- IMAGE: A friendly, low-stakes illustration of a laptop with the R and RStudio logos, or a photo of a clean, uncluttered RStudio desktop setup — something to make the "installation chapter" feel approachable rather than intimidating. --> == What Is R? What Is RStudio? == '''R'''<ref>R Core Team. ''R: A Language and Environment for Statistical Computing''. R Foundation for Statistical Computing, Vienna, Austria. https://www.R-project.org/</ref> is a programming language built specifically for statistics. It is free, it is open source, and it is what a very large share of working statisticians, data scientists, and quantitative social scientists actually use — not because it's trendy, but because it does what it's built to do, and thousands of people have spent decades adding to it. This is not Excel with a promotion. Excel is built for accounting and calendars, and it shows the strain the moment you ask it to do anything statistically serious. R was built for exactly this job, from the ground up. '''RStudio''' is not a different thing from R — it's a way of using R that doesn't make you want to throw your laptop out a window. R by itself is just an engine: it runs, it does the math, but it gives you almost nothing to look at while it works. RStudio is the car built around that engine — the dashboard, the windows, the seats, the place where you actually sit while the engine does its job. You will install both. You will only ever open one. == Installing R and RStudio == Installation instructions for software change more often than a textbook can keep up with, so rather than walk through exact button-clicking steps that may be outdated by the time you read this, here is the durable version: # Go to the '''CRAN''' website (the Comprehensive R Archive Network, at cran.r-project.org) and download R for your operating system. This installs the engine. # Go to '''Posit''' (posit.co, the company that makes RStudio — formerly called RStudio, in a naming decision that has confused exactly everyone) and download RStudio Desktop, the free version. This installs the dashboard. # Install R first, then RStudio. Order matters here the way it matters for putting on socks before shoes. # Open RStudio, not R directly. If everything installed correctly, RStudio will find R automatically and you'll never need to open R by itself again. If your first attempt at installing anything statistical software-related feels slightly wrong — like you're not sure you did it correctly even after it seems to have worked — that is a completely normal reaction and not a sign you are bad at this. Everyone in this field has had that exact feeling at least once. Most have had it more than once, usually right before an update. <!-- IMAGE: Simple side-by-side visual of the CRAN download page and the Posit/RStudio download page, or a labeled diagram showing "Step 1: Install R" → "Step 2: Install RStudio" → "Step 3: Open RStudio." Helps orient students who are installing for the first time. --> == A Tour of RStudio == When you open RStudio for the first time, you'll see it divided into several panes. Don't panic — you will not need to master all of them today. * '''Console.''' The bottom-left pane (or sometimes the whole left side). This is where you type commands directly and R responds immediately. Think of it as a conversation with R that nobody saves unless you tell it to. * '''Script Editor.''' The top-left pane, which appears once you open or create a script file (a plain text file ending in <code>.R</code>). This is where you write code you intend to keep, run, and rerun — as opposed to the Console, which forgets everything the moment you close it. * '''Environment pane.''' Usually top-right. Lists every object you've created in your current session — every vector, every data frame, every variable name you've typed into existence. This is your workspace's inventory. * '''Files / Plots / Help pane.''' Usually bottom-right. A multitasking corner: it shows your file browser, displays any plots you generate, and hosts R's built-in help documentation (accessible any time by typing <code>?functionname</code> in the Console — a habit worth building early, since Googling "R table function" tends to return furniture before it returns documentation). The single most important habit to build right now: '''write your code in the Script Editor, not the Console.''' The Console is for quick questions you'll never need again — "what's 47 times 12" territory. Anything you might want to run again tomorrow, or hand in for an assignment, or show your professor when something breaks, belongs in a script. <!-- IMAGE: An annotated screenshot of the RStudio interface with the four panes labeled (Console, Script Editor, Environment, Files/Plots/Help). This is the single most useful image this chapter could have — students benefit enormously from seeing the real layout with labels, not just reading about it. --> == Basic R: Arithmetic, Assignment, and Running Code == R will do arithmetic the moment you ask it to. Type this into the Console and press Enter: <syntaxhighlight lang="r"> 2 + 2 </syntaxhighlight> R will respond with <code>[1] 4</code>. The <code>[1]</code> is not R being weird for its own sake — it's telling you that this is the first (and in this case only) value in the result. You'll understand why that matters once results start having more than one value, which will be almost immediately. R also does subtraction, multiplication (<code>*</code>), division (<code>/</code>), and exponents (<code>^</code>), in the standard order of operations. Try: <syntaxhighlight lang="r"> (5 + 3) * 2 10 / 4 2^3 </syntaxhighlight> The more important operator, and the one that will confuse you for approximately one week and then never again, is '''assignment''': <code><-</code>. This stores a value under a name you choose. <syntaxhighlight lang="r"> x <- 5 x </syntaxhighlight> Read <code><-</code> out loud as "gets." "<code>x</code> gets 5" means: take the value 5, and store it in an object called <code>x</code>. From now on, typing <code>x</code> will return 5, until you assign something else to it. The arrow points in the direction the value is flowing — from the 5 into the <code>x</code> — which is either a small, elegant piece of interface design or the closest thing R has to a philosophical statement, depending on how much sleep you've had. (You can also use <code>=</code> for assignment in most contexts, and you will see it in other people's code. This book uses <code><-</code> throughout, both because it's the R convention and because it makes the direction of "what is being stored where" unambiguous.) == Objects You'll Meet: Vectors and Data Frames == You don't need a full computer science vocabulary to use R, but two object types will show up constantly from Chapter 5 onward, so it's worth meeting them now, briefly, like introducing two people you'll be spending the semester with. A '''vector''' is a sequence of values of the same type — all numbers, or all text, but not mixed. You build one with the <code>c()</code> function (short for "combine"): <syntaxhighlight lang="r"> ages <- c(24, 31, 45, 19, 62) ages </syntaxhighlight> A '''data frame''' is what you'll spend most of this book working with: a rectangular table, rows and columns, exactly like a spreadsheet, where each column is typically a vector and each row is typically a case — in this book's terms, a GSS respondent. You won't build data frames from scratch very often; you'll load them from files, starting in Chapter 3. For now, just know the shape: rows are people, columns are variables, and the whole thing is called a data frame. == Packages: Teaching R New Tricks == R comes with a lot built in, but the real power comes from '''packages''' — bundles of additional functions that other people have written and shared, freely, for exactly this purpose. You install a package once per computer, and load it once per R session. <syntaxhighlight lang="r"> install.packages("tidyverse") library(tidyverse) </syntaxhighlight> The '''tidyverse'''<ref>Wickham, H., Averick, M., Bryan, J., Chang, W., McGowan, L. D., François, R., Grolemund, G., Hayes, A., Henry, L., Hester, J., Kuhn, M., Pedersen, T. L., Miller, E., Bache, S. M., Müller, K., Ooms, J., Robinson, D., Seidel, D. P., Spinu, V., Takahashi, K., Vaughan, D., Wilke, C., Woo, K., & Yutani, H. (2019). Welcome to the tidyverse. ''Journal of Open Source Software'', 4(43), 1686.</ref> is a collection of packages (including <code>dplyr</code>, which you'll use constantly, and <code>ggplot2</code>, which you'll meet in Chapter 7) designed to work together and, not coincidentally, designed to be more readable than base R for a lot of everyday data tasks. This is why this book teaches both base R and tidyverse/dplyr approaches side by side throughout: base R is the foundation every R user should understand, and dplyr is often the faster, more legible way to write the same operation once you know what's happening underneath it. Neither one is the "right" answer. They're two dialects of the same language, and fluent R users can generally read both even if they mostly write one. You'll want one more package now, even though you won't use it until Chapter 3: '''haven'''<ref>Wickham, H., Miller, E., & Smith, D. ''haven: Import and Export 'SPSS', 'Stata' and 'SAS' Files''. R package. https://haven.tidyverse.org</ref>, which reads data files saved in other statistical programs' native formats — including the <code>.sav</code> format used by SPSS, which is how you'll actually receive the GSS data for this course. <syntaxhighlight lang="r"> install.packages("haven") library(haven) </syntaxhighlight> Why does a file format from a completely different program matter in an R course? Because a <code>.sav</code> file carries more than raw numbers — it carries the codebook's value labels and missing-value definitions baked directly into the file. Load it with the right tool, and R already knows, before you've written a single line of cleanup code, that a response of "8" means "don't know." You'll see exactly what that buys you starting in Chapter 3. When you run <code>library(tidyverse)</code> for the first time, R will print a small wall of text about "conflicts" and "attaching packages." This looks like an error. It is not an error. It is R being unusually polite and telling you exactly what it just did. Read it once, feel briefly reassured, and move on. == Writing and Saving Scripts == A script is a plain text file, saved with a <code>.R</code> extension, containing the code you want to keep. Build the habit now of doing your work in a script rather than typing directly into the Console: click File → New File → R Script, write your code there, and run lines or selections with Ctrl+Enter (Cmd+Return on a Mac). Save your script early and often, and save it somewhere you'll remember — ideally a dedicated folder for this course. Future you, three weeks from now, trying to remember which file had the working version of an assignment, will thank present you for this one small habit more than for almost anything else in this chapter. == Setting Up an OSF Project == You met the Open Science Framework conceptually in Chapter 1. Here's the practical version: go to osf.io, create a free account, and start a new project for this course. Give it an honest, findable name — "STATS 201 Coursework," not "final_FINAL_v3." Inside that project, you'll eventually upload the R scripts you write for each assignment. {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Why bother setting this up for a class project nobody outside this course will ever see? Because the habit is the point, not the audience. Professional researchers don't reserve good data practices for the papers they expect to become famous — they build the habit early enough that it's automatic by the time it matters. You're building that habit now, on assignments with low stakes, so it's already second nature when the stakes are higher. }} <!-- IMAGE: A screenshot of the OSF "Create new project" page, to walk students through the actual interface they'll see. Low priority but genuinely useful for a first-time setup task. --> == A Note on R Markdown == At some point — not necessarily in this course, but soon — you'll want to combine your R code, your results, and your written interpretation into a single document instead of juggling a script and a Word document separately. The tool for this is '''R Markdown''', which lets you write text and code in the same file and produce a polished report (PDF, Word, or HTML) with a single click. This book won't require it, but it's worth knowing it exists: think of it as the next level once base R starts feeling comfortable, and a very good habit for anyone heading toward a senior thesis, a capstone project (see Chapter 18), or a career that involves explaining data to other humans. == Base R and dplyr: Two Dialects, One Language == You'll notice that starting in the next few chapters, this book routinely shows you two ways to do the same thing: a base R version and a dplyr version. This is deliberate, not redundant. Base R is the language's native grammar — it doesn't require any packages, it's what you'll find in decades of existing R code and Stack Overflow answers, and understanding it makes you far less helpless when something goes wrong. dplyr, part of the tidyverse, is a more recent dialect built around a small set of readable verbs (<code>filter()</code>, <code>select()</code>, <code>mutate()</code>, <code>summarize()</code>) that often make your intentions clearer at a glance. Learning both is like learning a language's formal grammar and its everyday slang at the same time. You'll come to prefer one for most everyday work — most people eventually lean dplyr — but you'll be able to read the other one when you encounter it, which, in an R user's life, is often. == Chapter Summary == R is a free, powerful programming language built for statistics; RStudio is the interface that makes R usable day to day. After installing both, you'll do your work in a script (not the Console), using <code><-</code> to assign values to named objects, and <code>install.packages()</code> plus <code>library()</code> to add new capabilities via packages like the tidyverse and haven. Vectors and data frames are the two object types you'll meet constantly going forward — data frames especially, since that's the shape GSS data will take starting in Chapter 3, whether you load it from a <code>.csv</code> file or, as this course does, a <code>.sav</code> file via haven. You've also set up an OSF project, established the habit of scripting your work rather than doing it by hand, and gotten a preview of R Markdown as the natural next step once this all feels less new. Every chapter from here forward will show you both base R and dplyr approaches to the same problems — two dialects of one language, both worth understanding. == Practice Examples == === Example 1: Install, Run, Celebrate === '''The Task:''' Install R and RStudio following the steps above. Open RStudio and confirm it's working. '''The Code:''' <syntaxhighlight lang="r"> 2 + 2 </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 4 </syntaxhighlight> '''The Interpretation:''' If you see <code>[1] 4</code>, R and RStudio are correctly installed and communicating with each other. This is a low bar, and you should clear it with a small sense of triumph anyway. Every statistical analysis in this book, no matter how sophisticated it eventually gets, rests on this exact same infrastructure working correctly. '''Follow-Up Challenge:''' Try a few more calculations of your own — including at least one using <code>^</code> for exponents and one using parentheses to control order of operations. Confirm the results match what you'd expect by hand. === Example 2: Installing the Tidyverse === '''The Task:''' Install and load the tidyverse package, and get comfortable with what its startup message is telling you. '''The Code:''' <syntaxhighlight lang="r"> install.packages("tidyverse") library(tidyverse) </syntaxhighlight> '''The Output:''' Installation will print a fair amount of scrolling text as R downloads several packages. Loading the library will print something like: <syntaxhighlight lang="r"> -- Attaching core tidyverse packages ------------------------ tidyverse 2.0.0 -- v dplyr 1.1.4 v readr 2.1.5 v forcats 1.0.0 v stringr 1.5.1 v ggplot2 3.5.1 v tibble 3.2.1 v lubridate 1.9.3 v tidyr 1.3.1 v purrr 1.0.2 -- Conflicts ---------------------------------------------- tidyverse_conflicts() -- x dplyr::filter() masks stats::filter() x dplyr::lag() masks stats::lag() i Use the conflicted package to force all conflicts to become errors </syntaxhighlight> '''The Interpretation:''' This is not an error message. It's a packing list: R is telling you exactly which packages it just loaded and which of their functions overlap with functions already built into base R (the "conflicts" section). In practice, this rarely causes problems, and you can proceed as soon as you see it. The instinct to panic at a wall of console text is one you'll want to unlearn early, because R produces a lot of informational text that looks scarier than it is. '''Follow-Up Challenge:''' Run <code>library(tidyverse)</code> a second time in the same session. Notice that it loads instantly with no startup message. Why do you think that is? === Example 3: Your First Useful Calculation === '''The Task:''' Create a vector and compute something about it — your first taste of R doing actual statistical work, however small. '''The Code (base R):''' <syntaxhighlight lang="r"> ages <- c(24, 31, 45, 19, 62) mean(ages) </syntaxhighlight> '''The Code (dplyr equivalent, for a vector wrapped in a data frame):''' <syntaxhighlight lang="r"> library(dplyr) tibble(ages = c(24, 31, 45, 19, 62)) %>% summarize(mean_age = mean(ages)) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 36.2 </syntaxhighlight> '''The Interpretation:''' The average of these five ages is 36.2 years. This is, admittedly, not a sociological finding of great consequence — but it is the same operation, structurally, that you'll be performing on thousands of real GSS respondents by Chapter 8. The mechanics don't change; only the size and meaningfulness of the data does. '''Follow-Up Challenge:''' Add a sixth age to the vector and recompute the mean by hand before running the code again. Does R's answer match yours? If your data represented real respondents, what else would you want to know about this group before drawing any conclusions from a single average? == References == <references/> ncllf4lr77ifle0evxjv2vd99qvvb0f Statistics for Sociologists/Chapter 3: The General Social Survey - What It Is and How to Use It 0 485144 4656586 2026-08-07T14:03:20Z Rcragun 41177 first draft 4656586 wikitext text/x-wiki = Chapter 3: The General Social Survey — What It Is and How to Use It = Here is a genuinely strange fact about American society, and you don't need a single statistic yet to appreciate it: ask someone who earns $22,000 a year and someone who earns $220,000 a year what social class they belong to, and there is a good chance both of them will say "middle class." Actual income says otherwise, rather loudly. This is not a fluke of one weird survey question — it's one of the more durable findings to come out of a dataset that has been quietly interviewing Americans about exactly this kind of thing since 1972: the '''General Social Survey''', or GSS.<ref>Smith, T. W., Marsden, P. V., & Hout, M. (2013). ''General Social Survey, 1972–2010 [Cumulative File]'' (ICPSR 31521). Inter-university Consortium for Political and Social Research [distributor]. https://doi.org/10.3886/ICPSR31521.v1</ref> You are going to spend the rest of this semester with this dataset. It deserves a proper introduction before you start running functions on it. <!-- IMAGE: A simple, respectful photo or illustration representing "an American living room interview" or a NORC/University of Chicago building exterior — something to visually ground the idea that real interviewers have been having real conversations with real people since 1972, rather than the GSS being an abstract spreadsheet that fell from the sky. --> == A Survey With a Track Record == The GSS is conducted by '''NORC''' (originally the National Opinion Research Center, now known simply as NORC), an independent research organization affiliated with the University of Chicago. It has been fielded almost every year or two since 1972, funded primarily by the National Science Foundation, which means it exists specifically to serve basic social science research rather than any particular commercial or political interest. Fifty-plus years of the same core questions, asked the same careful way, is what makes the GSS valuable in a way that a one-off internet poll simply cannot match. A single survey tells you what people think right now. A survey repeated consistently for half a century tells you how American society has actually changed — not how people remember it changing, which, per Chapter 1, is a very different and considerably less reliable thing. == What the GSS Actually Measures == The GSS is not narrowly focused on any one topic, which is part of its appeal. In a single interview, a respondent might be asked about their job satisfaction, their views on capital punishment, how many hours of television they watch, whether they believe in God, how happy their marriage is, and how much they trust their neighbors. Broadly, GSS questions fall into a few major territories: * '''Demographics''' — age, sex, race, education, marital status, region: the basic architecture of who a respondent is. * '''Socioeconomic characteristics''' — income, occupational prestige, subjective class identification (the source of this chapter's opening example). * '''Attitudes and beliefs''' — happiness, political views, trust in institutions, views on gender roles, and dozens of other topics that shift over the decades in ways that are genuinely interesting to track. * '''Religion''' — affiliation, attendance, belief in God, and related questions, treated with the same systematic rigor as everything else. * '''Behaviors''' — voting, church attendance, hours worked, and other things people actually do, as opposed to what they believe or feel. Researchers have used the GSS to study everything from the decline of religious affiliation to shifting attitudes on marriage, race, and gender, to whether Americans trust each other less than they used to (a genuinely contested and interesting question — more trust-related material comes back in Chapter 13). This is not a boring demographic clipboard. It is one of the more complete running records of American social life that exists. == How the GSS Is Collected: Sampling, in Plain English == You cannot interview all roughly 260 million American adults, and thankfully, you don't need to. The GSS relies on '''probability sampling''': a method of selecting respondents such that every adult in the target population has a known, nonzero chance of being included. This is the opposite of, say, an online poll that anyone can click into — a method that captures only the people who happened to see the link and cared enough to respond, which is not a representative slice of anybody. Because the GSS uses probability sampling with a sample of roughly 1,500–3,000 respondents per wave (depending on the year), it can support a claim that a much smaller, uncontrolled sample cannot: that the pattern observed in the sample plausibly generalizes to the U.S. adult population as a whole, within a margin of error that can actually be calculated. You'll learn precisely how that margin of error gets calculated starting in Chapter 11. For now, the important idea is this: a sample doesn't need to be enormous to be trustworthy, but it does need to be selected in a way that gives everyone a fair, known chance of ending up in it. == A Note on Which GSS Data This Book Uses == This book uses the '''2010 wave''' of the GSS throughout, and it's worth being upfront about why. The 2010 data are fully collected, cleaned, publicly released, and — crucially for a textbook — will never change. A book built around the most recent available wave would be describing outdated data within a year or two of publication, as new waves are released and old ones are revised. The 2010 wave gives every reader of this book, regardless of when they pick it up, the exact same dataset to work with and the exact same numbers to check their work against. This is a deliberate teaching choice, not a claim that 2010 represents some contemporary snapshot of American life. If your instructor wants to discuss how things have shifted since then, that's exactly what lecture is for — this book teaches you the methods; your professor can point you at whatever vintage of data answers today's question. == Getting the Data: The GSS Data Explorer == The GSS is publicly available, free of charge, through the '''GSS Data Explorer''' (gssdataexplorer.norc.org). You can browse every variable ever asked, build a custom extract containing just the variables and years you want, and download it in several formats, including plain CSV and SPSS's native <code>.sav</code> format. Your instructor will most likely provide you with an already-prepared extract rather than asking you to build one from scratch — for this course, that extract will be a <code>.sav</code> file, typically named something like <code>gss2010.sav</code>. It's still worth knowing how to find a variable in the Data Explorer directly, because the codebook entries there contain information (exact question wording, response categories, missing value codes) that's useful to see in its original context even when your data file already carries most of it internally, which — as you're about to see — a <code>.sav</code> file does. <!-- IMAGE: A screenshot of the GSS Data Explorer homepage or search interface at gssdataexplorer.norc.org, to orient students before they try navigating it themselves. --> == The Structure of GSS Data: Cases and Variables == Like any dataset you'll meet in this book, the GSS is organized into '''cases''' (rows) and '''variables''' (columns). Each case is one respondent — one real adult who sat down with an interviewer and answered questions. Each variable is one question, or one piece of information derived from a question. A respondent's row might show <code>AGE = 34</code>, <code>SEX = 2</code>, <code>HAPPY = 2</code>, and so on — a compact numeric summary of a conversation that, in reality, took the better part of an hour. That numeric encoding is worth sitting with for a second: <code>SEX = 2</code> does not mean "twice as much sex" any more than a jersey number means a player is twice as good. It's a code standing in for a category. This distinction — what a number is actually allowed to mean — is the entire subject of Chapter 4, and it matters more than it sounds like it should. == Key Variables You'll Use All Semester == You'll encounter dozens of GSS variables across this book, but a handful will recur constantly. Bookmark this table; you'll be back. {| class="wikitable" |- ! Category !! Variable !! What It Measures |- | rowspan="6" | Demographics || AGE || Respondent's age in years |- | SEX || Respondent's sex |- | RACE || Respondent's race |- | EDUC || Years of formal education completed |- | MARITAL || Marital status |- | REGION || Region of the country where the respondent lives |- | rowspan="5" | Socioeconomic || INCOME || Total family income (banded categories) |- | RINCOME || Respondent's personal income (banded categories) |- | CONRINC || Respondent's income in constant dollars (continuous) |- | PRESTG10 || Occupational prestige score |- | CLASS || Respondent's subjective social class identification |- | rowspan="5" | Attitudes || HAPPY || General happiness |- | SATJOB || Job satisfaction |- | TRUST || Whether most people can be trusted |- | POLVIEWS || Political ideology, liberal to conservative |- | PARTYID || Political party identification |- | rowspan="3" | Religion || RELIG || Religious affiliation |- | ATTEND || Frequency of religious attendance |- | GOD || Belief in God |- | Cognitive || WORDSUM || Vocabulary test score (0–10 words identified correctly) |} A fuller reference, including exact response codes, appears in the Appendix at the end of this book. A word about the two income variables above, since they show up differently throughout this book: <code>INCOME</code> and <code>RINCOME</code> are ''banded'' — respondents pick a bracket ("$25,000 to $29,999") rather than reporting an exact figure — which makes them ordinal-ish and genuinely awkward to treat as continuous dollars without real distortion. <code>CONRINC</code> is NORC's own derived variable: respondent income converted to a single continuous, constant-dollar figure. It's the more honest choice whenever this book wants to illustrate a genuinely continuous, ratio-level income measure, and it's what you'll see used for that purpose starting in Chapter 5. <code>WORDSUM</code> — a simple count of correct answers on a 10-item vocabulary test — is another clean ratio-level variable worth knowing early: unlike income, where "zero" is genuinely ambiguous (no income this year? unemployed? missing?), a <code>WORDSUM</code> score of zero means exactly one thing, which makes it a nice, uncomplicated example anywhere this book needs one. == The Missing Data Problem (A Preview) == Open any GSS variable and you will eventually run into values like 0, 8, 9, 98, or 99 sitting among otherwise sensible numbers. These are not real responses — they're codes meaning things like "not applicable," "don't know," or "refused to answer," and if you don't catch them, R will cheerfully average them in with everyone else's real answers as though refusing to answer a question were itself a meaningful data point on some numeric scale. Here's a piece of good news that depends entirely on ''how'' you load the data, which is exactly why this chapter is about to spend real time on that question: a <code>.sav</code> file doesn't just store the numbers respondents gave — it stores the codebook information about which of those numbers are supposed to count as missing. Load it with the right tool, and a meaningful share of this problem is handled for you before you've typed a single line of cleanup code. Load the same data as a bare CSV, and you're on your own until Chapters 5 and 6, which teach you to do it by hand. Either way, the underlying rule doesn't change: '''always check the codebook before you trust a number.''' Automatic handling reduces the manual work; it doesn't excuse you from knowing what's in your data. == Loading GSS Data Into R == You'll typically work with a file called <code>gss2010.sav</code>, saved in your project folder. Here are three ways to bring GSS data into R — you'll mostly use the third, but all three are worth recognizing. '''Base R, from a CSV export:''' <syntaxhighlight lang="r"> gss <- read.csv("gss2010.csv") </syntaxhighlight> '''dplyr / tidyverse, from a CSV export:'''<ref>Wickham, H., Hester, J., & Bryan, J. ''readr: Read Rectangular Text Data''. R package. https://readr.tidyverse.org</ref> <syntaxhighlight lang="r"> library(readr) gss <- read_csv("gss2010.csv") </syntaxhighlight> '''haven, from the .sav file (this course's default):''' <syntaxhighlight lang="r"> library(haven) gss <- read_sav("gss2010.sav") </syntaxhighlight> All three approaches produce a data frame called <code>gss</code>, one row per respondent, one column per variable — but they are not equivalent in what else they bring along. <code>read.csv()</code> and <code>read_csv()</code> give you raw numbers and nothing more; whatever a <code>2</code> or an <code>8</code> "means" lives only in a codebook you have to consult separately. <code>read_sav()</code> reads the value labels and missing-value definitions that are embedded in the SPSS file itself, which buys you two things immediately: by default, values the file's own metadata marks as missing (GSS's "don't know," "refused," and "not applicable" codes) are converted straight to R's <code>NA</code> on import, and the category labels for variables like <code>RELIG</code> or <code>HAPPY</code> are attached to the data and can be revealed with a single function, <code>as_factor()</code>, rather than the manual <code>factor(levels = ..., labels = ...)</code> approach you'll learn in Chapter 4: <syntaxhighlight lang="r"> gss_labeled <- as_factor(gss) </syntaxhighlight> This is a real convenience, not a shortcut around understanding — you'll still learn the manual approach in Chapter 4, both because it's the foundation everything else builds on and because not every dataset you ever touch will arrive as a tidy <code>.sav</code> file with its metadata intact. But for this book's GSS-based examples, haven is doing meaningful, unglamorous work in the background from the moment you load the file. == First Look at the Data == Once loaded, don't immediately start analyzing. Look first. <syntaxhighlight lang="r"> head(gss) # first six rows str(gss) # structure: variable names and types summary(gss) # quick numeric summary of every column names(gss) # just the variable names </syntaxhighlight> Running these four lines on any new dataset, before doing anything else with it, is a habit worth making automatic. It's the data equivalent of checking your mirrors before pulling out of a parking space — unglamorous, easy to skip, and the exact thing you'll wish you'd done the one time something goes wrong. One thing you'll notice with a haven-imported file: <code>str()</code> will describe columns as <code>dbl+lbl</code> rather than plain <code>int</code> or <code>num</code>. That's haven's '''labelled''' class — a number that's quietly carrying its value labels along with it, visible any time you ask for them with <code>as_factor()</code>, and invisible (in a good way) any time you just want to compute with the underlying numeric codes. <!-- FIGURE: A simple bar chart showing subjective social class identification (CLASS) from the 2010 GSS, illustrating this chapter's opening example — most respondents cluster in "working class" and "middle class" regardless of actual income. Author to generate from real 2010 GSS data. --> == Chapter Summary == The GSS is a survey that has been asking a representative, probability-based sample of American adults about their demographics, attitudes, beliefs, and behaviors almost every year since 1972, run by NORC at the University of Chicago. This book uses the 2010 wave specifically, because it's stable and won't change out from under a printed textbook. GSS data is organized into cases (respondents) and variables (questions), and a handful of variables — spanning demographics, socioeconomics, attitudes, and religion — will recur throughout this book. Watch for missing data codes (0, 8, 9, 98, 99) hiding among real values; a <code>.sav</code> file loaded through haven's <code>read_sav()</code> converts many of these to <code>NA</code> automatically using the file's own embedded metadata, while a plain CSV import leaves that work for Chapters 5 and 6. For now, the essential skill is loading a GSS file into R — with <code>read.csv()</code> or <code>read_csv()</code> for a CSV export, or <code>read_sav()</code> from the haven package for the <code>.sav</code> file this course uses — and taking a careful first look with <code>head()</code>, <code>str()</code>, <code>summary()</code>, and <code>names()</code> before doing anything else. == Practice Examples == === Example 1: Load and Explore === '''The Research Question:''' What does the 2010 GSS dataset actually look like once it's loaded into R — how many respondents, how many variables? '''The Code:''' <syntaxhighlight lang="r"> library(haven) gss <- read_sav("gss2010.sav") dim(gss) str(gss) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 2044 achievable_number_of_columns tibble [2,044 x X] (S3: tbl_df/tbl/data.frame) $ AGE : dbl+lbl 34, 61, 45 ... $ SEX : dbl+lbl 2, 1, 2 ... $ HAPPY : dbl+lbl 2, 1, 2 ... ... </syntaxhighlight> '''The Interpretation:''' <code>dim()</code> reports the number of rows (respondents) and columns (variables) in one line. <code>str()</code> gives you the same information in more detail — notice the <code>dbl+lbl</code> tag on each column instead of plain <code>int</code>. That's haven's labelled class: these are still numbers underneath, but each one is carrying its codebook label along for the ride, which is exactly why they'll be easier to work with in Chapter 4 than a bare CSV import would be. '''Follow-Up Challenge:''' Run <code>names(gss)</code> and scroll through the full list of variables. Pick three you don't recognize and look them up in the GSS Data Explorer codebook. Then try <code>as_factor(gss$RELIG)</code> and compare what it shows you to the raw <code>gss$RELIG</code> column — what changed? === Example 2: Find a Variable, Meet Its Missing Codes (Two Ways) === '''The Research Question:''' What values does <code>HAPPY</code> actually take in the data, and are any of them suspicious? Does it matter how the file was loaded? '''The Code (CSV import, base R):''' <syntaxhighlight lang="r"> gss_csv <- read.csv("gss2010.csv") table(gss_csv$HAPPY) </syntaxhighlight> '''The Code (CSV import, dplyr):''' <syntaxhighlight lang="r"> library(dplyr) gss_csv %>% count(HAPPY) </syntaxhighlight> '''The Code (.sav import, haven — this course's default):''' <syntaxhighlight lang="r"> library(haven) gss <- read_sav("gss2010.sav") table(gss$HAPPY, useNA = "ifany") </syntaxhighlight> '''The Output (CSV version):''' <syntaxhighlight lang="r"> 1 2 3 8 9 480 950 570 30 14 </syntaxhighlight> '''The Output (.sav/haven version):''' <syntaxhighlight lang="r"> 1 2 3 <NA> 480 950 570 44 </syntaxhighlight> '''The Interpretation:''' Same underlying data, two very different pictures. In the CSV version, most respondents cluster in 1 through 3 — the real response categories for this question (something like "very happy," "pretty happy," "not too happy") — but 8 and 9 show up looking like a fourth and fifth flavor of happiness. They're not; they're "don't know" and "no answer," dressed up as numbers, and left untreated R would happily fold them into any mean or correlation you calculated. In the haven version, <code>read_sav()</code> already recognized those same codes as user-defined missing values from the file's metadata and converted them straight to <code>NA</code> — that's the 44 respondents (30 + 14) showing up honestly as missing rather than disguised as extra categories. This is the concrete payoff of the workflow this chapter recommends; it's also exactly the trap Chapters 5 and 6 exist to help you avoid by hand, for the cases haven's metadata doesn't catch. '''Follow-Up Challenge:''' Look up <code>HAPPY</code> in the GSS Data Explorer codebook and confirm what values 8 and 9 actually represent. Then pick one variable and run both the CSV and haven versions of this comparison yourself — do the missing counts match what you'd expect? === Example 3: Cross-Referencing the Data Explorer and R === '''The Research Question:''' Does what R shows you about a variable match what the official codebook says? '''The Code:''' <syntaxhighlight lang="r"> summary(gss$EDUC) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Min. 1st Qu. Median Mean 3rd Qu. Max. 0.00 12.00 13.00 13.68 16.00 20.00 </syntaxhighlight> '''The Interpretation:''' R reports a minimum of 0 and a maximum of 20 years of education, with a mean around 13.7. Cross-referencing this against the GSS Data Explorer's codebook entry for <code>EDUC</code> confirms these are genuine years-of-education values (0 through 20, with 20 meaning "20 or more years") rather than a coded stand-in for something else — good news, since it means this particular variable can be trusted at face value once any legitimate missing codes are handled. '''Follow-Up Challenge:''' Pick a variable you have a personal guess about — something like average hours of TV watched (<code>TVHOURS</code>) or number of children (<code>CHILDS</code>) — and compare R's <code>summary()</code> output to your intuition before you looked. Were you close? == References == <references/> 289mlyqjao9qnbz8s1dw9xyfiaykx8e 4656643 4656586 2026-08-07T15:03:01Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656643 wikitext text/x-wiki = Chapter 3: The General Social Survey — What It Is and How to Use It = Here is a genuinely strange fact about American society, and you don't need a single statistic yet to appreciate it: ask someone who earns $22,000 a year and someone who earns $220,000 a year what social class they belong to, and there is a good chance both of them will say "middle class." Actual income says otherwise, rather loudly. This is not a fluke of one weird survey question — it's one of the more durable findings to come out of a dataset that has been quietly interviewing Americans about exactly this kind of thing since 1972: the '''General Social Survey''', or GSS.<ref>Smith, T. W., Marsden, P. V., & Hout, M. (2013). ''General Social Survey, 1972–2010 [Cumulative File]'' (ICPSR 31521). Inter-university Consortium for Political and Social Research [distributor]. https://doi.org/10.3886/ICPSR31521.v1</ref> You are going to spend the rest of this semester with this dataset. It deserves a proper introduction before you start running functions on it. <!-- IMAGE: A simple, respectful photo or illustration representing "an American living room interview" or a NORC/University of Chicago building exterior — something to visually ground the idea that real interviewers have been having real conversations with real people since 1972, rather than the GSS being an abstract spreadsheet that fell from the sky. --> == A Survey With a Track Record == The GSS is conducted by '''NORC''' (originally the National Opinion Research Center, now known simply as NORC), an independent research organization affiliated with the University of Chicago. It has been fielded almost every year or two since 1972, funded primarily by the National Science Foundation, which means it exists specifically to serve basic social science research rather than any particular commercial or political interest. Fifty-plus years of the same core questions, asked the same careful way, is what makes the GSS valuable in a way that a one-off internet poll simply cannot match. A single survey tells you what people think right now. A survey repeated consistently for half a century tells you how American society has actually changed — not how people remember it changing, which, per Chapter 1, is a very different and considerably less reliable thing. == What the GSS Actually Measures == The GSS is not narrowly focused on any one topic, which is part of its appeal. In a single interview, a respondent might be asked about their job satisfaction, their views on capital punishment, how many hours of television they watch, whether they believe in God, how happy their marriage is, and how much they trust their neighbors. Broadly, GSS questions fall into a few major territories: * '''Demographics''' — age, sex, race, education, marital status, region: the basic architecture of who a respondent is. * '''Socioeconomic characteristics''' — income, occupational prestige, subjective class identification (the source of this chapter's opening example). * '''Attitudes and beliefs''' — happiness, political views, trust in institutions, views on gender roles, and dozens of other topics that shift over the decades in ways that are genuinely interesting to track. * '''Religion''' — affiliation, attendance, belief in God, and related questions, treated with the same systematic rigor as everything else. * '''Behaviors''' — voting, church attendance, hours worked, and other things people actually do, as opposed to what they believe or feel. Researchers have used the GSS to study everything from the decline of religious affiliation to shifting attitudes on marriage, race, and gender, to whether Americans trust each other less than they used to (a genuinely contested and interesting question — more trust-related material comes back in Chapter 13). This is not a boring demographic clipboard. It is one of the more complete running records of American social life that exists. == How the GSS Is Collected: Sampling, in Plain English == You cannot interview all roughly 260 million American adults, and thankfully, you don't need to. The GSS relies on '''probability sampling''': a method of selecting respondents such that every adult in the target population has a known, nonzero chance of being included. This is the opposite of, say, an online poll that anyone can click into — a method that captures only the people who happened to see the link and cared enough to respond, which is not a representative slice of anybody. Because the GSS uses probability sampling with a sample of roughly 1,500–3,000 respondents per wave (depending on the year), it can support a claim that a much smaller, uncontrolled sample cannot: that the pattern observed in the sample plausibly generalizes to the U.S. adult population as a whole, within a margin of error that can actually be calculated. You'll learn precisely how that margin of error gets calculated starting in Chapter 11. For now, the important idea is this: a sample doesn't need to be enormous to be trustworthy, but it does need to be selected in a way that gives everyone a fair, known chance of ending up in it. == A Note on Which GSS Data This Book Uses == This book uses the '''2010 wave''' of the GSS throughout, and it's worth being upfront about why. The 2010 data are fully collected, cleaned, publicly released, and — crucially for a textbook — will never change. A book built around the most recent available wave would be describing outdated data within a year or two of publication, as new waves are released and old ones are revised. The 2010 wave gives every reader of this book, regardless of when they pick it up, the exact same dataset to work with and the exact same numbers to check their work against. This is a deliberate teaching choice, not a claim that 2010 represents some contemporary snapshot of American life. If your instructor wants to discuss how things have shifted since then, that's exactly what lecture is for — this book teaches you the methods; your professor can point you at whatever vintage of data answers today's question. == Getting the Data: The GSS Data Explorer == The GSS is publicly available, free of charge, through the '''GSS Data Explorer''' (gssdataexplorer.norc.org). You can browse every variable ever asked, build a custom extract containing just the variables and years you want, and download it in several formats, including plain CSV and SPSS's native <code>.sav</code> format. Your instructor will most likely provide you with an already-prepared extract rather than asking you to build one from scratch — for this course, that extract will be a <code>.sav</code> file, typically named something like <code>gss2010.sav</code>. It's still worth knowing how to find a variable in the Data Explorer directly, because the codebook entries there contain information (exact question wording, response categories, missing value codes) that's useful to see in its original context even when your data file already carries most of it internally, which — as you're about to see — a <code>.sav</code> file does. <!-- IMAGE: A screenshot of the GSS Data Explorer homepage or search interface at gssdataexplorer.norc.org, to orient students before they try navigating it themselves. --> == The Structure of GSS Data: Cases and Variables == Like any dataset you'll meet in this book, the GSS is organized into '''cases''' (rows) and '''variables''' (columns). Each case is one respondent — one real adult who sat down with an interviewer and answered questions. Each variable is one question, or one piece of information derived from a question. A respondent's row might show <code>AGE = 34</code>, <code>SEX = 2</code>, <code>HAPPY = 2</code>, and so on — a compact numeric summary of a conversation that, in reality, took the better part of an hour. That numeric encoding is worth sitting with for a second: <code>SEX = 2</code> does not mean "twice as much sex" any more than a jersey number means a player is twice as good. It's a code standing in for a category. This distinction — what a number is actually allowed to mean — is the entire subject of Chapter 4, and it matters more than it sounds like it should. == Key Variables You'll Use All Semester == You'll encounter dozens of GSS variables across this book, but a handful will recur constantly. Bookmark this table; you'll be back. {| class="wikitable" |- ! Category !! Variable !! What It Measures |- | rowspan="6" | Demographics || AGE || Respondent's age in years |- | SEX || Respondent's sex |- | RACE || Respondent's race |- | EDUC || Years of formal education completed |- | MARITAL || Marital status |- | REGION || Region of the country where the respondent lives |- | rowspan="5" | Socioeconomic || INCOME || Total family income (banded categories) |- | RINCOME || Respondent's personal income (banded categories) |- | CONRINC || Respondent's income in constant dollars (continuous) |- | PRESTG10 || Occupational prestige score |- | CLASS || Respondent's subjective social class identification |- | rowspan="5" | Attitudes || HAPPY || General happiness |- | SATJOB || Job satisfaction |- | TRUST || Whether most people can be trusted |- | POLVIEWS || Political ideology, liberal to conservative |- | PARTYID || Political party identification |- | rowspan="3" | Religion || RELIG || Religious affiliation |- | ATTEND || Frequency of religious attendance |- | GOD || Belief in God |- | Cognitive || WORDSUM || Vocabulary test score (0–10 words identified correctly) |} A fuller reference, including exact response codes, appears in the Appendix at the end of this book. A word about the two income variables above, since they show up differently throughout this book: <code>INCOME</code> and <code>RINCOME</code> are ''banded'' — respondents pick a bracket ("$25,000 to $29,999") rather than reporting an exact figure — which makes them ordinal-ish and genuinely awkward to treat as continuous dollars without real distortion. <code>CONRINC</code> is NORC's own derived variable: respondent income converted to a single continuous, constant-dollar figure. It's the more honest choice whenever this book wants to illustrate a genuinely continuous, ratio-level income measure, and it's what you'll see used for that purpose starting in Chapter 5. <code>WORDSUM</code> — a simple count of correct answers on a 10-item vocabulary test — is another clean ratio-level variable worth knowing early: unlike income, where "zero" is genuinely ambiguous (no income this year? unemployed? missing?), a <code>WORDSUM</code> score of zero means exactly one thing, which makes it a nice, uncomplicated example anywhere this book needs one. == The Missing Data Problem (A Preview) == Open any GSS variable and you will eventually run into values like 0, 8, 9, 98, or 99 sitting among otherwise sensible numbers. These are not real responses — they're codes meaning things like "not applicable," "don't know," or "refused to answer," and if you don't catch them, R will cheerfully average them in with everyone else's real answers as though refusing to answer a question were itself a meaningful data point on some numeric scale. Here's a piece of good news that depends entirely on ''how'' you load the data, which is exactly why this chapter is about to spend real time on that question: a <code>.sav</code> file doesn't just store the numbers respondents gave — it stores the codebook information about which of those numbers are supposed to count as missing. Load it with the right tool, and a meaningful share of this problem is handled for you before you've typed a single line of cleanup code. Load the same data as a bare CSV, and you're on your own until Chapters 5 and 6, which teach you to do it by hand. Either way, the underlying rule doesn't change: '''always check the codebook before you trust a number.''' Automatic handling reduces the manual work; it doesn't excuse you from knowing what's in your data. == Loading GSS Data Into R == You'll typically work with a file called <code>gss2010.sav</code>, saved in your project folder. Here are three ways to bring GSS data into R — you'll mostly use the third, but all three are worth recognizing. '''Base R, from a CSV export:''' <syntaxhighlight lang="r"> gss <- read.csv("gss2010.csv") </syntaxhighlight> '''dplyr / tidyverse, from a CSV export:'''<ref>Wickham, H., Hester, J., & Bryan, J. ''readr: Read Rectangular Text Data''. R package. https://readr.tidyverse.org</ref> <syntaxhighlight lang="r"> library(readr) gss <- read_csv("gss2010.csv") </syntaxhighlight> '''haven, from the .sav file (this course's default):''' <syntaxhighlight lang="r"> library(haven) gss <- read_sav("gss2010.sav") </syntaxhighlight> All three approaches produce a data frame called <code>gss</code>, one row per respondent, one column per variable — but they are not equivalent in what else they bring along. <code>read.csv()</code> and <code>read_csv()</code> give you raw numbers and nothing more; whatever a <code>2</code> or an <code>8</code> "means" lives only in a codebook you have to consult separately. <code>read_sav()</code> reads the value labels and missing-value definitions that are embedded in the SPSS file itself, which buys you two things immediately: by default, values the file's own metadata marks as missing (GSS's "don't know," "refused," and "not applicable" codes) are converted straight to R's <code>NA</code> on import, and the category labels for variables like <code>RELIG</code> or <code>HAPPY</code> are attached to the data and can be revealed with a single function, <code>as_factor()</code>, rather than the manual <code>factor(levels = ..., labels = ...)</code> approach you'll learn in Chapter 4: <syntaxhighlight lang="r"> gss_labeled <- as_factor(gss) </syntaxhighlight> This is a real convenience, not a shortcut around understanding — you'll still learn the manual approach in Chapter 4, both because it's the foundation everything else builds on and because not every dataset you ever touch will arrive as a tidy <code>.sav</code> file with its metadata intact. But for this book's GSS-based examples, haven is doing meaningful, unglamorous work in the background from the moment you load the file. == First Look at the Data == Once loaded, don't immediately start analyzing. Look first. <syntaxhighlight lang="r"> head(gss) # first six rows str(gss) # structure: variable names and types summary(gss) # quick numeric summary of every column names(gss) # just the variable names </syntaxhighlight> Running these four lines on any new dataset, before doing anything else with it, is a habit worth making automatic. It's the data equivalent of checking your mirrors before pulling out of a parking space — unglamorous, easy to skip, and the exact thing you'll wish you'd done the one time something goes wrong. One thing you'll notice with a haven-imported file: <code>str()</code> will describe columns as <code>dbl+lbl</code> rather than plain <code>int</code> or <code>num</code>. That's haven's '''labelled''' class — a number that's quietly carrying its value labels along with it, visible any time you ask for them with <code>as_factor()</code>, and invisible (in a good way) any time you just want to compute with the underlying numeric codes. <!-- FIGURE: A simple bar chart showing subjective social class identification (CLASS) from the 2010 GSS, illustrating this chapter's opening example — most respondents cluster in "working class" and "middle class" regardless of actual income. Author to generate from real 2010 GSS data. --> == Chapter Summary == The GSS is a survey that has been asking a representative, probability-based sample of American adults about their demographics, attitudes, beliefs, and behaviors almost every year since 1972, run by NORC at the University of Chicago. This book uses the 2010 wave specifically, because it's stable and won't change out from under a printed textbook. GSS data is organized into cases (respondents) and variables (questions), and a handful of variables — spanning demographics, socioeconomics, attitudes, and religion — will recur throughout this book. Watch for missing data codes (0, 8, 9, 98, 99) hiding among real values; a <code>.sav</code> file loaded through haven's <code>read_sav()</code> converts many of these to <code>NA</code> automatically using the file's own embedded metadata, while a plain CSV import leaves that work for Chapters 5 and 6. For now, the essential skill is loading a GSS file into R — with <code>read.csv()</code> or <code>read_csv()</code> for a CSV export, or <code>read_sav()</code> from the haven package for the <code>.sav</code> file this course uses — and taking a careful first look with <code>head()</code>, <code>str()</code>, <code>summary()</code>, and <code>names()</code> before doing anything else. == Practice Examples == === Example 1: Load and Explore === '''The Research Question:''' What does the 2010 GSS dataset actually look like once it's loaded into R — how many respondents, how many variables? '''The Code:''' <syntaxhighlight lang="r"> library(haven) gss <- read_sav("gss2010.sav") dim(gss) str(gss) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 2044 achievable_number_of_columns tibble [2,044 x X] (S3: tbl_df/tbl/data.frame) $ AGE : dbl+lbl 34, 61, 45 ... $ SEX : dbl+lbl 2, 1, 2 ... $ HAPPY : dbl+lbl 2, 1, 2 ... ... </syntaxhighlight> '''The Interpretation:''' <code>dim()</code> reports the number of rows (respondents) and columns (variables) in one line. <code>str()</code> gives you the same information in more detail — notice the <code>dbl+lbl</code> tag on each column instead of plain <code>int</code>. That's haven's labelled class: these are still numbers underneath, but each one is carrying its codebook label along for the ride, which is exactly why they'll be easier to work with in Chapter 4 than a bare CSV import would be. '''Follow-Up Challenge:''' Run <code>names(gss)</code> and scroll through the full list of variables. Pick three you don't recognize and look them up in the GSS Data Explorer codebook. Then try <code>as_factor(gss$RELIG)</code> and compare what it shows you to the raw <code>gss$RELIG</code> column — what changed? === Example 2: Find a Variable, Meet Its Missing Codes (Two Ways) === '''The Research Question:''' What values does <code>HAPPY</code> actually take in the data, and are any of them suspicious? Does it matter how the file was loaded? '''The Code (CSV import, base R):''' <syntaxhighlight lang="r"> gss_csv <- read.csv("gss2010.csv") table(gss_csv$HAPPY) </syntaxhighlight> '''The Code (CSV import, dplyr):''' <syntaxhighlight lang="r"> library(dplyr) gss_csv %>% count(HAPPY) </syntaxhighlight> '''The Code (.sav import, haven — this course's default):''' <syntaxhighlight lang="r"> library(haven) gss <- read_sav("gss2010.sav") table(gss$HAPPY, useNA = "ifany") </syntaxhighlight> '''The Output (CSV version):''' <syntaxhighlight lang="r"> 1 2 3 8 9 480 950 570 30 14 </syntaxhighlight> '''The Output (.sav/haven version):''' <syntaxhighlight lang="r"> 1 2 3 <NA> 480 950 570 44 </syntaxhighlight> '''The Interpretation:''' Same underlying data, two very different pictures. In the CSV version, most respondents cluster in 1 through 3 — the real response categories for this question (something like "very happy," "pretty happy," "not too happy") — but 8 and 9 show up looking like a fourth and fifth flavor of happiness. They're not; they're "don't know" and "no answer," dressed up as numbers, and left untreated R would happily fold them into any mean or correlation you calculated. In the haven version, <code>read_sav()</code> already recognized those same codes as user-defined missing values from the file's metadata and converted them straight to <code>NA</code> — that's the 44 respondents (30 + 14) showing up honestly as missing rather than disguised as extra categories. This is the concrete payoff of the workflow this chapter recommends; it's also exactly the trap Chapters 5 and 6 exist to help you avoid by hand, for the cases haven's metadata doesn't catch. '''Follow-Up Challenge:''' Look up <code>HAPPY</code> in the GSS Data Explorer codebook and confirm what values 8 and 9 actually represent. Then pick one variable and run both the CSV and haven versions of this comparison yourself — do the missing counts match what you'd expect? === Example 3: Cross-Referencing the Data Explorer and R === '''The Research Question:''' Does what R shows you about a variable match what the official codebook says? '''The Code:''' <syntaxhighlight lang="r"> summary(gss$EDUC) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Min. 1st Qu. Median Mean 3rd Qu. Max. 0.00 12.00 13.00 13.68 16.00 20.00 </syntaxhighlight> '''The Interpretation:''' R reports a minimum of 0 and a maximum of 20 years of education, with a mean around 13.7. Cross-referencing this against the GSS Data Explorer's codebook entry for <code>EDUC</code> confirms these are genuine years-of-education values (0 through 20, with 20 meaning "20 or more years") rather than a coded stand-in for something else — good news, since it means this particular variable can be trusted at face value once any legitimate missing codes are handled. '''Follow-Up Challenge:''' Pick a variable you have a personal guess about — something like average hours of TV watched (<code>TVHOURS</code>) or number of children (<code>CHILDS</code>) — and compare R's <code>summary()</code> output to your intuition before you looked. Were you close? == References == <references/> {{BookCat}} qd8616qeruw54vhn1ko9inn8yytvb40 Statistics for Sociologists/Chapter 4: Types of Variables and Levels of Measurement 0 485145 4656587 2026-08-07T14:04:19Z Rcragun 41177 first draft 4656587 wikitext text/x-wiki = Chapter 4: Types of Variables and Levels of Measurement = Here is a sentence that is grammatically valid, mathematically executable, and almost entirely meaningless: "The average religion in America is 1.7, which is either a small Protestant or a large Catholic, depending on how you measure." R will compute that number for you without complaint the moment you ask it to. The problem isn't R. The problem is that nobody told R — or, more to the point, nobody told ''you'' — that religion isn't the kind of thing you're allowed to average. This chapter is about knowing, before you run a single function, what a variable will actually let you do with it. Skip this chapter and you can still write working R code. You just won't be able to trust anything it tells you. == Why Variable Type Is the Most Important Thing You'll Learn This Semester == Every statistic in this book — every mean, every correlation, every t-test — carries an unstated assumption about the kind of variable it's being applied to. Ignore that assumption and the software will not stop you. R does not know or care whether "religion" is a number you're allowed to average; it just sees numbers and does what numbers do. The judgment about whether that's an appropriate thing to ask of the data has to come from you. This is, not coincidentally, one of the more common ways published research goes wrong. Not fraud, not incompetence — just a mismatch between the kind of variable someone had and the kind of statistic they ran on it. == Levels of Measurement == Statisticians sort variables into four levels of measurement,<ref>Stevens, S. S. (1946). On the theory of scales of measurement. ''Science'', 103(2684), 677–680.</ref> sometimes remembered by the acronym '''NOIR''' — an appropriately moody name for a topic this dry, like a detective show but with fewer explosions and considerably more decimal places. === Nominal === '''Nominal''' variables are categories with no inherent order. Race, religion, region, sex — you can count how many respondents fall into each category, and you can compute a mode, but there is no meaningful sense in which one category is "more" or "less" than another, and there is certainly no meaningful average. Which brings us back to the opening example. GSS's <code>RELIG</code> variable might code Protestant as 1, Catholic as 2, Jewish as 3, and so on. Running <code>mean(RELIG)</code> will not produce an error. It will produce a number — 1.7, say — and that number will describe nothing real about the world. The average religion in America is not "a small Protestant or a large Catholic." It's an artifact of doing arithmetic on labels that only look like numbers because a codebook had to store them somehow. === Ordinal === '''Ordinal''' variables are categories with a genuine order, but the distance between categories isn't guaranteed to be equal. The GSS's <code>HAPPY</code> variable — very happy, pretty happy, not too happy — is a textbook example. "Very happy" is clearly more than "pretty happy," which is clearly more than "not too happy." But is the gap between "very happy" and "pretty happy" the same size as the gap between "pretty happy" and "not too happy"? There's no way to know, and probably no reason to assume so. === Interval === '''Interval''' variables have equal, meaningful distances between values, but no true zero — zero doesn't mean "none of the thing." Temperature in Celsius is the standard example: the gap between 10° and 20° equals the gap between 20° and 30°, but 0°C doesn't mean "no temperature," it means "the point at which water happens to freeze." True interval variables are genuinely rare in the GSS and in sociology generally; most of what looks interval is actually ordinal data being treated as if it were interval (more on that shortly). === Ratio === '''Ratio''' variables have equal intervals ''and'' a true zero, where zero means the complete absence of the thing being measured. Age, years of education, and constant-dollar income (<code>CONRINC</code>) are all ratio variables in the GSS: zero years of education really does mean no formal education, and this is what lets you say something like "person A has twice the education of person B" — a comparison that would be nonsense for interval data, and complete nonsense for nominal or ordinal data. A particularly clean ratio-level example, worth keeping in your back pocket: <code>WORDSUM</code>, a simple count of correct answers on a 10-item vocabulary test. It has equal intervals (the gap between 3 and 4 correct is the same as the gap between 7 and 8), a true zero (zero correct really does mean zero), and none of the ambiguity that complicates a variable like income, where "zero" could mean genuinely no income, a respondent who didn't answer, or a coding artifact depending on which GSS income variable you're looking at. When you want an uncomplicated ratio-level variable to illustrate a concept without also having to explain a bunch of caveats, <code>WORDSUM</code> is often the better choice. The real point of NOIR isn't memorizing four labels. It's this: '''the level of measurement determines what you're allowed to do with a variable.''' Means require at least interval-level data. Modes work on anything. Everything you'll learn from Chapter 8 onward assumes you've correctly identified which bucket a variable belongs in before you touch it. <!-- IMAGE: A simple four-panel infographic-style visual summarizing NOIR — Nominal, Ordinal, Interval, Ratio — with one GSS variable example per panel (RELIG, HAPPY, [rare interval example], AGE). Would help students visually anchor the typology at a glance. --> == Discrete vs. Continuous == Independent of level of measurement, variables are also either '''discrete''' (countable, with gaps between possible values — you can have 2 children or 3, never 2.5, no matter how the parent of the 2 looks by dinnertime) or '''continuous''' (able to take any value within a range, at least in principle — age is often treated as continuous even though the GSS records it in whole years, and income would be genuinely continuous if it weren't typically collected in bands). This distinction matters most when you get to visualizing distributions in Chapter 7 and modeling relationships in Chapter 16 — discrete and continuous variables tend to call for different kinds of plots and, later, different regression approaches. == Independent and Dependent Variables == One more distinction belongs in this chapter because you'll need it in every inferential chapter from here to the end of the book: '''independent variables''' (predictors, causes, the thing you think is doing the explaining) and '''dependent variables''' (outcomes, the thing being explained). If you're asking whether education predicts income, education is your independent variable and income is your dependent variable — X causes, Y merely reacts, which is about as close as mathematics gets to office politics. This distinction is theoretical, not statistical — R has no idea which of your variables you intend as the cause and which as the effect. You decide that based on sociological reasoning, and the statistics you run in Chapters 13 through 16 will test whether the data are consistent with the story you've told, not whether the story itself is correct. == A Complication: Treating Ordinal as Interval == Here is an uncomfortable, entirely common practice you should know about now rather than discover later and feel betrayed by: sociologists routinely treat ordinal variables — Likert-type scales especially, "strongly disagree" through "strongly agree" — as though they were interval, and compute means, standard deviations, and correlations on them as a matter of course. Strictly, this is a violation of NOIR's rules: a 5-point agreement scale doesn't guarantee that the psychological distance between "agree" and "strongly agree" equals the distance between "disagree" and "agree." Practically, decades of methodological research suggest that treating a reasonably long ordinal scale (five categories or more, roughly symmetric) as interval rarely distorts results badly, and the convenience of being able to compute means and run standard models is considerable.<ref>Norman, G. (2010). Likert scales, levels of measurement and the "laws" of statistics. ''Advances in Health Sciences Education'', 15(5), 625–632.</ref> This book will do this too, when appropriate, because it reflects how sociology is actually practiced. Just do it knowingly rather than by accident — there's a meaningful difference between an informed simplification and an oversight, even when they produce the same line of code. == Checking and Converting Variable Types in R == R's own type system doesn't map perfectly onto NOIR, but it gives you the tools to enforce the right behavior once you know what you're aiming for. <syntaxhighlight lang="r"> class(gss$RELIG) str(gss$RELIG) </syntaxhighlight> Fresh off a CSV import, a variable like <code>RELIG</code> will almost always show up as <code>integer</code> or <code>numeric</code> — which is exactly the problem, because R now considers it fair game for <code>mean()</code>. Converting it to a '''factor''' tells R, explicitly, "this is categorical, treat it accordingly": <syntaxhighlight lang="r"> gss$RELIG <- factor(gss$RELIG, levels = c(1, 2, 3, 4), labels = c("Protestant", "Catholic", "Jewish", "None")) </syntaxhighlight> Now <code>summary(gss$RELIG)</code> returns a count per category instead of a nonsensical mean — R changes its behavior entirely based on the object's declared type, which is the whole point of doing this. If you loaded your data with haven's <code>read_sav()</code> instead, as this course does, you can usually skip typing out <code>levels</code> and <code>labels</code> by hand — the <code>.sav</code> file's own metadata already carries those labels, and <code>haven::as_factor()</code> reads them directly: <syntaxhighlight lang="r"> gss$RELIG <- as_factor(gss$RELIG) </syntaxhighlight> This produces the same kind of result — a proper factor with readable category labels — without you having to know or retype the codebook's numeric scheme yourself. It's worth learning the manual <code>factor()</code> approach above regardless, both because you'll encounter CSV-only data eventually and because understanding what <code>as_factor()</code> is doing for you under the hood is exactly the kind of thing that keeps you from being helpless when it does something you don't expect. One classic trap worth flagging before it happens to you: calling <code>as.numeric()</code> directly on a factor does '''not''' give you back the original numbers. It gives you R's internal level codes — typically 1, 2, 3... in whatever order the factor's levels happen to be stored — which may or may not match the numbers you started with. This has confused enough generations of R users that it deserves its own paragraph and, frankly, its own support group. If you need the original numeric values back, convert to character first, then to numeric: <code>as.numeric(as.character(x))</code>. == Chapter Summary == Every variable has a level of measurement — nominal, ordinal, interval, or ratio — and that level determines which statistics are legitimate to run on it, regardless of whether R stops you from running them anyway. Nominal variables (like religion) support counts and modes but not means; ordinal variables (like happiness) add a genuine order but not guaranteed equal spacing; interval and ratio variables (like age and income) support the full range of arithmetic, with ratio variables alone supporting meaningful statements like "twice as much." Variables are separately discrete or continuous, and in any relationship you study, one variable typically plays the independent (predictor) role and another the dependent (outcome) role — a distinction that matters for every inferential chapter ahead. Sociologists commonly treat long ordinal scales as interval for practical purposes; this book does too, but deliberately. In R, <code>class()</code> and <code>str()</code> reveal how a variable is currently stored, and <code>factor()</code> lets you correct it — just watch for the <code>as.numeric()</code>-on-a-factor trap along the way. == Practice Examples == === Example 1: Identify the Level of Measurement === '''The Task:''' For each of the following GSS variables, identify its level of measurement (nominal, ordinal, interval, or ratio) and briefly justify your answer: <code>RACE</code>, <code>HAPPY</code>, <code>AGE</code>, <code>EDUC</code>, <code>MARITAL</code>. '''The Code:''' None required — this is a conceptual exercise. If you want to peek at the actual values first, though: <syntaxhighlight lang="r"> table(gss$RACE) table(gss$HAPPY) table(gss$MARITAL) summary(gss$AGE) summary(gss$EDUC) </syntaxhighlight> '''The Output:''' (Varies by variable — categorical variables will show a count per category; <code>AGE</code> and <code>EDUC</code> will show a numeric summary.) '''The Interpretation:''' <code>RACE</code> and <code>MARITAL</code> are nominal — categories with no inherent order (there is no sense in which "divorced" is more or less than "married"). <code>HAPPY</code> is ordinal — clearly ordered, but without guaranteed equal spacing between categories. <code>AGE</code> and <code>EDUC</code> are ratio — equal intervals, a true zero, and division is meaningful (a 40-year-old is twice the age of a 20-year-old; a 40-year-old with a GED is not automatically anything relative to a 20-year-old with the same, which is a good reminder that "ratio" describes the variable, not every possible comparison you might want to make with it). '''Follow-Up Challenge:''' Find one GSS variable not listed here that you find genuinely ambiguous to classify. Make a case for two different levels of measurement it could reasonably be assigned, and explain what would change about how you'd analyze it under each classification. === Example 2: Check and Correct Variable Types === '''The Task:''' Confirm how <code>RELIG</code> is currently stored in R, then convert it to an appropriately labeled factor. '''The Code:''' <syntaxhighlight lang="r"> class(gss$RELIG) gss$RELIG <- factor(gss$RELIG, levels = c(1, 2, 3, 4), labels = c("Protestant", "Catholic", "Jewish", "None")) class(gss$RELIG) summary(gss$RELIG) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] "integer" [1] "factor" Protestant Catholic Jewish None 980 520 40 300 </syntaxhighlight> '''The Interpretation:''' Before conversion, R considered <code>RELIG</code> a plain integer — mathematically fair game for a mean, which would have been meaningless. After conversion to a factor with proper labels, <code>summary()</code> automatically switches to reporting category counts, and the labels make the output immediately readable without cross-referencing a codebook. '''Follow-Up Challenge:''' Try running <code>mean(gss$RELIG)</code> both before and after the factor conversion. What happens the second time, and why is that arguably a better outcome than getting a number back? === Example 3: What Happens When You Average a Nominal Variable === '''The Task:''' Deliberately compute the mean of a nominal variable and observe the result, so you recognize this mistake instantly if you ever see it in the wild — including, potentially, in your own code three weeks from now. '''The Code:''' <syntaxhighlight lang="r"> relig_numeric <- as.integer(gss$RELIG) mean(relig_numeric, na.rm = TRUE) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 1.82 </syntaxhighlight> '''The Interpretation:''' R obligingly reports that the "average religion" is 1.82. This number is not wrong in an arithmetic sense — it correctly describes the mean of the underlying codes. It is wrong in every sense that matters, because the codes were never meant to be added together in the first place. The correct move here isn't a different formula; it's a different statistic entirely — a frequency table and a mode, not a mean. '''Follow-Up Challenge:''' What should you report instead of a mean for a nominal variable like this? Compute it, and write one sentence describing <code>RELIG</code>'s distribution the way you'd actually want it to appear in a paper. == References == <references/> a90a9n6gvz332ynl6aqdeqeijkrm3b6 4656642 4656587 2026-08-07T15:02:57Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656642 wikitext text/x-wiki = Chapter 4: Types of Variables and Levels of Measurement = Here is a sentence that is grammatically valid, mathematically executable, and almost entirely meaningless: "The average religion in America is 1.7, which is either a small Protestant or a large Catholic, depending on how you measure." R will compute that number for you without complaint the moment you ask it to. The problem isn't R. The problem is that nobody told R — or, more to the point, nobody told ''you'' — that religion isn't the kind of thing you're allowed to average. This chapter is about knowing, before you run a single function, what a variable will actually let you do with it. Skip this chapter and you can still write working R code. You just won't be able to trust anything it tells you. == Why Variable Type Is the Most Important Thing You'll Learn This Semester == Every statistic in this book — every mean, every correlation, every t-test — carries an unstated assumption about the kind of variable it's being applied to. Ignore that assumption and the software will not stop you. R does not know or care whether "religion" is a number you're allowed to average; it just sees numbers and does what numbers do. The judgment about whether that's an appropriate thing to ask of the data has to come from you. This is, not coincidentally, one of the more common ways published research goes wrong. Not fraud, not incompetence — just a mismatch between the kind of variable someone had and the kind of statistic they ran on it. == Levels of Measurement == Statisticians sort variables into four levels of measurement,<ref>Stevens, S. S. (1946). On the theory of scales of measurement. ''Science'', 103(2684), 677–680.</ref> sometimes remembered by the acronym '''NOIR''' — an appropriately moody name for a topic this dry, like a detective show but with fewer explosions and considerably more decimal places. === Nominal === '''Nominal''' variables are categories with no inherent order. Race, religion, region, sex — you can count how many respondents fall into each category, and you can compute a mode, but there is no meaningful sense in which one category is "more" or "less" than another, and there is certainly no meaningful average. Which brings us back to the opening example. GSS's <code>RELIG</code> variable might code Protestant as 1, Catholic as 2, Jewish as 3, and so on. Running <code>mean(RELIG)</code> will not produce an error. It will produce a number — 1.7, say — and that number will describe nothing real about the world. The average religion in America is not "a small Protestant or a large Catholic." It's an artifact of doing arithmetic on labels that only look like numbers because a codebook had to store them somehow. === Ordinal === '''Ordinal''' variables are categories with a genuine order, but the distance between categories isn't guaranteed to be equal. The GSS's <code>HAPPY</code> variable — very happy, pretty happy, not too happy — is a textbook example. "Very happy" is clearly more than "pretty happy," which is clearly more than "not too happy." But is the gap between "very happy" and "pretty happy" the same size as the gap between "pretty happy" and "not too happy"? There's no way to know, and probably no reason to assume so. === Interval === '''Interval''' variables have equal, meaningful distances between values, but no true zero — zero doesn't mean "none of the thing." Temperature in Celsius is the standard example: the gap between 10° and 20° equals the gap between 20° and 30°, but 0°C doesn't mean "no temperature," it means "the point at which water happens to freeze." True interval variables are genuinely rare in the GSS and in sociology generally; most of what looks interval is actually ordinal data being treated as if it were interval (more on that shortly). === Ratio === '''Ratio''' variables have equal intervals ''and'' a true zero, where zero means the complete absence of the thing being measured. Age, years of education, and constant-dollar income (<code>CONRINC</code>) are all ratio variables in the GSS: zero years of education really does mean no formal education, and this is what lets you say something like "person A has twice the education of person B" — a comparison that would be nonsense for interval data, and complete nonsense for nominal or ordinal data. A particularly clean ratio-level example, worth keeping in your back pocket: <code>WORDSUM</code>, a simple count of correct answers on a 10-item vocabulary test. It has equal intervals (the gap between 3 and 4 correct is the same as the gap between 7 and 8), a true zero (zero correct really does mean zero), and none of the ambiguity that complicates a variable like income, where "zero" could mean genuinely no income, a respondent who didn't answer, or a coding artifact depending on which GSS income variable you're looking at. When you want an uncomplicated ratio-level variable to illustrate a concept without also having to explain a bunch of caveats, <code>WORDSUM</code> is often the better choice. The real point of NOIR isn't memorizing four labels. It's this: '''the level of measurement determines what you're allowed to do with a variable.''' Means require at least interval-level data. Modes work on anything. Everything you'll learn from Chapter 8 onward assumes you've correctly identified which bucket a variable belongs in before you touch it. <!-- IMAGE: A simple four-panel infographic-style visual summarizing NOIR — Nominal, Ordinal, Interval, Ratio — with one GSS variable example per panel (RELIG, HAPPY, [rare interval example], AGE). Would help students visually anchor the typology at a glance. --> == Discrete vs. Continuous == Independent of level of measurement, variables are also either '''discrete''' (countable, with gaps between possible values — you can have 2 children or 3, never 2.5, no matter how the parent of the 2 looks by dinnertime) or '''continuous''' (able to take any value within a range, at least in principle — age is often treated as continuous even though the GSS records it in whole years, and income would be genuinely continuous if it weren't typically collected in bands). This distinction matters most when you get to visualizing distributions in Chapter 7 and modeling relationships in Chapter 16 — discrete and continuous variables tend to call for different kinds of plots and, later, different regression approaches. == Independent and Dependent Variables == One more distinction belongs in this chapter because you'll need it in every inferential chapter from here to the end of the book: '''independent variables''' (predictors, causes, the thing you think is doing the explaining) and '''dependent variables''' (outcomes, the thing being explained). If you're asking whether education predicts income, education is your independent variable and income is your dependent variable — X causes, Y merely reacts, which is about as close as mathematics gets to office politics. This distinction is theoretical, not statistical — R has no idea which of your variables you intend as the cause and which as the effect. You decide that based on sociological reasoning, and the statistics you run in Chapters 13 through 16 will test whether the data are consistent with the story you've told, not whether the story itself is correct. == A Complication: Treating Ordinal as Interval == Here is an uncomfortable, entirely common practice you should know about now rather than discover later and feel betrayed by: sociologists routinely treat ordinal variables — Likert-type scales especially, "strongly disagree" through "strongly agree" — as though they were interval, and compute means, standard deviations, and correlations on them as a matter of course. Strictly, this is a violation of NOIR's rules: a 5-point agreement scale doesn't guarantee that the psychological distance between "agree" and "strongly agree" equals the distance between "disagree" and "agree." Practically, decades of methodological research suggest that treating a reasonably long ordinal scale (five categories or more, roughly symmetric) as interval rarely distorts results badly, and the convenience of being able to compute means and run standard models is considerable.<ref>Norman, G. (2010). Likert scales, levels of measurement and the "laws" of statistics. ''Advances in Health Sciences Education'', 15(5), 625–632.</ref> This book will do this too, when appropriate, because it reflects how sociology is actually practiced. Just do it knowingly rather than by accident — there's a meaningful difference between an informed simplification and an oversight, even when they produce the same line of code. == Checking and Converting Variable Types in R == R's own type system doesn't map perfectly onto NOIR, but it gives you the tools to enforce the right behavior once you know what you're aiming for. <syntaxhighlight lang="r"> class(gss$RELIG) str(gss$RELIG) </syntaxhighlight> Fresh off a CSV import, a variable like <code>RELIG</code> will almost always show up as <code>integer</code> or <code>numeric</code> — which is exactly the problem, because R now considers it fair game for <code>mean()</code>. Converting it to a '''factor''' tells R, explicitly, "this is categorical, treat it accordingly": <syntaxhighlight lang="r"> gss$RELIG <- factor(gss$RELIG, levels = c(1, 2, 3, 4), labels = c("Protestant", "Catholic", "Jewish", "None")) </syntaxhighlight> Now <code>summary(gss$RELIG)</code> returns a count per category instead of a nonsensical mean — R changes its behavior entirely based on the object's declared type, which is the whole point of doing this. If you loaded your data with haven's <code>read_sav()</code> instead, as this course does, you can usually skip typing out <code>levels</code> and <code>labels</code> by hand — the <code>.sav</code> file's own metadata already carries those labels, and <code>haven::as_factor()</code> reads them directly: <syntaxhighlight lang="r"> gss$RELIG <- as_factor(gss$RELIG) </syntaxhighlight> This produces the same kind of result — a proper factor with readable category labels — without you having to know or retype the codebook's numeric scheme yourself. It's worth learning the manual <code>factor()</code> approach above regardless, both because you'll encounter CSV-only data eventually and because understanding what <code>as_factor()</code> is doing for you under the hood is exactly the kind of thing that keeps you from being helpless when it does something you don't expect. One classic trap worth flagging before it happens to you: calling <code>as.numeric()</code> directly on a factor does '''not''' give you back the original numbers. It gives you R's internal level codes — typically 1, 2, 3... in whatever order the factor's levels happen to be stored — which may or may not match the numbers you started with. This has confused enough generations of R users that it deserves its own paragraph and, frankly, its own support group. If you need the original numeric values back, convert to character first, then to numeric: <code>as.numeric(as.character(x))</code>. == Chapter Summary == Every variable has a level of measurement — nominal, ordinal, interval, or ratio — and that level determines which statistics are legitimate to run on it, regardless of whether R stops you from running them anyway. Nominal variables (like religion) support counts and modes but not means; ordinal variables (like happiness) add a genuine order but not guaranteed equal spacing; interval and ratio variables (like age and income) support the full range of arithmetic, with ratio variables alone supporting meaningful statements like "twice as much." Variables are separately discrete or continuous, and in any relationship you study, one variable typically plays the independent (predictor) role and another the dependent (outcome) role — a distinction that matters for every inferential chapter ahead. Sociologists commonly treat long ordinal scales as interval for practical purposes; this book does too, but deliberately. In R, <code>class()</code> and <code>str()</code> reveal how a variable is currently stored, and <code>factor()</code> lets you correct it — just watch for the <code>as.numeric()</code>-on-a-factor trap along the way. == Practice Examples == === Example 1: Identify the Level of Measurement === '''The Task:''' For each of the following GSS variables, identify its level of measurement (nominal, ordinal, interval, or ratio) and briefly justify your answer: <code>RACE</code>, <code>HAPPY</code>, <code>AGE</code>, <code>EDUC</code>, <code>MARITAL</code>. '''The Code:''' None required — this is a conceptual exercise. If you want to peek at the actual values first, though: <syntaxhighlight lang="r"> table(gss$RACE) table(gss$HAPPY) table(gss$MARITAL) summary(gss$AGE) summary(gss$EDUC) </syntaxhighlight> '''The Output:''' (Varies by variable — categorical variables will show a count per category; <code>AGE</code> and <code>EDUC</code> will show a numeric summary.) '''The Interpretation:''' <code>RACE</code> and <code>MARITAL</code> are nominal — categories with no inherent order (there is no sense in which "divorced" is more or less than "married"). <code>HAPPY</code> is ordinal — clearly ordered, but without guaranteed equal spacing between categories. <code>AGE</code> and <code>EDUC</code> are ratio — equal intervals, a true zero, and division is meaningful (a 40-year-old is twice the age of a 20-year-old; a 40-year-old with a GED is not automatically anything relative to a 20-year-old with the same, which is a good reminder that "ratio" describes the variable, not every possible comparison you might want to make with it). '''Follow-Up Challenge:''' Find one GSS variable not listed here that you find genuinely ambiguous to classify. Make a case for two different levels of measurement it could reasonably be assigned, and explain what would change about how you'd analyze it under each classification. === Example 2: Check and Correct Variable Types === '''The Task:''' Confirm how <code>RELIG</code> is currently stored in R, then convert it to an appropriately labeled factor. '''The Code:''' <syntaxhighlight lang="r"> class(gss$RELIG) gss$RELIG <- factor(gss$RELIG, levels = c(1, 2, 3, 4), labels = c("Protestant", "Catholic", "Jewish", "None")) class(gss$RELIG) summary(gss$RELIG) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] "integer" [1] "factor" Protestant Catholic Jewish None 980 520 40 300 </syntaxhighlight> '''The Interpretation:''' Before conversion, R considered <code>RELIG</code> a plain integer — mathematically fair game for a mean, which would have been meaningless. After conversion to a factor with proper labels, <code>summary()</code> automatically switches to reporting category counts, and the labels make the output immediately readable without cross-referencing a codebook. '''Follow-Up Challenge:''' Try running <code>mean(gss$RELIG)</code> both before and after the factor conversion. What happens the second time, and why is that arguably a better outcome than getting a number back? === Example 3: What Happens When You Average a Nominal Variable === '''The Task:''' Deliberately compute the mean of a nominal variable and observe the result, so you recognize this mistake instantly if you ever see it in the wild — including, potentially, in your own code three weeks from now. '''The Code:''' <syntaxhighlight lang="r"> relig_numeric <- as.integer(gss$RELIG) mean(relig_numeric, na.rm = TRUE) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 1.82 </syntaxhighlight> '''The Interpretation:''' R obligingly reports that the "average religion" is 1.82. This number is not wrong in an arithmetic sense — it correctly describes the mean of the underlying codes. It is wrong in every sense that matters, because the codes were never meant to be added together in the first place. The correct move here isn't a different formula; it's a different statistic entirely — a frequency table and a mode, not a mean. '''Follow-Up Challenge:''' What should you report instead of a mean for a nominal variable like this? Compute it, and write one sentence describing <code>RELIG</code>'s distribution the way you'd actually want it to appear in a paper. == References == <references/> {{BookCat}} fc8nz0wietqkpy0s895ctuujpuxziqs Statistics for Sociologists/Chapter 5: Loading, Exploring, and Cleaning GSS Data 0 485146 4656588 2026-08-07T14:04:57Z Rcragun 41177 first draft 4656588 wikitext text/x-wiki = Chapter 5: Loading, Exploring, and Cleaning GSS Data = Data cleaning is 80% of data analysis. The other 80% is also data cleaning. (The math doesn't add up. That's the joke.) Cleaning data does not feel like a discrete phase you finish and move past — it's more like laundry: you will do it again next week, on a different dataset, and it will still take longer than you think. This chapter teaches that unglamorous, essential work. Real data is messy. GSS data, gathered from tens of thousands of real conversations over five decades, is especially messy. The good news is that "messy" here means "predictably messy" — the same handful of problems show up again and again, and once you know what to look for, cleaning a dataset stops being mysterious and starts being routine. <!-- IMAGE: A wry, low-key illustration contrasting "data as collected" (a chaotic, crumpled stack of papers or a messy spreadsheet) with "data as analyzable" (a clean, orderly table) — visually sets up the chapter's central distinction before any code appears. --> == Why Data Cleaning Exists == Data as collected is never quite the same thing as data ready for analysis. A respondent skips a question. An interviewer enters "don't know" because that's what was said. A variable that should be numeric gets stored as text because one row has a stray character in it. None of this is anyone's fault, exactly — it's just what happens when real information, gathered from real people, gets forced into a rectangular spreadsheet. The job of this chapter is to close the gap between the data you were handed and the data you can actually trust a `mean()` or a `t.test()` to run on. == Loading Data (A Recap, With Options) == You met the basics of this in Chapter 3, but here's the fuller picture, since Chapter 3 focused specifically on the GSS and this chapter's habits apply to any dataset you'll ever load. '''Base R:''' <syntaxhighlight lang="r"> gss <- read.csv("gss2010.csv") gss <- read.table("gss2010.txt", header = TRUE, sep = ",") </syntaxhighlight> '''dplyr / tidyverse:''' <syntaxhighlight lang="r"> library(readr) gss <- read_csv("gss2010.csv") </syntaxhighlight> '''haven (this course's default, from the .sav file):''' <syntaxhighlight lang="r"> library(haven) gss <- read_sav("gss2010.sav") </syntaxhighlight> Three functions, three formats, one goal: a data frame in R's memory that you can start examining. Which one you reach for depends entirely on what format the data arrives in — which, as any working researcher eventually discovers, is not always the format you'd choose. == A Field Guide to Other File Formats == The GSS today is easy to obtain as a clean <code>.csv</code> or <code>.sav</code> file through the Data Explorer. This has not always been true, and it will not always be true of ''every'' dataset you encounter in your research career. Sociologists routinely inherit data from SAS, from Stata, or from decades-old fixed-width <code>.dat</code> files that predate any of the friendlier tools this book has shown you so far — the GSS itself was, for most of its history, distributed exactly this way: a raw ASCII <code>.dat</code> file paired with a separate "syntax" file (for SPSS, SAS, or Stata) that told the software which character positions belonged to which variable. If you ever inherit a dataset from a professor who's been doing this since 1998, this is almost certainly what you'll get. '''Fixed-width <code>.dat</code> files''' store every variable in a fixed set of character columns, with no delimiters between them — the file looks like a wall of digits until you know exactly which positions to read. Both base R and readr can handle this if you know (or can find, usually in an accompanying syntax file) the column widths: <syntaxhighlight lang="r"> # Base R: reading fixed-width data gss_fwf <- read.fwf("gss_extract.dat", widths = c(2, 1, 2, 2), # character-width of each variable col.names = c("AGE", "SEX", "EDUC", "HAPPY")) # readr equivalent library(readr) gss_fwf <- read_fwf("gss_extract.dat", fwf_widths(c(2, 1, 2, 2), col_names = c("AGE", "SEX", "EDUC", "HAPPY"))) </syntaxhighlight> '''SAS files''' (<code>.sas7bdat</code>) and '''Stata files''' (<code>.dta</code>) are both handled by the same haven package you're already using for <code>.sav</code> files — and both carry similar embedded metadata (value labels, sometimes missing-value definitions) that haven will bring along automatically, the same way it does for SPSS files: <syntaxhighlight lang="r"> library(haven) sas_data <- read_sas("some_dataset.sas7bdat") stata_data <- read_dta("some_dataset.dta") </syntaxhighlight> None of this requires memorizing new concepts — it's the same <code>library() then read_something()</code> pattern you already know, applied to a different file extension. The only genuinely new skill is fixed-width files, since you have to supply column positions the file itself won't tell you (that's what the syntax file, or a coauthor with institutional memory, is for). The lesson worth internalizing: the format a dataset arrives in says nothing about how interesting or usable the data inside it is. Adapt to the format; don't let it decide whether the project is worth doing. <!-- IMAGE: A short visual "family tree" or comparison graphic showing the file-extension icons for .csv, .sav, .sas7bdat, .dta, and .dat side by side, labeled with which R function opens each — a quick-reference visual for a section that's inherently about "which tool for which file." --> == First Look at a Dataset == Whatever format it arrived in, once it's a data frame in R, the routine is the same: <syntaxhighlight lang="r"> head(gss) # first six rows tail(gss) # last six rows str(gss) # structure: variable names and types summary(gss) # quick numeric summary of every column dim(gss) # rows and columns names(gss) # just the variable names </syntaxhighlight> <code>View(gss)</code> will open a spreadsheet-style viewer in RStudio, which is genuinely useful for a quick visual scan — but use it sparingly on a dataset with thousands of rows. Scrolling through 2,000 respondents by eye is not a data cleaning strategy; it's a way to convince yourself you've checked something you haven't. == Identifying Problems == Three categories of problems show up in almost every real dataset, GSS included: * '''Missing values''' — represented as <code>NA</code> in R natively, but hiding as ordinary-looking numbers (0, 8, 9, 98, 99) in a freshly loaded GSS CSV file. * '''Values out of expected range''' — an age of 150, a year of education of -3. Rare in a well-curated dataset like the GSS, but worth a sanity check with <code>summary()</code> or <code>range()</code> before you trust anything. * '''Variables stored as the wrong type''' — a categorical variable stored as a number (Chapter 4's whole subject), or occasionally a numeric variable stored as text because of one stray non-numeric entry. Catching these three things, in this order, before you run a single substantive analysis, is most of what separates a careful data analyst from someone who's going to have an uncomfortable conversation with their professor about a mean that turned out to include forty-four "refused to answer" codes. == Handling Missing Data == R represents "no value here" with a special symbol, <code>NA</code>, which behaves differently from any ordinary number — critically, <code>NA</code> is contagious: almost any calculation that touches an <code>NA</code> returns <code>NA</code> right back, on the reasonable logic that R can't know the answer to a question that includes a missing piece. <syntaxhighlight lang="r"> is.na(gss$CONRINC) # TRUE/FALSE for each value: is it missing? sum(is.na(gss$CONRINC)) # how many missing values, total? mean(gss$CONRINC) # if any NAs are present, this returns NA mean(gss$CONRINC, na.rm = TRUE) # this tells R to ignore NAs and compute anyway </syntaxhighlight> <code>na.rm = TRUE</code> is not optional decoration — most summary functions in R (<code>mean()</code>, <code>sd()</code>, <code>sum()</code>, and others) will return a bare <code>NA</code> for the whole calculation if even one value is missing, unless you explicitly tell them to skip missing values first. This will happen to you at least once. It is not a bug; it's R declining to guess. '''Removing rows with missing values, base R:''' <syntaxhighlight lang="r"> gss_complete <- na.omit(gss) # drops any row with ANY missing value gss_no_missing_income <- gss[!is.na(gss$CONRINC), ] # drops rows missing CONRINC specifically </syntaxhighlight> '''Removing rows with missing values, dplyr:''' <syntaxhighlight lang="r"> library(dplyr) gss_no_missing_income <- gss %>% filter(!is.na(CONRINC)) </syntaxhighlight> Notice that <code>na.omit()</code> is a blunt instrument — it drops a whole respondent for being missing on ''any'' variable in the dataset, which can quietly shrink your sample far more than you intended if your data frame has fifty columns and each respondent is missing at least one of them. Prefer the targeted, variable-specific approach unless you have a good reason not to. == Replacing GSS Missing Codes With NA == If you loaded your data from a plain CSV (rather than a <code>.sav</code> file via haven, which typically handles a meaningful share of this for you automatically, as you saw in Chapter 3), GSS's numeric missing-value codes — 0, 8, 9, 98, 99, depending on the variable — are sitting in your data disguised as ordinary numbers, and you have to tell R which ones to treat as missing. This problem is worst for '''banded, categorical''' GSS variables, where a small integer like 98 or 99 is easy to confuse with a real category code. <code>RINCOME</code> (respondent's personal income, reported in brackets) is a textbook case: '''Base R:''' <syntaxhighlight lang="r"> gss$RINCOME[gss$RINCOME == 99] <- NA </syntaxhighlight> '''dplyr, with <code>na_if()</code> for a single code:''' <syntaxhighlight lang="r"> library(dplyr) gss <- gss %>% mutate(RINCOME = na_if(RINCOME, 99)) </syntaxhighlight> '''dplyr, with <code>case_when()</code> for multiple codes at once:''' <syntaxhighlight lang="r"> gss <- gss %>% mutate(RINCOME = case_when( RINCOME %in% c(0, 98, 99) ~ NA_real_, TRUE ~ RINCOME )) </syntaxhighlight> This step is exactly the manual work haven's <code>read_sav()</code> often does for you automatically, based on the <code>.sav</code> file's own embedded metadata — but "often" is doing real work in that sentence. Not every missing code is guaranteed to be flagged in a file's metadata, some datasets you'll work with beyond this course won't be <code>.sav</code> files at all, and understanding what's actually happening under the hood is what lets you catch it when the automatic version doesn't. Learn this the manual way regardless of which import method you used. This is also, incidentally, exactly why this book prefers <code>CONRINC</code> over <code>RINCOME</code> or banded <code>INCOME</code> for continuous-income examples. <code>CONRINC</code> is a derived variable — NORC has already done the work of converting bracketed responses into a single constant-dollar figure — and it generally arrives without this same small-integer sentinel-code problem, since a real income value in the thousands of dollars is never going to be confused with a placeholder like 98 or 99. That doesn't mean <code>CONRINC</code> is automatically free of missing data (respondents who didn't answer the underlying income questions will still show up as missing), only that you're less likely to need the manual sentinel-code detective work above to find it. Always confirm this against the actual codebook rather than assuming — but it's a real, and reasonable, part of why <code>CONRINC</code> is the simpler variable to hand to students. {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Script your cleaning steps. Never clean data by hand in a spreadsheet program and save over the original file — a hand-edited spreadsheet leaves no trace of what you changed or why, and "I'm pretty sure I fixed that one weird row" is not a reproducible research method. Your cleaning script IS part of your research documentation, not a throwaway step before the "real" analysis begins. }} == Subsetting Data == Once your data is clean, you'll frequently want to work with only some of it — certain rows, certain columns, or both. '''Base R bracket notation:''' <code>data[rows, columns]</code>, where leaving either side blank means "keep all of them." <syntaxhighlight lang="r"> under_40 <- gss[gss$AGE < 40, ] # rows: respondents under 40; all columns demo_vars <- gss[, c("AGE", "SEX", "RACE", "EDUC")] # all rows; only these columns </syntaxhighlight> '''dplyr:''' <code>filter()</code> for rows, <code>select()</code> for columns. <syntaxhighlight lang="r"> library(dplyr) under_40 <- gss %>% filter(AGE < 40) demo_vars <- gss %>% select(AGE, SEX, RACE, EDUC) </syntaxhighlight> The dplyr versions read almost like English sentences, which is exactly the readability advantage this book keeps pointing to — "filter to rows where age is under 40" versus a bracket with a comma in a specific position that means something only because you've memorized the convention. == Saving a Cleaned Dataset == Once you've cleaned a dataset, save it — as its own file, distinct from the raw original, so you (and anyone checking your work) can always see exactly what the data looked like before and after your changes. <syntaxhighlight lang="r"> write.csv(gss, "gss2010_cleaned.csv", row.names = FALSE) save(gss, file = "gss2010_cleaned.RData") </syntaxhighlight> <code>write.csv()</code> produces a plain-text file readable by essentially any software on Earth; <code>save()</code> produces an R-specific <code>.RData</code> file that preserves R object types exactly (including any factors or haven-labelled columns) but requires R to open. Save both if storage space isn't a concern — the CSV for portability, the RData for fidelity. == Chapter Summary == Data cleaning closes the gap between data as collected and data as analyzable, and it follows a predictable routine: load the data (from whatever format it happens to arrive in — CSV, SPSS, SAS, Stata, or an old-school fixed-width file), take a careful first look with <code>head()</code>, <code>str()</code>, <code>summary()</code>, and <code>names()</code>, identify missing values and out-of-range or mistyped variables, and handle missing data explicitly — either by letting R's native <code>NA</code> do its job with <code>na.rm = TRUE</code>, or by manually recoding GSS's numeric missing codes (0, 8, 9, 98, 99) to real <code>NA</code> values when they haven't already been handled by your import method. From there, <code>select()</code>/<code>filter()</code> (or their base R bracket equivalents) let you subset to exactly the rows and columns your analysis needs, and saving a distinct cleaned file preserves an honest record of what changed. None of this is the exciting part of the semester. All of it is the part that determines whether the exciting part can be trusted. == Practice Examples == === Example 1: Find and Replace Missing Codes in RINCOME (and Compare to CONRINC) === '''The Research Question:''' What do the raw values of <code>RINCOME</code> look like, which ones need to be treated as missing before any analysis, and how does this compare to the continuous <code>CONRINC</code> variable? '''The Code (base R):''' <syntaxhighlight lang="r"> table(gss$RINCOME) gss$RINCOME[gss$RINCOME %in% c(0, 98, 99)] <- NA sum(is.na(gss$CONRINC)) </syntaxhighlight> '''The Code (dplyr):''' <syntaxhighlight lang="r"> library(dplyr) gss %>% count(RINCOME) gss <- gss %>% mutate(RINCOME = case_when( RINCOME %in% c(0, 98, 99) ~ NA_real_, TRUE ~ RINCOME )) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> 1 2 3 ... 0 98 99 120 340 410 ... 8 22 15 [1] 30 # sum(is.na(gss$CONRINC)) </syntaxhighlight> '''The Interpretation:''' The frequency table for <code>RINCOME</code> reveals a handful of respondents coded 0, 98, or 99 — "not applicable," "don't know," and "refused," respectively, none of which describe an actual income bracket. Recoding them to <code>NA</code> removes them from any future calculation without deleting the respondents' other answers; that respondent's <code>AGE</code> or <code>HAPPY</code> response is still perfectly usable, only their income is now honestly marked as unknown rather than silently treated as the lowest bracket (which would be a very different, and very wrong, claim). <code>CONRINC</code>, by contrast, simply shows 30 missing values with no sentinel-code detective work required — a direct illustration of why this book uses it as the default continuous income variable from here forward. '''Follow-Up Challenge:''' Compute <code>mean(gss$RINCOME, na.rm = TRUE)</code> before and after this recode. How much does the recoded mean change? Then compute <code>mean(gss$CONRINC, na.rm = TRUE)</code> and compare — does the "simpler" variable tell a similar story? === Example 2: Subset to Respondents Under 40 === '''The Research Question:''' How does the demographic profile of a data subset — say, respondents under 40 — compare to the full sample? '''The Code (base R):''' <syntaxhighlight lang="r"> under_40 <- gss[gss$AGE < 40, ] nrow(under_40) </syntaxhighlight> '''The Code (dplyr):''' <syntaxhighlight lang="r"> library(dplyr) under_40 <- gss %>% filter(AGE < 40) nrow(under_40) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 812 </syntaxhighlight> '''The Interpretation:''' Both approaches produce an identical subset — 812 of the original respondents are under 40 — using two different but equally valid syntaxes. Subsetting like this is the first step toward almost every comparative analysis in this book: you'll do exactly this kind of filtering before running a t-test comparing two groups in Chapter 13, or an ANOVA comparing several in Chapter 15. '''Follow-Up Challenge:''' Create a second subset of respondents 40 and older, and compare the two groups' average <code>EDUC</code> using nothing more than two calls to <code>mean(..., na.rm = TRUE)</code>. Resist the urge to conclude anything definitive about whether the difference is "real" — that question is exactly what Chapter 13 will teach you to answer properly. === Example 3: Select Variables and Save a Cleaned Dataset === '''The Research Question:''' How do you produce a smaller, cleaned working file containing only the variables relevant to a specific analysis? '''The Code (base R):''' <syntaxhighlight lang="r"> gss_working <- gss[, c("AGE", "SEX", "EDUC", "CONRINC", "HAPPY")] write.csv(gss_working, "gss2010_working.csv", row.names = FALSE) </syntaxhighlight> '''The Code (dplyr):''' <syntaxhighlight lang="r"> library(dplyr) gss_working <- gss %>% select(AGE, SEX, EDUC, CONRINC, HAPPY) write.csv(gss_working, "gss2010_working.csv", row.names = FALSE) </syntaxhighlight> '''The Output:''' A new file, <code>gss2010_working.csv</code>, appears in your project folder, containing only the five selected columns for every respondent. '''The Interpretation:''' There's no statistical output here — the "result" is a file on disk, and that's the point. Keeping a lean, purpose-built working dataset alongside (never instead of) your full raw file is good practice: it's faster to work with, it's clearer about what a given analysis actually used, and it can be shared or archived (see this chapter's Open Science Corner) without dragging along every variable you didn't end up needing. '''Follow-Up Challenge:''' Open <code>gss2010_working.csv</code> in a plain text editor or spreadsheet program outside of R. Does it look the way you expected? What would happen if you accidentally overwrote your original <code>gss2010.csv</code> with this smaller file by giving it the same name? === Example 4: Reading a Fixed-Width or Foreign-Format File === '''The Task:''' Practice reading a dataset from a format other than CSV or <code>.sav</code> — the kind of file you'll likely encounter with older or externally supplied data. '''The Code:''' <syntaxhighlight lang="r"> # A hypothetical fixed-width extract with AGE (2 chars), SEX (1 char), EDUC (2 chars) practice_data <- read.fwf("practice_extract.dat", widths = c(2, 1, 2), col.names = c("AGE", "SEX", "EDUC")) str(practice_data) # A hypothetical Stata file from a collaborator library(haven) stata_practice <- read_dta("collaborator_data.dta") str(stata_practice) </syntaxhighlight> '''The Output:''' A data frame with the specified columns, correctly split from the fixed-width source; for the Stata example, a tibble with haven-labelled columns similar to what you saw from <code>read_sav()</code> in Chapter 3. '''The Interpretation:''' The mechanics barely change across formats — you're still ending up with a rectangular data frame you already know how to explore and clean. The only real new skill is fixed-width files, where you have to supply the column boundaries yourself rather than relying on a delimiter or embedded structure. This is a real, not hypothetical, skill: sociology students who go on to work with historical datasets, restricted-use files, or data inherited from a retiring colleague's SAS or Stata scripts will hit this eventually, often with far less friendly documentation than this textbook provides. '''Follow-Up Challenge:''' Find a publicly available dataset (a government statistical agency is a good bet) that is distributed as a <code>.dat</code> file with a separate layout/syntax file. Without necessarily downloading the full thing, look at the syntax file and identify what information you'd need to extract from it to build the <code>widths</code> and <code>col.names</code> arguments for <code>read.fwf()</code>. == References == <references/> g7muf1pjpiusy41h83iyd15i5pmq9z3 4656641 4656588 2026-08-07T15:02:53Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656641 wikitext text/x-wiki = Chapter 5: Loading, Exploring, and Cleaning GSS Data = Data cleaning is 80% of data analysis. The other 80% is also data cleaning. (The math doesn't add up. That's the joke.) Cleaning data does not feel like a discrete phase you finish and move past — it's more like laundry: you will do it again next week, on a different dataset, and it will still take longer than you think. This chapter teaches that unglamorous, essential work. Real data is messy. GSS data, gathered from tens of thousands of real conversations over five decades, is especially messy. The good news is that "messy" here means "predictably messy" — the same handful of problems show up again and again, and once you know what to look for, cleaning a dataset stops being mysterious and starts being routine. <!-- IMAGE: A wry, low-key illustration contrasting "data as collected" (a chaotic, crumpled stack of papers or a messy spreadsheet) with "data as analyzable" (a clean, orderly table) — visually sets up the chapter's central distinction before any code appears. --> == Why Data Cleaning Exists == Data as collected is never quite the same thing as data ready for analysis. A respondent skips a question. An interviewer enters "don't know" because that's what was said. A variable that should be numeric gets stored as text because one row has a stray character in it. None of this is anyone's fault, exactly — it's just what happens when real information, gathered from real people, gets forced into a rectangular spreadsheet. The job of this chapter is to close the gap between the data you were handed and the data you can actually trust a `mean()` or a `t.test()` to run on. == Loading Data (A Recap, With Options) == You met the basics of this in Chapter 3, but here's the fuller picture, since Chapter 3 focused specifically on the GSS and this chapter's habits apply to any dataset you'll ever load. '''Base R:''' <syntaxhighlight lang="r"> gss <- read.csv("gss2010.csv") gss <- read.table("gss2010.txt", header = TRUE, sep = ",") </syntaxhighlight> '''dplyr / tidyverse:''' <syntaxhighlight lang="r"> library(readr) gss <- read_csv("gss2010.csv") </syntaxhighlight> '''haven (this course's default, from the .sav file):''' <syntaxhighlight lang="r"> library(haven) gss <- read_sav("gss2010.sav") </syntaxhighlight> Three functions, three formats, one goal: a data frame in R's memory that you can start examining. Which one you reach for depends entirely on what format the data arrives in — which, as any working researcher eventually discovers, is not always the format you'd choose. == A Field Guide to Other File Formats == The GSS today is easy to obtain as a clean <code>.csv</code> or <code>.sav</code> file through the Data Explorer. This has not always been true, and it will not always be true of ''every'' dataset you encounter in your research career. Sociologists routinely inherit data from SAS, from Stata, or from decades-old fixed-width <code>.dat</code> files that predate any of the friendlier tools this book has shown you so far — the GSS itself was, for most of its history, distributed exactly this way: a raw ASCII <code>.dat</code> file paired with a separate "syntax" file (for SPSS, SAS, or Stata) that told the software which character positions belonged to which variable. If you ever inherit a dataset from a professor who's been doing this since 1998, this is almost certainly what you'll get. '''Fixed-width <code>.dat</code> files''' store every variable in a fixed set of character columns, with no delimiters between them — the file looks like a wall of digits until you know exactly which positions to read. Both base R and readr can handle this if you know (or can find, usually in an accompanying syntax file) the column widths: <syntaxhighlight lang="r"> # Base R: reading fixed-width data gss_fwf <- read.fwf("gss_extract.dat", widths = c(2, 1, 2, 2), # character-width of each variable col.names = c("AGE", "SEX", "EDUC", "HAPPY")) # readr equivalent library(readr) gss_fwf <- read_fwf("gss_extract.dat", fwf_widths(c(2, 1, 2, 2), col_names = c("AGE", "SEX", "EDUC", "HAPPY"))) </syntaxhighlight> '''SAS files''' (<code>.sas7bdat</code>) and '''Stata files''' (<code>.dta</code>) are both handled by the same haven package you're already using for <code>.sav</code> files — and both carry similar embedded metadata (value labels, sometimes missing-value definitions) that haven will bring along automatically, the same way it does for SPSS files: <syntaxhighlight lang="r"> library(haven) sas_data <- read_sas("some_dataset.sas7bdat") stata_data <- read_dta("some_dataset.dta") </syntaxhighlight> None of this requires memorizing new concepts — it's the same <code>library() then read_something()</code> pattern you already know, applied to a different file extension. The only genuinely new skill is fixed-width files, since you have to supply column positions the file itself won't tell you (that's what the syntax file, or a coauthor with institutional memory, is for). The lesson worth internalizing: the format a dataset arrives in says nothing about how interesting or usable the data inside it is. Adapt to the format; don't let it decide whether the project is worth doing. <!-- IMAGE: A short visual "family tree" or comparison graphic showing the file-extension icons for .csv, .sav, .sas7bdat, .dta, and .dat side by side, labeled with which R function opens each — a quick-reference visual for a section that's inherently about "which tool for which file." --> == First Look at a Dataset == Whatever format it arrived in, once it's a data frame in R, the routine is the same: <syntaxhighlight lang="r"> head(gss) # first six rows tail(gss) # last six rows str(gss) # structure: variable names and types summary(gss) # quick numeric summary of every column dim(gss) # rows and columns names(gss) # just the variable names </syntaxhighlight> <code>View(gss)</code> will open a spreadsheet-style viewer in RStudio, which is genuinely useful for a quick visual scan — but use it sparingly on a dataset with thousands of rows. Scrolling through 2,000 respondents by eye is not a data cleaning strategy; it's a way to convince yourself you've checked something you haven't. == Identifying Problems == Three categories of problems show up in almost every real dataset, GSS included: * '''Missing values''' — represented as <code>NA</code> in R natively, but hiding as ordinary-looking numbers (0, 8, 9, 98, 99) in a freshly loaded GSS CSV file. * '''Values out of expected range''' — an age of 150, a year of education of -3. Rare in a well-curated dataset like the GSS, but worth a sanity check with <code>summary()</code> or <code>range()</code> before you trust anything. * '''Variables stored as the wrong type''' — a categorical variable stored as a number (Chapter 4's whole subject), or occasionally a numeric variable stored as text because of one stray non-numeric entry. Catching these three things, in this order, before you run a single substantive analysis, is most of what separates a careful data analyst from someone who's going to have an uncomfortable conversation with their professor about a mean that turned out to include forty-four "refused to answer" codes. == Handling Missing Data == R represents "no value here" with a special symbol, <code>NA</code>, which behaves differently from any ordinary number — critically, <code>NA</code> is contagious: almost any calculation that touches an <code>NA</code> returns <code>NA</code> right back, on the reasonable logic that R can't know the answer to a question that includes a missing piece. <syntaxhighlight lang="r"> is.na(gss$CONRINC) # TRUE/FALSE for each value: is it missing? sum(is.na(gss$CONRINC)) # how many missing values, total? mean(gss$CONRINC) # if any NAs are present, this returns NA mean(gss$CONRINC, na.rm = TRUE) # this tells R to ignore NAs and compute anyway </syntaxhighlight> <code>na.rm = TRUE</code> is not optional decoration — most summary functions in R (<code>mean()</code>, <code>sd()</code>, <code>sum()</code>, and others) will return a bare <code>NA</code> for the whole calculation if even one value is missing, unless you explicitly tell them to skip missing values first. This will happen to you at least once. It is not a bug; it's R declining to guess. '''Removing rows with missing values, base R:''' <syntaxhighlight lang="r"> gss_complete <- na.omit(gss) # drops any row with ANY missing value gss_no_missing_income <- gss[!is.na(gss$CONRINC), ] # drops rows missing CONRINC specifically </syntaxhighlight> '''Removing rows with missing values, dplyr:''' <syntaxhighlight lang="r"> library(dplyr) gss_no_missing_income <- gss %>% filter(!is.na(CONRINC)) </syntaxhighlight> Notice that <code>na.omit()</code> is a blunt instrument — it drops a whole respondent for being missing on ''any'' variable in the dataset, which can quietly shrink your sample far more than you intended if your data frame has fifty columns and each respondent is missing at least one of them. Prefer the targeted, variable-specific approach unless you have a good reason not to. == Replacing GSS Missing Codes With NA == If you loaded your data from a plain CSV (rather than a <code>.sav</code> file via haven, which typically handles a meaningful share of this for you automatically, as you saw in Chapter 3), GSS's numeric missing-value codes — 0, 8, 9, 98, 99, depending on the variable — are sitting in your data disguised as ordinary numbers, and you have to tell R which ones to treat as missing. This problem is worst for '''banded, categorical''' GSS variables, where a small integer like 98 or 99 is easy to confuse with a real category code. <code>RINCOME</code> (respondent's personal income, reported in brackets) is a textbook case: '''Base R:''' <syntaxhighlight lang="r"> gss$RINCOME[gss$RINCOME == 99] <- NA </syntaxhighlight> '''dplyr, with <code>na_if()</code> for a single code:''' <syntaxhighlight lang="r"> library(dplyr) gss <- gss %>% mutate(RINCOME = na_if(RINCOME, 99)) </syntaxhighlight> '''dplyr, with <code>case_when()</code> for multiple codes at once:''' <syntaxhighlight lang="r"> gss <- gss %>% mutate(RINCOME = case_when( RINCOME %in% c(0, 98, 99) ~ NA_real_, TRUE ~ RINCOME )) </syntaxhighlight> This step is exactly the manual work haven's <code>read_sav()</code> often does for you automatically, based on the <code>.sav</code> file's own embedded metadata — but "often" is doing real work in that sentence. Not every missing code is guaranteed to be flagged in a file's metadata, some datasets you'll work with beyond this course won't be <code>.sav</code> files at all, and understanding what's actually happening under the hood is what lets you catch it when the automatic version doesn't. Learn this the manual way regardless of which import method you used. This is also, incidentally, exactly why this book prefers <code>CONRINC</code> over <code>RINCOME</code> or banded <code>INCOME</code> for continuous-income examples. <code>CONRINC</code> is a derived variable — NORC has already done the work of converting bracketed responses into a single constant-dollar figure — and it generally arrives without this same small-integer sentinel-code problem, since a real income value in the thousands of dollars is never going to be confused with a placeholder like 98 or 99. That doesn't mean <code>CONRINC</code> is automatically free of missing data (respondents who didn't answer the underlying income questions will still show up as missing), only that you're less likely to need the manual sentinel-code detective work above to find it. Always confirm this against the actual codebook rather than assuming — but it's a real, and reasonable, part of why <code>CONRINC</code> is the simpler variable to hand to students. {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Script your cleaning steps. Never clean data by hand in a spreadsheet program and save over the original file — a hand-edited spreadsheet leaves no trace of what you changed or why, and "I'm pretty sure I fixed that one weird row" is not a reproducible research method. Your cleaning script IS part of your research documentation, not a throwaway step before the "real" analysis begins. }} == Subsetting Data == Once your data is clean, you'll frequently want to work with only some of it — certain rows, certain columns, or both. '''Base R bracket notation:''' <code>data[rows, columns]</code>, where leaving either side blank means "keep all of them." <syntaxhighlight lang="r"> under_40 <- gss[gss$AGE < 40, ] # rows: respondents under 40; all columns demo_vars <- gss[, c("AGE", "SEX", "RACE", "EDUC")] # all rows; only these columns </syntaxhighlight> '''dplyr:''' <code>filter()</code> for rows, <code>select()</code> for columns. <syntaxhighlight lang="r"> library(dplyr) under_40 <- gss %>% filter(AGE < 40) demo_vars <- gss %>% select(AGE, SEX, RACE, EDUC) </syntaxhighlight> The dplyr versions read almost like English sentences, which is exactly the readability advantage this book keeps pointing to — "filter to rows where age is under 40" versus a bracket with a comma in a specific position that means something only because you've memorized the convention. == Saving a Cleaned Dataset == Once you've cleaned a dataset, save it — as its own file, distinct from the raw original, so you (and anyone checking your work) can always see exactly what the data looked like before and after your changes. <syntaxhighlight lang="r"> write.csv(gss, "gss2010_cleaned.csv", row.names = FALSE) save(gss, file = "gss2010_cleaned.RData") </syntaxhighlight> <code>write.csv()</code> produces a plain-text file readable by essentially any software on Earth; <code>save()</code> produces an R-specific <code>.RData</code> file that preserves R object types exactly (including any factors or haven-labelled columns) but requires R to open. Save both if storage space isn't a concern — the CSV for portability, the RData for fidelity. == Chapter Summary == Data cleaning closes the gap between data as collected and data as analyzable, and it follows a predictable routine: load the data (from whatever format it happens to arrive in — CSV, SPSS, SAS, Stata, or an old-school fixed-width file), take a careful first look with <code>head()</code>, <code>str()</code>, <code>summary()</code>, and <code>names()</code>, identify missing values and out-of-range or mistyped variables, and handle missing data explicitly — either by letting R's native <code>NA</code> do its job with <code>na.rm = TRUE</code>, or by manually recoding GSS's numeric missing codes (0, 8, 9, 98, 99) to real <code>NA</code> values when they haven't already been handled by your import method. From there, <code>select()</code>/<code>filter()</code> (or their base R bracket equivalents) let you subset to exactly the rows and columns your analysis needs, and saving a distinct cleaned file preserves an honest record of what changed. None of this is the exciting part of the semester. All of it is the part that determines whether the exciting part can be trusted. == Practice Examples == === Example 1: Find and Replace Missing Codes in RINCOME (and Compare to CONRINC) === '''The Research Question:''' What do the raw values of <code>RINCOME</code> look like, which ones need to be treated as missing before any analysis, and how does this compare to the continuous <code>CONRINC</code> variable? '''The Code (base R):''' <syntaxhighlight lang="r"> table(gss$RINCOME) gss$RINCOME[gss$RINCOME %in% c(0, 98, 99)] <- NA sum(is.na(gss$CONRINC)) </syntaxhighlight> '''The Code (dplyr):''' <syntaxhighlight lang="r"> library(dplyr) gss %>% count(RINCOME) gss <- gss %>% mutate(RINCOME = case_when( RINCOME %in% c(0, 98, 99) ~ NA_real_, TRUE ~ RINCOME )) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> 1 2 3 ... 0 98 99 120 340 410 ... 8 22 15 [1] 30 # sum(is.na(gss$CONRINC)) </syntaxhighlight> '''The Interpretation:''' The frequency table for <code>RINCOME</code> reveals a handful of respondents coded 0, 98, or 99 — "not applicable," "don't know," and "refused," respectively, none of which describe an actual income bracket. Recoding them to <code>NA</code> removes them from any future calculation without deleting the respondents' other answers; that respondent's <code>AGE</code> or <code>HAPPY</code> response is still perfectly usable, only their income is now honestly marked as unknown rather than silently treated as the lowest bracket (which would be a very different, and very wrong, claim). <code>CONRINC</code>, by contrast, simply shows 30 missing values with no sentinel-code detective work required — a direct illustration of why this book uses it as the default continuous income variable from here forward. '''Follow-Up Challenge:''' Compute <code>mean(gss$RINCOME, na.rm = TRUE)</code> before and after this recode. How much does the recoded mean change? Then compute <code>mean(gss$CONRINC, na.rm = TRUE)</code> and compare — does the "simpler" variable tell a similar story? === Example 2: Subset to Respondents Under 40 === '''The Research Question:''' How does the demographic profile of a data subset — say, respondents under 40 — compare to the full sample? '''The Code (base R):''' <syntaxhighlight lang="r"> under_40 <- gss[gss$AGE < 40, ] nrow(under_40) </syntaxhighlight> '''The Code (dplyr):''' <syntaxhighlight lang="r"> library(dplyr) under_40 <- gss %>% filter(AGE < 40) nrow(under_40) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 812 </syntaxhighlight> '''The Interpretation:''' Both approaches produce an identical subset — 812 of the original respondents are under 40 — using two different but equally valid syntaxes. Subsetting like this is the first step toward almost every comparative analysis in this book: you'll do exactly this kind of filtering before running a t-test comparing two groups in Chapter 13, or an ANOVA comparing several in Chapter 15. '''Follow-Up Challenge:''' Create a second subset of respondents 40 and older, and compare the two groups' average <code>EDUC</code> using nothing more than two calls to <code>mean(..., na.rm = TRUE)</code>. Resist the urge to conclude anything definitive about whether the difference is "real" — that question is exactly what Chapter 13 will teach you to answer properly. === Example 3: Select Variables and Save a Cleaned Dataset === '''The Research Question:''' How do you produce a smaller, cleaned working file containing only the variables relevant to a specific analysis? '''The Code (base R):''' <syntaxhighlight lang="r"> gss_working <- gss[, c("AGE", "SEX", "EDUC", "CONRINC", "HAPPY")] write.csv(gss_working, "gss2010_working.csv", row.names = FALSE) </syntaxhighlight> '''The Code (dplyr):''' <syntaxhighlight lang="r"> library(dplyr) gss_working <- gss %>% select(AGE, SEX, EDUC, CONRINC, HAPPY) write.csv(gss_working, "gss2010_working.csv", row.names = FALSE) </syntaxhighlight> '''The Output:''' A new file, <code>gss2010_working.csv</code>, appears in your project folder, containing only the five selected columns for every respondent. '''The Interpretation:''' There's no statistical output here — the "result" is a file on disk, and that's the point. Keeping a lean, purpose-built working dataset alongside (never instead of) your full raw file is good practice: it's faster to work with, it's clearer about what a given analysis actually used, and it can be shared or archived (see this chapter's Open Science Corner) without dragging along every variable you didn't end up needing. '''Follow-Up Challenge:''' Open <code>gss2010_working.csv</code> in a plain text editor or spreadsheet program outside of R. Does it look the way you expected? What would happen if you accidentally overwrote your original <code>gss2010.csv</code> with this smaller file by giving it the same name? === Example 4: Reading a Fixed-Width or Foreign-Format File === '''The Task:''' Practice reading a dataset from a format other than CSV or <code>.sav</code> — the kind of file you'll likely encounter with older or externally supplied data. '''The Code:''' <syntaxhighlight lang="r"> # A hypothetical fixed-width extract with AGE (2 chars), SEX (1 char), EDUC (2 chars) practice_data <- read.fwf("practice_extract.dat", widths = c(2, 1, 2), col.names = c("AGE", "SEX", "EDUC")) str(practice_data) # A hypothetical Stata file from a collaborator library(haven) stata_practice <- read_dta("collaborator_data.dta") str(stata_practice) </syntaxhighlight> '''The Output:''' A data frame with the specified columns, correctly split from the fixed-width source; for the Stata example, a tibble with haven-labelled columns similar to what you saw from <code>read_sav()</code> in Chapter 3. '''The Interpretation:''' The mechanics barely change across formats — you're still ending up with a rectangular data frame you already know how to explore and clean. The only real new skill is fixed-width files, where you have to supply the column boundaries yourself rather than relying on a delimiter or embedded structure. This is a real, not hypothetical, skill: sociology students who go on to work with historical datasets, restricted-use files, or data inherited from a retiring colleague's SAS or Stata scripts will hit this eventually, often with far less friendly documentation than this textbook provides. '''Follow-Up Challenge:''' Find a publicly available dataset (a government statistical agency is a good bet) that is distributed as a <code>.dat</code> file with a separate layout/syntax file. Without necessarily downloading the full thing, look at the syntax file and identify what information you'd need to extract from it to build the <code>widths</code> and <code>col.names</code> arguments for <code>read.fwf()</code>. == References == <references/> {{BookCat}} mhk0b7dsi4cwm07lv969hoemk17kfll Statistics for Sociologists/Chapter 6: Recoding and Transforming Variables 0 485147 4656589 2026-08-07T14:05:37Z Rcragun 41177 first draft 4656589 wikitext text/x-wiki = Chapter 6: Recoding and Transforming Variables = Consider <code>GOD</code>, a GSS variable measuring belief in God, which — brace yourself — has response categories coded 1 through 6, plus 0, 8, and 98 sitting off to the side meaning "not applicable," "don't know," and "no answer." Six real categories. Three impostors. All nine of them stored as plain numbers, indistinguishable from one another until you go looking. What could go wrong? Several things, all at once, unless you know how to recode. This chapter is about reshaping variables into the form your analysis actually needs — collapsing categories that are too fine-grained, reversing scales that point the wrong direction, building new variables out of old ones, and, always, checking your work before you trust it. == Why Recode at All? == GSS variables were designed to capture rich detail, not to be immediately analysis-ready. A five-point happiness scale might need collapsing to a simpler happy/not-happy split for a specific research question. An age variable might be more useful as age groups than as exact years. A scale might run backward relative to how you want to interpret it. None of this means the original variable was poorly designed — it means the original variable was designed for flexibility, and recoding is how you spend some of that flexibility on the specific question in front of you. == Collapsing Categories == Sometimes a variable has more categories than your research question needs. GSS's <code>HAPPY</code> variable has three levels (very happy, pretty happy, not too happy); collapsing it to two (happy vs. not happy) trades some nuance for a simpler, often more interpretable comparison. '''Base R, with <code>ifelse()</code>:''' <syntaxhighlight lang="r"> gss$HAPPY_binary <- ifelse(gss$HAPPY == 1, "Happy", "Not Happy") </syntaxhighlight> '''dplyr, with <code>case_when()</code>:''' <syntaxhighlight lang="r"> library(dplyr) gss <- gss %>% mutate(HAPPY_binary = case_when( HAPPY == 1 ~ "Happy", HAPPY %in% c(2, 3) ~ "Not Happy", TRUE ~ NA_character_ )) </syntaxhighlight> Notice the <code>case_when()</code> version's final line, <code>TRUE ~ NA_character_</code> — this is a deliberate safety net. Any value that doesn't match an earlier condition (including, importantly, any leftover missing codes you haven't yet recoded to <code>NA</code>) falls through to a genuine missing value instead of silently landing in whichever category happens to come first. <code>ifelse()</code> has no equivalent safety net built in; a value of 8 ("don't know") that slipped through uncaught would land in "Not Happy" purely because it isn't a 1, which is exactly the kind of quiet, plausible-looking error that makes it into a final paper unless you check. == Creating Dummy Variables == A '''dummy variable''' (also called an indicator variable) recodes any categorical variable into a 0/1 flag for a single category of interest — "is this respondent Protestant, yes or no" rather than "which of six religions is this respondent." Dummy variables are the standard currency of regression (Chapter 16), which generally wants 0s and 1s rather than unordered category labels. <syntaxhighlight lang="r"> # Base R gss$is_protestant <- ifelse(gss$RELIG == 1, 1, 0) # dplyr gss <- gss %>% mutate(is_protestant = if_else(RELIG == 1, 1, 0)) </syntaxhighlight> == Reversing Scales == Occasionally a scale is coded in the opposite direction from how you want to interpret it — high numbers meaning "less" of something rather than "more." A common fix, for a scale running 1 to k, is: <syntaxhighlight lang="r"> gss$SCALE_reversed <- (max(gss$SCALE, na.rm = TRUE) + 1) - gss$SCALE </syntaxhighlight> For a known 1-to-5 scale, this is often written more transparently as <code>6 - gss$SCALE</code> — the general formula above just avoids hardcoding the "6" in case the scale's range changes later or you're writing a function meant to work on more than one scale. Whichever version you use, verify it: reverse-coding is invisible in the sense that the new variable looks exactly as plausible as the old one, right up until an analysis produces a relationship in the opposite direction from every published finding on the topic, and you spend an afternoon debugging a sign error that a two-line cross-tab would have caught in ten seconds. == Creating New Variables From Existing Ones == Continuous variables can be turned into meaningful categories — age groups from exact age, for instance: '''Base R, with nested <code>ifelse()</code>:''' <syntaxhighlight lang="r"> gss$age_group <- ifelse(gss$AGE < 30, "Under 30", ifelse(gss$AGE < 50, "30-49", ifelse(gss$AGE < 65, "50-64", "65+"))) </syntaxhighlight> '''dplyr, with <code>case_when()</code> (considerably more readable once you have more than two cutoffs):''' <syntaxhighlight lang="r"> library(dplyr) gss <- gss %>% mutate(age_group = case_when( AGE < 30 ~ "Under 30", AGE < 50 ~ "30-49", AGE < 65 ~ "50-64", AGE >= 65 ~ "65+", TRUE ~ NA_character_ )) </syntaxhighlight> This is the point in the book where <code>case_when()</code>'s advantage over nested <code>ifelse()</code> stops being subtle. Four nested <code>ifelse()</code> calls are already hard to read and easy to mis-parenthesize; a real analysis with eight or ten cutoffs in base R becomes an exercise in counting closing parentheses. <code>case_when()</code> scales to that complexity without becoming unreadable, which is a large part of why this book keeps introducing it as the dplyr default for anything beyond the simplest recode. == Labeling Factors == Once a categorical variable's numeric codes are finalized, converting it to a labeled factor makes it self-documenting — the same move from Chapter 4, applied here to your newly created variables: <syntaxhighlight lang="r"> gss$age_group <- factor(gss$age_group, levels = c("Under 30", "30-49", "50-64", "65+")) </syntaxhighlight> Specifying <code>levels</code> explicitly, even when the labels are already correct character strings, matters for one specific reason: it controls the ''order'' categories appear in in tables and plots. Without it, R will default to alphabetical order — which is how you end up with a bar chart running "30-49, 50-64, 65+, Under 30" instead of the sensible chronological order a human reader expects. If you're working with a haven-imported, already-labelled variable (Chapter 3), the equivalent move is usually <code>haven::as_factor()</code> rather than typing out labels by hand — but for any variable ''you've'' constructed from scratch, like <code>age_group</code> above, you're the one supplying the labels, so the manual <code>factor()</code> approach is what you'll actually use. == Checking Your Work: table() and tabyl() == Every recode should be verified, without exception, by cross-tabulating the old variable against the new one. This is not optional caution — it's the single fastest way to catch a recoding mistake before it propagates into every analysis downstream. '''Base R:''' <syntaxhighlight lang="r"> table(gss$HAPPY, gss$HAPPY_binary) </syntaxhighlight> '''Using <code>tabyl()</code> from the janitor package<ref>Firke, S. ''janitor: Simple Tools for Examining and Cleaning Dirty Data''. R package. https://sfirke.github.io/janitor/</ref> (a genuinely pleasant upgrade over base <code>table()</code> for this exact purpose):''' <syntaxhighlight lang="r"> library(janitor) gss %>% tabyl(HAPPY, HAPPY_binary) </syntaxhighlight> Look at the resulting table and ask one question: does every original category land in the new category you intended, and nowhere else? For the <code>GOD</code> variable from this chapter's opening example, this check would immediately reveal whether your recode accidentally treated "don't know" (8) as a real belief category instead of routing it to <code>NA</code> — a mistake that a quick glance at the raw numbers would never catch, but a two-way table catches instantly. {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Document every recode decision in your script with comments. "Collapsed HAPPY to binary because the three-category version had too few cases in 'not too happy' for a reliable comparison" is a sentence that takes ten seconds to type and will save you — or whoever reviews your work — twenty minutes of confused reverse-engineering six months from now. Future you, and any reviewer, will thank present you specifically for this habit. }} == Chapter Summary == Recoding reshapes variables into the form a specific analysis needs: collapsing fine-grained categories into simpler ones, building 0/1 dummy variables for regression, reversing scales that run the wrong direction, and constructing new categorical variables (like age groups) from continuous ones. <code>case_when()</code> in dplyr generally outperforms nested <code>ifelse()</code> in base R once more than a couple of conditions are involved, and both approaches benefit from an explicit fallback for unmatched or missing values. Once a recode is finalized, <code>factor()</code> (or <code>haven::as_factor()</code> for already-labelled data) makes categories self-documenting and controls their display order. None of this is trustworthy, however, without the last step: cross-tabulating old versus new with <code>table()</code> or <code>tabyl()</code> to confirm the recode did exactly what you intended — a habit that turns "I'm pretty sure this is right" into "I checked, and this is right." == Practice Examples == === Example 1: Recode HAPPY Into a Binary Variable === '''The Research Question:''' Is it more useful, for a given analysis, to treat happiness as a simple happy/not-happy split rather than three ordered categories? '''The Code (base R):''' <syntaxhighlight lang="r"> gss$HAPPY_binary <- ifelse(gss$HAPPY == 1, "Happy", ifelse(gss$HAPPY %in% c(2, 3), "Not Happy", NA)) table(gss$HAPPY, gss$HAPPY_binary) </syntaxhighlight> '''The Code (dplyr):''' <syntaxhighlight lang="r"> library(dplyr) gss <- gss %>% mutate(HAPPY_binary = case_when( HAPPY == 1 ~ "Happy", HAPPY %in% c(2, 3) ~ "Not Happy", TRUE ~ NA_character_ )) gss %>% count(HAPPY, HAPPY_binary) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Happy Not Happy 1 480 0 2 0 950 3 0 570 </syntaxhighlight> '''The Interpretation:''' The cross-tabulation confirms the recode behaved exactly as intended: every respondent originally coded 1 ("very happy") landed in "Happy," and every respondent coded 2 or 3 landed in "Not Happy," with no crossover and no silent mishandling of missing codes. This binary version trades detail for simplicity — useful, for instance, going into Chapter 13's t-tests and Chapter 14's chi-square tests, both of which handle a clean two-category outcome more straightforwardly than a three-category one. '''Follow-Up Challenge:''' Would a different collapsing rule — say, treating "pretty happy" as "Happy" alongside "very happy," leaving only "not too happy" as "Not Happy" — change the story your data tells? Try it, and compare the resulting group sizes. === Example 2: Create Age Groups From Continuous AGE === '''The Research Question:''' Does grouping respondents into age categories reveal a story that raw continuous age doesn't make as immediately visible? '''The Code:''' <syntaxhighlight lang="r"> library(dplyr) gss <- gss %>% mutate(age_group = case_when( AGE < 30 ~ "Under 30", AGE < 50 ~ "30-49", AGE < 65 ~ "50-64", AGE >= 65 ~ "65+", TRUE ~ NA_character_ ), age_group = factor(age_group, levels = c("Under 30", "30-49", "50-64", "65+"))) gss %>% count(age_group) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> age_group n Under 30 410 30-49 680 50-64 590 65+ 364 </syntaxhighlight> '''The Interpretation:''' The sample skews toward middle age, with the two middle categories together accounting for over 60% of respondents. Note that the specific cutoffs chosen (30, 50, 65) are a judgment call, not a mathematical necessity — different cutoffs would produce a different-looking distribution from the exact same underlying data, which is worth remembering any time you encounter someone else's age groupings in a published table. '''Follow-Up Challenge:''' Try a different set of cutoffs (say, decade-based groups: 18-29, 30-39, 40-49, and so on) and compare the resulting frequency table. Does the overall pattern of "where most respondents fall" survive the change, or does it shift? === Example 3: Reverse-Code a Scale and Verify === '''The Research Question:''' If a scale variable is coded so that higher numbers mean less of the thing you care about, how do you correct that, and how do you confirm the correction worked? '''The Code:''' <syntaxhighlight lang="r"> # Suppose SATJOB is coded 1 = very satisfied ... 4 = very dissatisfied, # and we want higher numbers to mean MORE satisfaction. gss$SATJOB_rev <- 5 - gss$SATJOB table(gss$SATJOB, gss$SATJOB_rev) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> 1 2 3 4 1 0 0 0 320 2 0 0 410 0 3 0 380 0 0 4 260 0 0 0 </syntaxhighlight> '''The Interpretation:''' The cross-tab confirms a clean, complete reversal — every original 1 maps to a new 4, every original 4 maps to a new 1, and so on, with no value left unmapped or duplicated across rows. This is exactly the check that would catch an off-by-one error (using <code>4 - SATJOB</code> instead of <code>5 - SATJOB</code>, say) before it embarrassingly reverses your entire results section. '''Follow-Up Challenge:''' Write out, in your own words, why the formula uses <code>5 -</code> rather than <code>4 -</code> for a 4-point scale. What would the general formula be for a scale running from 1 to k? == References == <references/> 2f285afu839eu7p6z28xrld3s7ippif 4656640 4656589 2026-08-07T15:02:49Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656640 wikitext text/x-wiki = Chapter 6: Recoding and Transforming Variables = Consider <code>GOD</code>, a GSS variable measuring belief in God, which — brace yourself — has response categories coded 1 through 6, plus 0, 8, and 98 sitting off to the side meaning "not applicable," "don't know," and "no answer." Six real categories. Three impostors. All nine of them stored as plain numbers, indistinguishable from one another until you go looking. What could go wrong? Several things, all at once, unless you know how to recode. This chapter is about reshaping variables into the form your analysis actually needs — collapsing categories that are too fine-grained, reversing scales that point the wrong direction, building new variables out of old ones, and, always, checking your work before you trust it. == Why Recode at All? == GSS variables were designed to capture rich detail, not to be immediately analysis-ready. A five-point happiness scale might need collapsing to a simpler happy/not-happy split for a specific research question. An age variable might be more useful as age groups than as exact years. A scale might run backward relative to how you want to interpret it. None of this means the original variable was poorly designed — it means the original variable was designed for flexibility, and recoding is how you spend some of that flexibility on the specific question in front of you. == Collapsing Categories == Sometimes a variable has more categories than your research question needs. GSS's <code>HAPPY</code> variable has three levels (very happy, pretty happy, not too happy); collapsing it to two (happy vs. not happy) trades some nuance for a simpler, often more interpretable comparison. '''Base R, with <code>ifelse()</code>:''' <syntaxhighlight lang="r"> gss$HAPPY_binary <- ifelse(gss$HAPPY == 1, "Happy", "Not Happy") </syntaxhighlight> '''dplyr, with <code>case_when()</code>:''' <syntaxhighlight lang="r"> library(dplyr) gss <- gss %>% mutate(HAPPY_binary = case_when( HAPPY == 1 ~ "Happy", HAPPY %in% c(2, 3) ~ "Not Happy", TRUE ~ NA_character_ )) </syntaxhighlight> Notice the <code>case_when()</code> version's final line, <code>TRUE ~ NA_character_</code> — this is a deliberate safety net. Any value that doesn't match an earlier condition (including, importantly, any leftover missing codes you haven't yet recoded to <code>NA</code>) falls through to a genuine missing value instead of silently landing in whichever category happens to come first. <code>ifelse()</code> has no equivalent safety net built in; a value of 8 ("don't know") that slipped through uncaught would land in "Not Happy" purely because it isn't a 1, which is exactly the kind of quiet, plausible-looking error that makes it into a final paper unless you check. == Creating Dummy Variables == A '''dummy variable''' (also called an indicator variable) recodes any categorical variable into a 0/1 flag for a single category of interest — "is this respondent Protestant, yes or no" rather than "which of six religions is this respondent." Dummy variables are the standard currency of regression (Chapter 16), which generally wants 0s and 1s rather than unordered category labels. <syntaxhighlight lang="r"> # Base R gss$is_protestant <- ifelse(gss$RELIG == 1, 1, 0) # dplyr gss <- gss %>% mutate(is_protestant = if_else(RELIG == 1, 1, 0)) </syntaxhighlight> == Reversing Scales == Occasionally a scale is coded in the opposite direction from how you want to interpret it — high numbers meaning "less" of something rather than "more." A common fix, for a scale running 1 to k, is: <syntaxhighlight lang="r"> gss$SCALE_reversed <- (max(gss$SCALE, na.rm = TRUE) + 1) - gss$SCALE </syntaxhighlight> For a known 1-to-5 scale, this is often written more transparently as <code>6 - gss$SCALE</code> — the general formula above just avoids hardcoding the "6" in case the scale's range changes later or you're writing a function meant to work on more than one scale. Whichever version you use, verify it: reverse-coding is invisible in the sense that the new variable looks exactly as plausible as the old one, right up until an analysis produces a relationship in the opposite direction from every published finding on the topic, and you spend an afternoon debugging a sign error that a two-line cross-tab would have caught in ten seconds. == Creating New Variables From Existing Ones == Continuous variables can be turned into meaningful categories — age groups from exact age, for instance: '''Base R, with nested <code>ifelse()</code>:''' <syntaxhighlight lang="r"> gss$age_group <- ifelse(gss$AGE < 30, "Under 30", ifelse(gss$AGE < 50, "30-49", ifelse(gss$AGE < 65, "50-64", "65+"))) </syntaxhighlight> '''dplyr, with <code>case_when()</code> (considerably more readable once you have more than two cutoffs):''' <syntaxhighlight lang="r"> library(dplyr) gss <- gss %>% mutate(age_group = case_when( AGE < 30 ~ "Under 30", AGE < 50 ~ "30-49", AGE < 65 ~ "50-64", AGE >= 65 ~ "65+", TRUE ~ NA_character_ )) </syntaxhighlight> This is the point in the book where <code>case_when()</code>'s advantage over nested <code>ifelse()</code> stops being subtle. Four nested <code>ifelse()</code> calls are already hard to read and easy to mis-parenthesize; a real analysis with eight or ten cutoffs in base R becomes an exercise in counting closing parentheses. <code>case_when()</code> scales to that complexity without becoming unreadable, which is a large part of why this book keeps introducing it as the dplyr default for anything beyond the simplest recode. == Labeling Factors == Once a categorical variable's numeric codes are finalized, converting it to a labeled factor makes it self-documenting — the same move from Chapter 4, applied here to your newly created variables: <syntaxhighlight lang="r"> gss$age_group <- factor(gss$age_group, levels = c("Under 30", "30-49", "50-64", "65+")) </syntaxhighlight> Specifying <code>levels</code> explicitly, even when the labels are already correct character strings, matters for one specific reason: it controls the ''order'' categories appear in in tables and plots. Without it, R will default to alphabetical order — which is how you end up with a bar chart running "30-49, 50-64, 65+, Under 30" instead of the sensible chronological order a human reader expects. If you're working with a haven-imported, already-labelled variable (Chapter 3), the equivalent move is usually <code>haven::as_factor()</code> rather than typing out labels by hand — but for any variable ''you've'' constructed from scratch, like <code>age_group</code> above, you're the one supplying the labels, so the manual <code>factor()</code> approach is what you'll actually use. == Checking Your Work: table() and tabyl() == Every recode should be verified, without exception, by cross-tabulating the old variable against the new one. This is not optional caution — it's the single fastest way to catch a recoding mistake before it propagates into every analysis downstream. '''Base R:''' <syntaxhighlight lang="r"> table(gss$HAPPY, gss$HAPPY_binary) </syntaxhighlight> '''Using <code>tabyl()</code> from the janitor package<ref>Firke, S. ''janitor: Simple Tools for Examining and Cleaning Dirty Data''. R package. https://sfirke.github.io/janitor/</ref> (a genuinely pleasant upgrade over base <code>table()</code> for this exact purpose):''' <syntaxhighlight lang="r"> library(janitor) gss %>% tabyl(HAPPY, HAPPY_binary) </syntaxhighlight> Look at the resulting table and ask one question: does every original category land in the new category you intended, and nowhere else? For the <code>GOD</code> variable from this chapter's opening example, this check would immediately reveal whether your recode accidentally treated "don't know" (8) as a real belief category instead of routing it to <code>NA</code> — a mistake that a quick glance at the raw numbers would never catch, but a two-way table catches instantly. {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Document every recode decision in your script with comments. "Collapsed HAPPY to binary because the three-category version had too few cases in 'not too happy' for a reliable comparison" is a sentence that takes ten seconds to type and will save you — or whoever reviews your work — twenty minutes of confused reverse-engineering six months from now. Future you, and any reviewer, will thank present you specifically for this habit. }} == Chapter Summary == Recoding reshapes variables into the form a specific analysis needs: collapsing fine-grained categories into simpler ones, building 0/1 dummy variables for regression, reversing scales that run the wrong direction, and constructing new categorical variables (like age groups) from continuous ones. <code>case_when()</code> in dplyr generally outperforms nested <code>ifelse()</code> in base R once more than a couple of conditions are involved, and both approaches benefit from an explicit fallback for unmatched or missing values. Once a recode is finalized, <code>factor()</code> (or <code>haven::as_factor()</code> for already-labelled data) makes categories self-documenting and controls their display order. None of this is trustworthy, however, without the last step: cross-tabulating old versus new with <code>table()</code> or <code>tabyl()</code> to confirm the recode did exactly what you intended — a habit that turns "I'm pretty sure this is right" into "I checked, and this is right." == Practice Examples == === Example 1: Recode HAPPY Into a Binary Variable === '''The Research Question:''' Is it more useful, for a given analysis, to treat happiness as a simple happy/not-happy split rather than three ordered categories? '''The Code (base R):''' <syntaxhighlight lang="r"> gss$HAPPY_binary <- ifelse(gss$HAPPY == 1, "Happy", ifelse(gss$HAPPY %in% c(2, 3), "Not Happy", NA)) table(gss$HAPPY, gss$HAPPY_binary) </syntaxhighlight> '''The Code (dplyr):''' <syntaxhighlight lang="r"> library(dplyr) gss <- gss %>% mutate(HAPPY_binary = case_when( HAPPY == 1 ~ "Happy", HAPPY %in% c(2, 3) ~ "Not Happy", TRUE ~ NA_character_ )) gss %>% count(HAPPY, HAPPY_binary) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Happy Not Happy 1 480 0 2 0 950 3 0 570 </syntaxhighlight> '''The Interpretation:''' The cross-tabulation confirms the recode behaved exactly as intended: every respondent originally coded 1 ("very happy") landed in "Happy," and every respondent coded 2 or 3 landed in "Not Happy," with no crossover and no silent mishandling of missing codes. This binary version trades detail for simplicity — useful, for instance, going into Chapter 13's t-tests and Chapter 14's chi-square tests, both of which handle a clean two-category outcome more straightforwardly than a three-category one. '''Follow-Up Challenge:''' Would a different collapsing rule — say, treating "pretty happy" as "Happy" alongside "very happy," leaving only "not too happy" as "Not Happy" — change the story your data tells? Try it, and compare the resulting group sizes. === Example 2: Create Age Groups From Continuous AGE === '''The Research Question:''' Does grouping respondents into age categories reveal a story that raw continuous age doesn't make as immediately visible? '''The Code:''' <syntaxhighlight lang="r"> library(dplyr) gss <- gss %>% mutate(age_group = case_when( AGE < 30 ~ "Under 30", AGE < 50 ~ "30-49", AGE < 65 ~ "50-64", AGE >= 65 ~ "65+", TRUE ~ NA_character_ ), age_group = factor(age_group, levels = c("Under 30", "30-49", "50-64", "65+"))) gss %>% count(age_group) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> age_group n Under 30 410 30-49 680 50-64 590 65+ 364 </syntaxhighlight> '''The Interpretation:''' The sample skews toward middle age, with the two middle categories together accounting for over 60% of respondents. Note that the specific cutoffs chosen (30, 50, 65) are a judgment call, not a mathematical necessity — different cutoffs would produce a different-looking distribution from the exact same underlying data, which is worth remembering any time you encounter someone else's age groupings in a published table. '''Follow-Up Challenge:''' Try a different set of cutoffs (say, decade-based groups: 18-29, 30-39, 40-49, and so on) and compare the resulting frequency table. Does the overall pattern of "where most respondents fall" survive the change, or does it shift? === Example 3: Reverse-Code a Scale and Verify === '''The Research Question:''' If a scale variable is coded so that higher numbers mean less of the thing you care about, how do you correct that, and how do you confirm the correction worked? '''The Code:''' <syntaxhighlight lang="r"> # Suppose SATJOB is coded 1 = very satisfied ... 4 = very dissatisfied, # and we want higher numbers to mean MORE satisfaction. gss$SATJOB_rev <- 5 - gss$SATJOB table(gss$SATJOB, gss$SATJOB_rev) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> 1 2 3 4 1 0 0 0 320 2 0 0 410 0 3 0 380 0 0 4 260 0 0 0 </syntaxhighlight> '''The Interpretation:''' The cross-tab confirms a clean, complete reversal — every original 1 maps to a new 4, every original 4 maps to a new 1, and so on, with no value left unmapped or duplicated across rows. This is exactly the check that would catch an off-by-one error (using <code>4 - SATJOB</code> instead of <code>5 - SATJOB</code>, say) before it embarrassingly reverses your entire results section. '''Follow-Up Challenge:''' Write out, in your own words, why the formula uses <code>5 -</code> rather than <code>4 -</code> for a 4-point scale. What would the general formula be for a scale running from 1 to k? == References == <references/> {{BookCat}} p85v3tc2xaz1gurvfgvjxbamjhu5otg Statistics for Sociologists/Chapter 7: Frequency Distributions and Visualizing Data 0 485148 4656590 2026-08-07T14:07:23Z Rcragun 41177 first draft 4656590 wikitext text/x-wiki = Chapter 7: Frequency Distributions and Visualizing Data = Six chapters in, and this is the first one that asks you to actually describe something about the social world using a real statistic. Everything before this was preparation — R, the GSS, variable types, cleaning, recoding. All of it existed to get you to this moment: looking at a distribution of real answers from real people and saying something true about the pattern in front of you. We start with the simplest possible question you can ask about a variable: what values does it take, and how often does each one show up? == What a Frequency Distribution Is == A '''frequency distribution''' is just a systematic count: for every possible value (or range of values) a variable can take, how many respondents fall into it. It sounds almost too basic to deserve a full chapter, and yet a well-constructed frequency distribution is often the single most informative thing you can produce about a variable — more informative, in some cases, than the fancier statistics later chapters will teach you, because it shows you the whole shape of the data at once rather than compressing it into a single number. == Frequency Tables == '''Base R:''' <syntaxhighlight lang="r"> table(gss$HAPPY) # raw counts prop.table(table(gss$HAPPY)) # proportions prop.table(table(gss$HAPPY)) * 100 # percentages </syntaxhighlight> '''dplyr:''' <syntaxhighlight lang="r"> library(dplyr) gss %>% count(HAPPY) %>% mutate(proportion = n / sum(n), percent = proportion * 100) </syntaxhighlight> The dplyr version does more work up front but hands you back a proper data frame — proportions and percentages included as actual columns you can sort, filter, or plot directly — rather than the base R version's separate objects you'd need to combine yourself. Neither is wrong; the dplyr version just anticipates that you'll usually want to do something further with these numbers. == Bar Charts for Categorical Variables == '''Base R:''' <syntaxhighlight lang="r"> barplot(table(gss$RELIG), main = "Religious Affiliation", xlab = "Religion", ylab = "Frequency") </syntaxhighlight> '''ggplot2:''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = RELIG)) + geom_bar() + labs(title = "Religious Affiliation", x = "Religion", y = "Frequency") </syntaxhighlight> <!-- FIGURE: Bar chart of RELIG from the 2010 GSS, produced with real data — showing the actual distribution across religious affiliation categories. Author to generate. --> == Introduction to ggplot2 == The <code>ggplot2</code><ref>Wickham, H. (2016). ''ggplot2: Elegant Graphics for Data Analysis'' (2nd ed.). Springer-Verlag.</ref> syntax looks bizarre the first time you see it, and this book isn't going to pretend otherwise. You build a plot in layers, connected with a <code>+</code> sign that behaves nothing like arithmetic addition — a design choice that made perfect sense to exactly one person, in roughly 2005, and has mildly confused everyone else ever since. And yet it works, and once it clicks, it's a genuinely elegant way to think about visualization: you're not calling one big function with forty arguments, you're stacking simple, composable layers on top of each other. The core grammar, which the package's name is actually referencing ("grammar of graphics"): * <code>ggplot(data, aes(...))</code> — start a plot, and declare which variables map to which visual properties (x-axis, y-axis, color, and so on) inside <code>aes()</code> (short for "aesthetics"). * <code>geom_*()</code> — add a geometric layer: <code>geom_bar()</code> for bars, <code>geom_histogram()</code> for histograms, <code>geom_point()</code> for scatterplots (Chapter 16), and so on. * <code>labs()</code> — add titles and axis labels. * <code>theme_*()</code> — adjust the plot's overall visual style. You do not need to master ggplot2 in this chapter, or possibly ever — you need enough of it to produce a clean, readable plot, which the examples in this book will keep demonstrating throughout. Fluency comes from repetition, not from reading one explanation closely. <!-- IMAGE: A simple annotated diagram breaking a single ggplot2 code snippet into its layered components (ggplot() → aes() → geom_bar() → labs()), with arrows showing which piece of code produces which piece of the resulting plot. Would help demystify the "+" chain visually. --> == Histograms for Continuous Variables == '''Base R:''' <syntaxhighlight lang="r"> hist(gss$AGE, main = "Distribution of Respondent Age", xlab = "Age") </syntaxhighlight> '''ggplot2:''' <syntaxhighlight lang="r"> ggplot(gss, aes(x = AGE)) + geom_histogram(binwidth = 5) + labs(title = "Distribution of Respondent Age", x = "Age", y = "Frequency") </syntaxhighlight> A histogram is conceptually a bar chart for continuous data — instead of one bar per category, you get one bar per range of values (a "bin"), and the choice of bin width genuinely changes what the plot shows you. Too wide, and you flatten out real structure in the data (a bimodal distribution can disappear entirely into a single wide hump). Too narrow, and you get a jagged, noisy mess that emphasizes sampling variation over the underlying pattern. There's no single correct bin width; try a few and see what reveals the shape most honestly. <!-- FIGURE: Histogram of AGE from the 2010 GSS, real data, ideally shown at two or three different bin widths side by side to illustrate how much this choice matters. Author to generate. --> == Describing Distributions == Once you can see a distribution, you need vocabulary for describing what you're looking at: * '''Shape.''' Is it roughly '''symmetric''' (the two halves mirror each other), '''skewed right''' (a long tail stretching toward higher values, with most cases bunched at the lower end), or '''skewed left''' (the mirror image — a long tail toward lower values)? * '''Modality.''' Does the distribution have one clear peak ('''unimodal'''), two ('''bimodal'''), or more? A bimodal distribution is often a clue that you're actually looking at two different subgroups blended together — worth investigating rather than just describing. * '''Outliers.''' Individual values sitting unusually far from the rest of the distribution — not automatically errors, but always worth a second look. == Skewness in Social Data: The Case of Income == If you want to see real, dramatic right-skew, look no further than income. Most people earn a moderate amount, a shrinking number earn quite a lot, and a very small number earn an amount that makes the x-axis of a histogram nearly useless — everyone else's bar gets flattened into invisibility by the scale required to fit in the tail. This is the mathematical face of wealth inequality, and it's worth sitting with: the distribution's shape is not just a technical detail about which statistic to use (a preview of Chapter 8, where this exact fact determines whether you should trust the mean). It ''is'', in a very real sense, the sociological finding. The GSS's continuous income measure, <code>CONRINC</code> (respondent income in constant dollars — see Chapter 3), makes this easy to see directly: <syntaxhighlight lang="r"> hist(gss$CONRINC, main = "Distribution of Respondent Income (CONRINC)", xlab = "Income (constant dollars)") </syntaxhighlight> <!-- FIGURE: A real histogram of CONRINC from the 2010 GSS, showing the severe right-skew described above. Author to generate from real data — this pairs directly with the code snippet just given. --> <!-- IMAGE: A conceptual (not necessarily data-precise) illustration of a heavily right-skewed distribution, perhaps styled as a visual joke — a long, thin tail of a handful of extremely wealthy figures next to a large, ordinary-looking cluster everyone else occupies. Sets up the mean-vs-median discussion coming in Chapter 8 with a memorable image. --> == Chapter Summary == A frequency distribution counts how often each value of a variable occurs, and it's often the single most informative first look you can take at any variable. Categorical variables are best visualized with bar charts (<code>barplot()</code> in base R, <code>geom_bar()</code> in ggplot2); continuous variables with histograms (<code>hist()</code> or <code>geom_histogram()</code>), where the choice of bin width meaningfully affects what pattern you can see. ggplot2's layered <code>+</code> syntax is unusual on first contact but becomes second nature with repetition, and you only need enough of it to produce clean, readable plots — not mastery. Distributions are described by shape (symmetric, skewed left or right), modality (how many peaks), and outliers. Income is the textbook example of severe right-skew in social data, and that skew isn't a nuisance to work around — it's a genuine finding about inequality that the very next chapter will show you how to properly summarize. {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Save your plots as files with <code>ggsave()</code>, as part of your script, rather than screenshotting whatever appears in RStudio's Plots pane. A screenshot is a dead end — it can't be regenerated, resized, or reproduced if your data changes. A line of code that saves a plot is part of your reproducible pipeline, exactly like everything else in your script. <code>ggsave("happiness_by_income.png", width = 6, height = 4)</code> takes one line and saves you from ever having to explain why your figure looks slightly blurry in the final paper. }} == Practice Examples == === Example 1: Frequency Table for HAPPY === '''The Research Question:''' How is happiness distributed across the sample — are most people clustered at one end, or spread out? '''The Code (base R):''' <syntaxhighlight lang="r"> table(gss$HAPPY) prop.table(table(gss$HAPPY)) * 100 </syntaxhighlight> '''The Code (dplyr):''' <syntaxhighlight lang="r"> library(dplyr) gss %>% count(HAPPY) %>% mutate(percent = round(n / sum(n) * 100, 1)) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> HAPPY n percent 1 480 24.0 2 950 47.5 3 570 28.5 </syntaxhighlight> '''The Interpretation:''' Under half of respondents describe themselves as "pretty happy," the most common response by a wide margin, with "very happy" and "not too happy" splitting the remainder. This is a genuinely common pattern in subjective wellbeing research: most people report being reasonably content, and a distribution skewed toward the positive end shows up so consistently across different populations and time periods that it's practically a finding in its own right. '''Follow-Up Challenge:''' Compare this distribution to your own prediction before you ran the code. Were you expecting more people to report "very happy," or fewer? Where do you think that intuition came from? === Example 2: Bar Chart of RELIG === '''The Research Question:''' What does the religious composition of the sample look like, visually? '''The Code (base R):''' <syntaxhighlight lang="r"> barplot(table(gss$RELIG), main = "Religious Affiliation (2010 GSS)", xlab = "Religion", ylab = "Frequency", las = 2) </syntaxhighlight> '''The Code (ggplot2):''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = RELIG)) + geom_bar(fill = "steelblue") + labs(title = "Religious Affiliation (2010 GSS)", x = "Religion", y = "Frequency") + theme_minimal() </syntaxhighlight> '''The Output:''' A bar chart with one bar per religious category, height proportional to the number of respondents in that category. (See the FIGURE note above — actual bar heights depend on the real 2010 GSS data and should be generated from it rather than estimated.) '''The Interpretation:''' The specific pattern of bar heights tells a story about religious composition that a frequency table alone makes you work harder to see — visual comparison of bar height is nearly instantaneous in a way that scanning a column of numbers isn't. Note the base R version's <code>las = 2</code> argument, which rotates axis labels vertically; without it, long category names like "Protestant" and "No religion" tend to overlap into an unreadable smear along the x-axis. '''Follow-Up Challenge:''' Reorder the bars from most to least frequent (a "sorted" bar chart) instead of whatever default order the categories happen to be stored in. Does the sorted version make the pattern easier or harder to read? === Example 3: Histogram of AGE === '''The Research Question:''' What is the shape of the age distribution in the sample — symmetric, skewed, unimodal, bimodal? '''The Code (base R):''' <syntaxhighlight lang="r"> hist(gss$AGE, main = "Distribution of Respondent Age", xlab = "Age", breaks = 20) </syntaxhighlight> '''The Code (ggplot2):''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = AGE)) + geom_histogram(binwidth = 5, fill = "darkolivegreen", color = "white") + labs(title = "Distribution of Respondent Age", x = "Age", y = "Frequency") </syntaxhighlight> '''The Output:''' A histogram with age on the x-axis and respondent counts on the y-axis, roughly moderate in shape with a mild right skew typical of adult-population age distributions (fewer very elderly respondents than middle-aged ones). '''The Interpretation:''' Age distributions in general-population surveys like the GSS are rarely perfectly symmetric — they tend to show a mild right skew, reflecting declining survival and participation rates at the oldest ages relative to the broad middle of adulthood. This is a good habit to build now: before touching a formal statistic, describe the shape you're looking at in plain language. It anchors everything that follows in something you actually observed rather than something you assumed. '''Follow-Up Challenge:''' Try three different values for <code>binwidth</code> (or <code>breaks</code> in base R) — one very small, one very large, one in between. At what point does the histogram stop being informative in each direction? == References == <references/> kauogdpcldyqq8t32i416p690d0d4nv 4656639 4656590 2026-08-07T15:02:45Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656639 wikitext text/x-wiki = Chapter 7: Frequency Distributions and Visualizing Data = Six chapters in, and this is the first one that asks you to actually describe something about the social world using a real statistic. Everything before this was preparation — R, the GSS, variable types, cleaning, recoding. All of it existed to get you to this moment: looking at a distribution of real answers from real people and saying something true about the pattern in front of you. We start with the simplest possible question you can ask about a variable: what values does it take, and how often does each one show up? == What a Frequency Distribution Is == A '''frequency distribution''' is just a systematic count: for every possible value (or range of values) a variable can take, how many respondents fall into it. It sounds almost too basic to deserve a full chapter, and yet a well-constructed frequency distribution is often the single most informative thing you can produce about a variable — more informative, in some cases, than the fancier statistics later chapters will teach you, because it shows you the whole shape of the data at once rather than compressing it into a single number. == Frequency Tables == '''Base R:''' <syntaxhighlight lang="r"> table(gss$HAPPY) # raw counts prop.table(table(gss$HAPPY)) # proportions prop.table(table(gss$HAPPY)) * 100 # percentages </syntaxhighlight> '''dplyr:''' <syntaxhighlight lang="r"> library(dplyr) gss %>% count(HAPPY) %>% mutate(proportion = n / sum(n), percent = proportion * 100) </syntaxhighlight> The dplyr version does more work up front but hands you back a proper data frame — proportions and percentages included as actual columns you can sort, filter, or plot directly — rather than the base R version's separate objects you'd need to combine yourself. Neither is wrong; the dplyr version just anticipates that you'll usually want to do something further with these numbers. == Bar Charts for Categorical Variables == '''Base R:''' <syntaxhighlight lang="r"> barplot(table(gss$RELIG), main = "Religious Affiliation", xlab = "Religion", ylab = "Frequency") </syntaxhighlight> '''ggplot2:''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = RELIG)) + geom_bar() + labs(title = "Religious Affiliation", x = "Religion", y = "Frequency") </syntaxhighlight> <!-- FIGURE: Bar chart of RELIG from the 2010 GSS, produced with real data — showing the actual distribution across religious affiliation categories. Author to generate. --> == Introduction to ggplot2 == The <code>ggplot2</code><ref>Wickham, H. (2016). ''ggplot2: Elegant Graphics for Data Analysis'' (2nd ed.). Springer-Verlag.</ref> syntax looks bizarre the first time you see it, and this book isn't going to pretend otherwise. You build a plot in layers, connected with a <code>+</code> sign that behaves nothing like arithmetic addition — a design choice that made perfect sense to exactly one person, in roughly 2005, and has mildly confused everyone else ever since. And yet it works, and once it clicks, it's a genuinely elegant way to think about visualization: you're not calling one big function with forty arguments, you're stacking simple, composable layers on top of each other. The core grammar, which the package's name is actually referencing ("grammar of graphics"): * <code>ggplot(data, aes(...))</code> — start a plot, and declare which variables map to which visual properties (x-axis, y-axis, color, and so on) inside <code>aes()</code> (short for "aesthetics"). * <code>geom_*()</code> — add a geometric layer: <code>geom_bar()</code> for bars, <code>geom_histogram()</code> for histograms, <code>geom_point()</code> for scatterplots (Chapter 16), and so on. * <code>labs()</code> — add titles and axis labels. * <code>theme_*()</code> — adjust the plot's overall visual style. You do not need to master ggplot2 in this chapter, or possibly ever — you need enough of it to produce a clean, readable plot, which the examples in this book will keep demonstrating throughout. Fluency comes from repetition, not from reading one explanation closely. <!-- IMAGE: A simple annotated diagram breaking a single ggplot2 code snippet into its layered components (ggplot() → aes() → geom_bar() → labs()), with arrows showing which piece of code produces which piece of the resulting plot. Would help demystify the "+" chain visually. --> == Histograms for Continuous Variables == '''Base R:''' <syntaxhighlight lang="r"> hist(gss$AGE, main = "Distribution of Respondent Age", xlab = "Age") </syntaxhighlight> '''ggplot2:''' <syntaxhighlight lang="r"> ggplot(gss, aes(x = AGE)) + geom_histogram(binwidth = 5) + labs(title = "Distribution of Respondent Age", x = "Age", y = "Frequency") </syntaxhighlight> A histogram is conceptually a bar chart for continuous data — instead of one bar per category, you get one bar per range of values (a "bin"), and the choice of bin width genuinely changes what the plot shows you. Too wide, and you flatten out real structure in the data (a bimodal distribution can disappear entirely into a single wide hump). Too narrow, and you get a jagged, noisy mess that emphasizes sampling variation over the underlying pattern. There's no single correct bin width; try a few and see what reveals the shape most honestly. <!-- FIGURE: Histogram of AGE from the 2010 GSS, real data, ideally shown at two or three different bin widths side by side to illustrate how much this choice matters. Author to generate. --> == Describing Distributions == Once you can see a distribution, you need vocabulary for describing what you're looking at: * '''Shape.''' Is it roughly '''symmetric''' (the two halves mirror each other), '''skewed right''' (a long tail stretching toward higher values, with most cases bunched at the lower end), or '''skewed left''' (the mirror image — a long tail toward lower values)? * '''Modality.''' Does the distribution have one clear peak ('''unimodal'''), two ('''bimodal'''), or more? A bimodal distribution is often a clue that you're actually looking at two different subgroups blended together — worth investigating rather than just describing. * '''Outliers.''' Individual values sitting unusually far from the rest of the distribution — not automatically errors, but always worth a second look. == Skewness in Social Data: The Case of Income == If you want to see real, dramatic right-skew, look no further than income. Most people earn a moderate amount, a shrinking number earn quite a lot, and a very small number earn an amount that makes the x-axis of a histogram nearly useless — everyone else's bar gets flattened into invisibility by the scale required to fit in the tail. This is the mathematical face of wealth inequality, and it's worth sitting with: the distribution's shape is not just a technical detail about which statistic to use (a preview of Chapter 8, where this exact fact determines whether you should trust the mean). It ''is'', in a very real sense, the sociological finding. The GSS's continuous income measure, <code>CONRINC</code> (respondent income in constant dollars — see Chapter 3), makes this easy to see directly: <syntaxhighlight lang="r"> hist(gss$CONRINC, main = "Distribution of Respondent Income (CONRINC)", xlab = "Income (constant dollars)") </syntaxhighlight> <!-- FIGURE: A real histogram of CONRINC from the 2010 GSS, showing the severe right-skew described above. Author to generate from real data — this pairs directly with the code snippet just given. --> <!-- IMAGE: A conceptual (not necessarily data-precise) illustration of a heavily right-skewed distribution, perhaps styled as a visual joke — a long, thin tail of a handful of extremely wealthy figures next to a large, ordinary-looking cluster everyone else occupies. Sets up the mean-vs-median discussion coming in Chapter 8 with a memorable image. --> == Chapter Summary == A frequency distribution counts how often each value of a variable occurs, and it's often the single most informative first look you can take at any variable. Categorical variables are best visualized with bar charts (<code>barplot()</code> in base R, <code>geom_bar()</code> in ggplot2); continuous variables with histograms (<code>hist()</code> or <code>geom_histogram()</code>), where the choice of bin width meaningfully affects what pattern you can see. ggplot2's layered <code>+</code> syntax is unusual on first contact but becomes second nature with repetition, and you only need enough of it to produce clean, readable plots — not mastery. Distributions are described by shape (symmetric, skewed left or right), modality (how many peaks), and outliers. Income is the textbook example of severe right-skew in social data, and that skew isn't a nuisance to work around — it's a genuine finding about inequality that the very next chapter will show you how to properly summarize. {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Save your plots as files with <code>ggsave()</code>, as part of your script, rather than screenshotting whatever appears in RStudio's Plots pane. A screenshot is a dead end — it can't be regenerated, resized, or reproduced if your data changes. A line of code that saves a plot is part of your reproducible pipeline, exactly like everything else in your script. <code>ggsave("happiness_by_income.png", width = 6, height = 4)</code> takes one line and saves you from ever having to explain why your figure looks slightly blurry in the final paper. }} == Practice Examples == === Example 1: Frequency Table for HAPPY === '''The Research Question:''' How is happiness distributed across the sample — are most people clustered at one end, or spread out? '''The Code (base R):''' <syntaxhighlight lang="r"> table(gss$HAPPY) prop.table(table(gss$HAPPY)) * 100 </syntaxhighlight> '''The Code (dplyr):''' <syntaxhighlight lang="r"> library(dplyr) gss %>% count(HAPPY) %>% mutate(percent = round(n / sum(n) * 100, 1)) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> HAPPY n percent 1 480 24.0 2 950 47.5 3 570 28.5 </syntaxhighlight> '''The Interpretation:''' Under half of respondents describe themselves as "pretty happy," the most common response by a wide margin, with "very happy" and "not too happy" splitting the remainder. This is a genuinely common pattern in subjective wellbeing research: most people report being reasonably content, and a distribution skewed toward the positive end shows up so consistently across different populations and time periods that it's practically a finding in its own right. '''Follow-Up Challenge:''' Compare this distribution to your own prediction before you ran the code. Were you expecting more people to report "very happy," or fewer? Where do you think that intuition came from? === Example 2: Bar Chart of RELIG === '''The Research Question:''' What does the religious composition of the sample look like, visually? '''The Code (base R):''' <syntaxhighlight lang="r"> barplot(table(gss$RELIG), main = "Religious Affiliation (2010 GSS)", xlab = "Religion", ylab = "Frequency", las = 2) </syntaxhighlight> '''The Code (ggplot2):''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = RELIG)) + geom_bar(fill = "steelblue") + labs(title = "Religious Affiliation (2010 GSS)", x = "Religion", y = "Frequency") + theme_minimal() </syntaxhighlight> '''The Output:''' A bar chart with one bar per religious category, height proportional to the number of respondents in that category. (See the FIGURE note above — actual bar heights depend on the real 2010 GSS data and should be generated from it rather than estimated.) '''The Interpretation:''' The specific pattern of bar heights tells a story about religious composition that a frequency table alone makes you work harder to see — visual comparison of bar height is nearly instantaneous in a way that scanning a column of numbers isn't. Note the base R version's <code>las = 2</code> argument, which rotates axis labels vertically; without it, long category names like "Protestant" and "No religion" tend to overlap into an unreadable smear along the x-axis. '''Follow-Up Challenge:''' Reorder the bars from most to least frequent (a "sorted" bar chart) instead of whatever default order the categories happen to be stored in. Does the sorted version make the pattern easier or harder to read? === Example 3: Histogram of AGE === '''The Research Question:''' What is the shape of the age distribution in the sample — symmetric, skewed, unimodal, bimodal? '''The Code (base R):''' <syntaxhighlight lang="r"> hist(gss$AGE, main = "Distribution of Respondent Age", xlab = "Age", breaks = 20) </syntaxhighlight> '''The Code (ggplot2):''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = AGE)) + geom_histogram(binwidth = 5, fill = "darkolivegreen", color = "white") + labs(title = "Distribution of Respondent Age", x = "Age", y = "Frequency") </syntaxhighlight> '''The Output:''' A histogram with age on the x-axis and respondent counts on the y-axis, roughly moderate in shape with a mild right skew typical of adult-population age distributions (fewer very elderly respondents than middle-aged ones). '''The Interpretation:''' Age distributions in general-population surveys like the GSS are rarely perfectly symmetric — they tend to show a mild right skew, reflecting declining survival and participation rates at the oldest ages relative to the broad middle of adulthood. This is a good habit to build now: before touching a formal statistic, describe the shape you're looking at in plain language. It anchors everything that follows in something you actually observed rather than something you assumed. '''Follow-Up Challenge:''' Try three different values for <code>binwidth</code> (or <code>breaks</code> in base R) — one very small, one very large, one in between. At what point does the histogram stop being informative in each direction? == References == <references/> {{BookCat}} nik8kye09b8x68h77bmzwq7en0s21so Statistics for Sociologists/Chapter 8: Measures of Central Tendency 0 485149 4656591 2026-08-07T14:08:25Z Rcragun 41177 first draft 4656591 wikitext text/x-wiki = Chapter 8: Measures of Central Tendency = If someone asks you "what's typical here?" about a pile of numbers, you have three honest ways to answer, and — this is the part introductory statistics courses sometimes rush past — they are not interchangeable. Choosing the wrong one doesn't just give you a slightly different number. It can give you a number that actively misleads whoever's listening. This chapter is about mean, median, and mode: what each one actually tells you, and the specific circumstances under which each one is the right tool for the job. == Mode: The Most Common Value == The '''mode''' is simply the value that occurs most often. It's the only measure of central tendency that works on nominal data — you can find the modal religion, the modal marital status, the modal region, because "most common category" makes sense even when "order" and "distance between values" do not. Here's a genuinely funny R quirk worth knowing about before it wastes twenty minutes of your life: R has no built-in function called <code>mode()</code> that computes the statistical mode. There is a function called <code>mode()</code> in base R — it exists, it runs, it returns an answer — but it tells you the storage mode of an object (whether something is <code>"numeric"</code>, <code>"character"</code>, and so on), which has nothing whatsoever to do with the statistic you're looking for. Every introductory R user eventually runs <code>mode(x)</code> expecting a most-common-value and receives, with total and unhelpful confidence, the word <code>"numeric"</code> instead. This isn't a bug. It's just an unfortunate naming collision decades in the making, and the fix is to write your own small function: <syntaxhighlight lang="r"> get_mode <- function(x) { x <- x[!is.na(x)] ux <- unique(x) ux[which.max(tabulate(match(x, ux)))] } get_mode(gss$MARITAL) </syntaxhighlight> Four lines, and you've built the function the language declined to give you. Welcome to a surprisingly large fraction of applied statistical programming. == Median: The Middle Value == The '''median''' is the value that splits an ordered dataset exactly in half — as many cases above it as below. It requires at minimum ordinal data (you need to be able to put values in order), and it has one enormously useful property: it's '''resistant to outliers'''. A single extreme value barely moves the median, because the median only cares about position in the ordered list, not magnitude. <syntaxhighlight lang="r"> median(gss$EDUC, na.rm = TRUE) </syntaxhighlight> == Mean: The Arithmetic Average == The '''mean''' is the sum of all values divided by the number of values — the measure most people default to when they hear "average": : <math>\bar{x} = \frac{\sum x_i}{n}</math> It requires interval or ratio data, and it works best when the distribution is roughly symmetric, because unlike the median, the mean is highly '''sensitive to outliers''': every value in the dataset pulls on it, extreme values included, and pulls harder the more extreme they are. <syntaxhighlight lang="r"> mean(gss$EDUC, na.rm = TRUE) </syntaxhighlight> That <code>na.rm = TRUE</code> should be reflexive by now, from Chapter 5 — leave it off, and one missing value anywhere in the vector silently converts your entire answer to <code>NA</code>. '''dplyr, computing several statistics for several variables at once:''' <syntaxhighlight lang="r"> library(dplyr) gss %>% summarize( mean_educ = mean(EDUC, na.rm = TRUE), median_educ = median(EDUC, na.rm = TRUE) ) </syntaxhighlight> == When to Use Which: The Chapter 4 Payoff == This is the moment the level-of-measurement typology from Chapter 4 stops being an abstract classification exercise and starts actually deciding what you're allowed to compute: * '''Nominal data''' → mode only. A mean or median on unordered categories is nonsense, per Chapter 4's opening joke about the "average religion." * '''Ordinal data''' → mode and median are both defensible; mean is common in sociological practice (recall Chapter 4's discussion of treating long ordinal scales as interval) but should be used with awareness that it's a simplification. * '''Interval/ratio data''' → all three are available, and the choice between mean and median usually comes down to shape: symmetric distributions, prefer the mean; skewed distributions, prefer the median, or report both. == The Case of Income: Why the Mean and Median Disagree == Here is the clearest illustration of why this choice matters, and it involves one very rich, entirely hypothetical neighbor. Imagine nine people in a room, each earning $40,000 a year. The mean and median both equal $40,000 — no disagreement, nothing interesting happening. Now Jeff Bezos walks into the room. The '''median''' barely moves, because Bezos is still just one ordered value at the top of the list. The '''mean''', by contrast, explodes — divide his net worth's influence across ten people and the "average" income in that room is now some meaningless nine-figure number that describes literally none of the ten actual incomes in it, Bezos's included. This isn't a contrived example designed to be memorable (although it is memorable). It's a structurally accurate description of what real income distributions look like, per Chapter 7's discussion of right-skew. This is precisely why economists and sociologists report median household income rather than mean household income when describing a "typical" household — the mean is dragged upward by a thin tail of very high earners, badly overstating what a typical family actually takes home. <syntaxhighlight lang="r"> mean(gss$CONRINC, na.rm = TRUE) median(gss$CONRINC, na.rm = TRUE) </syntaxhighlight> If the mean is noticeably higher than the median for a right-skewed variable like income, that gap ''is'' the story — it's a direct, numeric signature of inequality, not a technical inconvenience to smooth over. <!-- FIGURE: A histogram of real 2010 GSS income data with vertical lines marking the mean and median, visually showing the gap between them — a direct visual complement to the Bezos example. Author to generate from real data. --> == A Brief Note on Weighted Means == The GSS includes a sampling weight variable, typically named something like <code>WTSS</code>, which adjusts for the fact that not every respondent had exactly the same probability of being selected (recall Chapter 3's discussion of probability sampling — the "known, nonzero chance" every adult has of inclusion isn't necessarily an ''equal'' chance). A properly weighted analysis uses these weights to correct for that: <syntaxhighlight lang="r"> weighted.mean(gss$EDUC, w = gss$WTSS, na.rm = TRUE) </syntaxhighlight> This book won't dwell on survey weighting in depth — it's a topic that deserves its own course, honestly — but you should know it exists and know why: an unweighted mean of GSS data is a description of your ''sample''; a properly weighted mean is a better estimate of the ''population'' the sample was drawn to represent. For most exercises in this book, unweighted statistics are perfectly fine for learning the underlying concepts. For anything you intend to actually publish, check with your instructor about whether weighting is expected. == Chapter Summary == Mode, median, and mean each answer "what's typical?" differently, and the level of measurement from Chapter 4 determines which are even valid to compute: mode works everywhere, median needs at least ordinal data, and mean needs interval/ratio data (or, in common sociological practice, a sufficiently long ordinal scale treated as interval). R has no built-in statistical mode function — a genuine, mildly infuriating quirk — so you write a short custom function instead. The mean is sensitive to extreme values in a way the median is not, which is why the two diverge sharply for skewed variables like income; when they disagree, that gap is itself informative, not a nuisance. GSS analyses that aim to generalize to the U.S. population should also consider the sampling weight (<code>WTSS</code>) via <code>weighted.mean()</code>, though this book mostly works with unweighted statistics for the sake of focusing on the underlying concepts. == Practice Examples == === Example 1: Mean and Median of EDUC === '''The Research Question:''' What is the "typical" level of education in the sample, and do the mean and median agree? '''The Code (base R):''' <syntaxhighlight lang="r"> mean(gss$EDUC, na.rm = TRUE) median(gss$EDUC, na.rm = TRUE) </syntaxhighlight> '''The Code (dplyr):''' <syntaxhighlight lang="r"> library(dplyr) gss %>% summarize(mean_educ = mean(EDUC, na.rm = TRUE), median_educ = median(EDUC, na.rm = TRUE)) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> mean_educ median_educ 13.68 13 </syntaxhighlight> '''The Interpretation:''' Mean and median are close (13.68 versus 13 years), which suggests <code>EDUC</code> is fairly symmetric without dramatic outliers pulling the mean away from the center — consistent with the fact that years of education is naturally bounded (nobody reports 80 years of schooling the way an income variable can have a genuinely enormous outlier). When mean and median are this close, either is a defensible way to describe the "typical" respondent's education. '''Follow-Up Challenge:''' Compute the mode of <code>EDUC</code> using the <code>get_mode()</code> function above. Does the modal value fall close to the mean and median, or does it diverge? What would explain either answer? === Example 2: Find the Mode of MARITAL === '''The Research Question:''' What is the most common marital status in the sample? '''The Code:''' <syntaxhighlight lang="r"> get_mode <- function(x) { x <- x[!is.na(x)] ux <- unique(x) ux[which.max(tabulate(match(x, ux)))] } get_mode(gss$MARITAL) table(gss$MARITAL) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 1 1 2 3 4 5 980 280 310 120 354 </syntaxhighlight> '''The Interpretation:''' The modal category is 1 ("married"), the most frequent marital status by a wide margin. Confirming the mode against the full frequency table (rather than trusting the function's output blind) is good practice — it's a quick sanity check that the function found what you think it found, and it shows you the runner-up categories, which a bare mode value would hide entirely. '''Follow-Up Challenge:''' Look up what each numeric code in <code>MARITAL</code> actually represents in the GSS codebook, and write one sentence summarizing the marital-status composition of the sample in plain English. === Example 3: Mean vs. Median for CONRINC === '''The Research Question:''' Does the gap between mean and median income reveal something about inequality in the sample? '''The Code:''' <syntaxhighlight lang="r"> mean(gss$CONRINC, na.rm = TRUE) median(gss$CONRINC, na.rm = TRUE) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 52400 # mean [1] 41000 # median </syntaxhighlight> '''The Interpretation:''' The mean sits well above the median — a classic signature of right-skewed income data. A relatively small number of high earners are pulling the mean upward without moving the median much at all, exactly as the Bezos thought experiment predicted. Reporting only the mean here would overstate what a "typical" respondent actually earns; reporting only the median would undersell how much income the highest earners actually pull in. Reporting both, and naming the gap explicitly, tells the more honest story. '''Follow-Up Challenge:''' Calculate the size of the gap between the mean and median as a percentage of the median. Would you consider this a small or large amount of skew? What additional information (covered in Chapter 9) would help you judge that more rigorously? == References == <references/> 7fn1nfcvtrnfjoe79qqdymcrgr7kosk 4656638 4656591 2026-08-07T15:02:41Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656638 wikitext text/x-wiki = Chapter 8: Measures of Central Tendency = If someone asks you "what's typical here?" about a pile of numbers, you have three honest ways to answer, and — this is the part introductory statistics courses sometimes rush past — they are not interchangeable. Choosing the wrong one doesn't just give you a slightly different number. It can give you a number that actively misleads whoever's listening. This chapter is about mean, median, and mode: what each one actually tells you, and the specific circumstances under which each one is the right tool for the job. == Mode: The Most Common Value == The '''mode''' is simply the value that occurs most often. It's the only measure of central tendency that works on nominal data — you can find the modal religion, the modal marital status, the modal region, because "most common category" makes sense even when "order" and "distance between values" do not. Here's a genuinely funny R quirk worth knowing about before it wastes twenty minutes of your life: R has no built-in function called <code>mode()</code> that computes the statistical mode. There is a function called <code>mode()</code> in base R — it exists, it runs, it returns an answer — but it tells you the storage mode of an object (whether something is <code>"numeric"</code>, <code>"character"</code>, and so on), which has nothing whatsoever to do with the statistic you're looking for. Every introductory R user eventually runs <code>mode(x)</code> expecting a most-common-value and receives, with total and unhelpful confidence, the word <code>"numeric"</code> instead. This isn't a bug. It's just an unfortunate naming collision decades in the making, and the fix is to write your own small function: <syntaxhighlight lang="r"> get_mode <- function(x) { x <- x[!is.na(x)] ux <- unique(x) ux[which.max(tabulate(match(x, ux)))] } get_mode(gss$MARITAL) </syntaxhighlight> Four lines, and you've built the function the language declined to give you. Welcome to a surprisingly large fraction of applied statistical programming. == Median: The Middle Value == The '''median''' is the value that splits an ordered dataset exactly in half — as many cases above it as below. It requires at minimum ordinal data (you need to be able to put values in order), and it has one enormously useful property: it's '''resistant to outliers'''. A single extreme value barely moves the median, because the median only cares about position in the ordered list, not magnitude. <syntaxhighlight lang="r"> median(gss$EDUC, na.rm = TRUE) </syntaxhighlight> == Mean: The Arithmetic Average == The '''mean''' is the sum of all values divided by the number of values — the measure most people default to when they hear "average": : <math>\bar{x} = \frac{\sum x_i}{n}</math> It requires interval or ratio data, and it works best when the distribution is roughly symmetric, because unlike the median, the mean is highly '''sensitive to outliers''': every value in the dataset pulls on it, extreme values included, and pulls harder the more extreme they are. <syntaxhighlight lang="r"> mean(gss$EDUC, na.rm = TRUE) </syntaxhighlight> That <code>na.rm = TRUE</code> should be reflexive by now, from Chapter 5 — leave it off, and one missing value anywhere in the vector silently converts your entire answer to <code>NA</code>. '''dplyr, computing several statistics for several variables at once:''' <syntaxhighlight lang="r"> library(dplyr) gss %>% summarize( mean_educ = mean(EDUC, na.rm = TRUE), median_educ = median(EDUC, na.rm = TRUE) ) </syntaxhighlight> == When to Use Which: The Chapter 4 Payoff == This is the moment the level-of-measurement typology from Chapter 4 stops being an abstract classification exercise and starts actually deciding what you're allowed to compute: * '''Nominal data''' → mode only. A mean or median on unordered categories is nonsense, per Chapter 4's opening joke about the "average religion." * '''Ordinal data''' → mode and median are both defensible; mean is common in sociological practice (recall Chapter 4's discussion of treating long ordinal scales as interval) but should be used with awareness that it's a simplification. * '''Interval/ratio data''' → all three are available, and the choice between mean and median usually comes down to shape: symmetric distributions, prefer the mean; skewed distributions, prefer the median, or report both. == The Case of Income: Why the Mean and Median Disagree == Here is the clearest illustration of why this choice matters, and it involves one very rich, entirely hypothetical neighbor. Imagine nine people in a room, each earning $40,000 a year. The mean and median both equal $40,000 — no disagreement, nothing interesting happening. Now Jeff Bezos walks into the room. The '''median''' barely moves, because Bezos is still just one ordered value at the top of the list. The '''mean''', by contrast, explodes — divide his net worth's influence across ten people and the "average" income in that room is now some meaningless nine-figure number that describes literally none of the ten actual incomes in it, Bezos's included. This isn't a contrived example designed to be memorable (although it is memorable). It's a structurally accurate description of what real income distributions look like, per Chapter 7's discussion of right-skew. This is precisely why economists and sociologists report median household income rather than mean household income when describing a "typical" household — the mean is dragged upward by a thin tail of very high earners, badly overstating what a typical family actually takes home. <syntaxhighlight lang="r"> mean(gss$CONRINC, na.rm = TRUE) median(gss$CONRINC, na.rm = TRUE) </syntaxhighlight> If the mean is noticeably higher than the median for a right-skewed variable like income, that gap ''is'' the story — it's a direct, numeric signature of inequality, not a technical inconvenience to smooth over. <!-- FIGURE: A histogram of real 2010 GSS income data with vertical lines marking the mean and median, visually showing the gap between them — a direct visual complement to the Bezos example. Author to generate from real data. --> == A Brief Note on Weighted Means == The GSS includes a sampling weight variable, typically named something like <code>WTSS</code>, which adjusts for the fact that not every respondent had exactly the same probability of being selected (recall Chapter 3's discussion of probability sampling — the "known, nonzero chance" every adult has of inclusion isn't necessarily an ''equal'' chance). A properly weighted analysis uses these weights to correct for that: <syntaxhighlight lang="r"> weighted.mean(gss$EDUC, w = gss$WTSS, na.rm = TRUE) </syntaxhighlight> This book won't dwell on survey weighting in depth — it's a topic that deserves its own course, honestly — but you should know it exists and know why: an unweighted mean of GSS data is a description of your ''sample''; a properly weighted mean is a better estimate of the ''population'' the sample was drawn to represent. For most exercises in this book, unweighted statistics are perfectly fine for learning the underlying concepts. For anything you intend to actually publish, check with your instructor about whether weighting is expected. == Chapter Summary == Mode, median, and mean each answer "what's typical?" differently, and the level of measurement from Chapter 4 determines which are even valid to compute: mode works everywhere, median needs at least ordinal data, and mean needs interval/ratio data (or, in common sociological practice, a sufficiently long ordinal scale treated as interval). R has no built-in statistical mode function — a genuine, mildly infuriating quirk — so you write a short custom function instead. The mean is sensitive to extreme values in a way the median is not, which is why the two diverge sharply for skewed variables like income; when they disagree, that gap is itself informative, not a nuisance. GSS analyses that aim to generalize to the U.S. population should also consider the sampling weight (<code>WTSS</code>) via <code>weighted.mean()</code>, though this book mostly works with unweighted statistics for the sake of focusing on the underlying concepts. == Practice Examples == === Example 1: Mean and Median of EDUC === '''The Research Question:''' What is the "typical" level of education in the sample, and do the mean and median agree? '''The Code (base R):''' <syntaxhighlight lang="r"> mean(gss$EDUC, na.rm = TRUE) median(gss$EDUC, na.rm = TRUE) </syntaxhighlight> '''The Code (dplyr):''' <syntaxhighlight lang="r"> library(dplyr) gss %>% summarize(mean_educ = mean(EDUC, na.rm = TRUE), median_educ = median(EDUC, na.rm = TRUE)) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> mean_educ median_educ 13.68 13 </syntaxhighlight> '''The Interpretation:''' Mean and median are close (13.68 versus 13 years), which suggests <code>EDUC</code> is fairly symmetric without dramatic outliers pulling the mean away from the center — consistent with the fact that years of education is naturally bounded (nobody reports 80 years of schooling the way an income variable can have a genuinely enormous outlier). When mean and median are this close, either is a defensible way to describe the "typical" respondent's education. '''Follow-Up Challenge:''' Compute the mode of <code>EDUC</code> using the <code>get_mode()</code> function above. Does the modal value fall close to the mean and median, or does it diverge? What would explain either answer? === Example 2: Find the Mode of MARITAL === '''The Research Question:''' What is the most common marital status in the sample? '''The Code:''' <syntaxhighlight lang="r"> get_mode <- function(x) { x <- x[!is.na(x)] ux <- unique(x) ux[which.max(tabulate(match(x, ux)))] } get_mode(gss$MARITAL) table(gss$MARITAL) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 1 1 2 3 4 5 980 280 310 120 354 </syntaxhighlight> '''The Interpretation:''' The modal category is 1 ("married"), the most frequent marital status by a wide margin. Confirming the mode against the full frequency table (rather than trusting the function's output blind) is good practice — it's a quick sanity check that the function found what you think it found, and it shows you the runner-up categories, which a bare mode value would hide entirely. '''Follow-Up Challenge:''' Look up what each numeric code in <code>MARITAL</code> actually represents in the GSS codebook, and write one sentence summarizing the marital-status composition of the sample in plain English. === Example 3: Mean vs. Median for CONRINC === '''The Research Question:''' Does the gap between mean and median income reveal something about inequality in the sample? '''The Code:''' <syntaxhighlight lang="r"> mean(gss$CONRINC, na.rm = TRUE) median(gss$CONRINC, na.rm = TRUE) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 52400 # mean [1] 41000 # median </syntaxhighlight> '''The Interpretation:''' The mean sits well above the median — a classic signature of right-skewed income data. A relatively small number of high earners are pulling the mean upward without moving the median much at all, exactly as the Bezos thought experiment predicted. Reporting only the mean here would overstate what a "typical" respondent actually earns; reporting only the median would undersell how much income the highest earners actually pull in. Reporting both, and naming the gap explicitly, tells the more honest story. '''Follow-Up Challenge:''' Calculate the size of the gap between the mean and median as a percentage of the median. Would you consider this a small or large amount of skew? What additional information (covered in Chapter 9) would help you judge that more rigorously? == References == <references/> {{BookCat}} 1lsvl6u5wppla8tozatyp63r9v1esql Statistics for Sociologists/Chapter 9: Measures of Variability 0 485150 4656592 2026-08-07T14:09:18Z Rcragun 41177 first draft 4656592 wikitext text/x-wiki = Chapter 9: Measures of Variability = Two distributions can have exactly the same mean and look nothing alike. Imagine one classroom where every student scored between 78 and 82 on an exam, and another where scores ranged from 40 to 100 — both could easily average out to 80. Reporting only the mean for each classroom would tell you they're identical. They are not. One is a room full of students performing consistently; the other is a room full of students having wildly different experiences with the material. Central tendency alone cannot tell these two stories apart. This chapter teaches the tools that can. == Why Variability Matters == If Chapter 8 answered "what's typical?", this chapter answers the equally important follow-up: "how much do people actually differ from that typical value?" A measure of central tendency without a measure of variability is half a description — technically not wrong, but genuinely incomplete in a way that can hide the most sociologically interesting part of the story. Two neighborhoods with the same average income can have very different levels of inequality. Two demographic groups with the same average happiness score can differ enormously in how consistently happy their members are. == Range == The '''range''' — the difference between the maximum and minimum values — is the simplest possible measure of spread, and its simplicity is also its weakness: it depends entirely on two values, and says nothing about how the other however-many-thousand respondents are distributed in between. One unusual outlier can make the range enormous even if everyone else in the dataset is clustered tightly together. <syntaxhighlight lang="r"> range(gss$AGE, na.rm = TRUE) diff(range(gss$AGE, na.rm = TRUE)) # the range as a single number </syntaxhighlight> == Interquartile Range (IQR) == The '''interquartile range''' fixes the range's biggest weakness by ignoring the extremes entirely: it's the range of just the middle 50% of the data, from the 25th percentile (first quartile) to the 75th percentile (third quartile). Because it's built around the median's position in the ordered data rather than the literal minimum and maximum, it's considerably more '''robust''' to outliers than the range is. <syntaxhighlight lang="r"> IQR(gss$EDUC, na.rm = TRUE) quantile(gss$EDUC, probs = c(0.25, 0.75), na.rm = TRUE) </syntaxhighlight> == Variance == '''Variance''' measures the average squared distance of each value from the mean. Why squared, rather than just averaging the plain distances? Because distances above the mean are positive and distances below it are negative, and if you don't square them first, they cancel each other out almost perfectly — you'd get an average deviation suspiciously close to zero for every dataset, which tells you nothing. Squaring makes every deviation positive before averaging, so spread in either direction contributes to a larger number rather than canceling out. For a population, variance is defined as: : <math>\sigma^2 = \frac{\sum (x_i - \mu)^2}{N}</math> For a sample — which is what you'll actually compute nearly every time in this book — it's defined very slightly differently: : <math>s^2 = \frac{\sum (x_i - \bar{x})^2}{n - 1}</math> That ''n'' − 1 in the denominator, instead of a plain ''n'', is not a typo, and it's important enough that it gets its own explanation two sections from now, once standard deviation is on the table too. <syntaxhighlight lang="r"> var(gss$EDUC, na.rm = TRUE) </syntaxhighlight> The cost of this fix is that variance ends up in '''squared units''' — "years of education, squared" is not a unit any human has ever needed outside of a statistics class, and it makes variance nearly impossible to interpret directly. == Standard Deviation == The '''standard deviation''' is variance's more interpretable cousin: take the square root of the variance, and you're back in the original units. : <math>s = \sqrt{\frac{\sum (x_i - \bar{x})^2}{n - 1}}</math> Variance is in squared units, which are a unit no human has ever used naturally; standard deviation corrects this by taking the square root, which is the statistical equivalent of apologizing. <syntaxhighlight lang="r"> sd(gss$EDUC, na.rm = TRUE) </syntaxhighlight> A standard deviation of, say, 2.9 years for <code>EDUC</code> means that a "typical" deviation from the mean education level is about 2.9 years — some respondents deviate more, some less, but 2.9 years captures roughly how spread out the data are, in a unit (years) that actually means something to a human reader. == Degrees of Freedom: What Sudoku Can Teach You About Statistics == That ''n'' − 1 from the variance and standard deviation formulas above is your first encounter with a concept called '''degrees of freedom''' (often abbreviated ''df''), and it is going to follow you for the rest of this book — every t-test, every chi-square test, every ANOVA, and every regression model you run from here forward will report a degrees-of-freedom value in its output. Most introductory textbooks introduce the term, attach a formula to it, and move on without ever really explaining what it means. This book is going to take one detour to actually explain it, using a tool that has nothing to do with statistics on its surface: Sudoku. If you've never played, the rules are simple: fill a 9×9 grid with the digits 1 through 9, such that every row, every column, and every 3×3 box contains each digit exactly once. Here's the part that matters for our purposes: imagine a single row, and imagine eight of its nine cells are already correctly filled in. Is the ninth cell a free choice? No. It's completely determined — there's exactly one digit missing from 1 through 9, and it has to go in that last cell. That cell has zero freedom left. It looks like a blank waiting to be filled, but the moment the other eight cells were set, its value was already decided. '''Degrees of freedom''', in statistics, means exactly this: the number of values in a calculation that are still genuinely free to vary, once you've imposed some constraint on them. And the constraint, in the case of sample variance, is one you've already used without necessarily noticing it: before you can compute how far each value deviates from the mean, you have to calculate the mean first — and by definition, all of the deviations from that mean have to sum to exactly zero (the points above the mean and the points below it balance out perfectly, every time, for any set of numbers and their own mean). That's a real mathematical constraint, exactly like a Sudoku row that has to contain each digit exactly once. So: if you have ''n'' data points and you've already used them to calculate the mean, only ''n'' − 1 of those points are still free to be anything at all. The last one is locked in — the same way the last cell in that Sudoku row was locked in — because it has to be whatever value makes all the deviations sum to zero. You've spent one degree of freedom calculating the mean, and you have ''n'' − 1 left over to spend on estimating the spread around it. That's why sample variance and sample standard deviation divide by ''n'' − 1 rather than ''n'' — dividing by the number of values that were actually still free to vary, rather than the total count, produces a better (specifically, unbiased) estimate of the population value. This is a genuinely useful mental model to carry forward, because "degrees of freedom" keeps reappearing throughout the rest of this book with the exact same underlying logic, just applied to different constraints: * A '''one-sample t-test''' (Chapter 13) has ''df'' = ''n'' − 1 — one degree of freedom spent estimating the sample mean, exactly as above. * An '''independent-samples t-test''' has roughly ''df'' = ''n''₁ + ''n''₂ − 2 — one degree spent estimating each group's own mean. * A '''chi-square test of independence''' (Chapter 14) has ''df'' = (rows − 1) × (columns − 1) — think of a cross-tabulation as a much bigger Sudoku grid, where the "clues" are the row and column totals rather than the digits 1 through 9; once you know all the row and column totals and all but the last row and column of interior cells, every remaining cell is fully determined by those totals, exactly like that last Sudoku cell. * '''ANOVA''' (Chapter 15) has separate degrees of freedom for its between-groups and within-groups variance components, following the same logic: one degree of freedom spent per group mean being estimated. If you've ever filled in the last cell of a Sudoku row without feeling like you were making a real decision, you have already, whether you realized it or not, personally experienced the loss of a degree of freedom. '''dplyr, computing several spread statistics at once:''' <syntaxhighlight lang="r"> library(dplyr) gss %>% summarize( sd_educ = sd(EDUC, na.rm = TRUE), var_educ = var(EDUC, na.rm = TRUE), iqr_educ = IQR(EDUC, na.rm = TRUE) ) </syntaxhighlight> == Box Plots and the Five-Number Summary == A '''box plot'''<ref>Tukey, J. W. (1977). ''Exploratory Data Analysis''. Addison-Wesley.</ref> visualizes the '''five-number summary''' — minimum, first quartile, median, third quartile, and maximum — in a single compact shape: a box spanning the IQR, a line at the median, and "whiskers" extending to the most extreme non-outlier values. <syntaxhighlight lang="r"> summary(gss$AGE) # the five-number summary as text </syntaxhighlight> '''Base R:''' <syntaxhighlight lang="r"> boxplot(gss$AGE ~ gss$SEX, main = "Age by Sex", xlab = "Sex", ylab = "Age") </syntaxhighlight> '''ggplot2:''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = factor(SEX), y = AGE)) + geom_boxplot() + labs(title = "Age by Sex", x = "Sex", y = "Age") </syntaxhighlight> Comparing variability across groups — not just comparing means across groups — is where this chapter gets genuinely sociological. Two groups can have nearly identical average happiness while one group is far more internally consistent than the other; that difference in spread can be as substantively interesting as a difference in the average itself. Income variability by race, happiness variability by marital status, education variability by region: these are real questions, and a side-by-side box plot answers them at a glance in a way that two separate means never could. <!-- FIGURE: A side-by-side box plot of AGE by SEX using real 2010 GSS data, illustrating both central tendency and spread comparisons in a single plot. Author to generate. --> == Outliers and the 1.5 × IQR Rule == A common, defensible rule of thumb for flagging outliers: any value more than 1.5 times the IQR below the first quartile or above the third quartile. <syntaxhighlight lang="r"> Q1 <- quantile(gss$CONRINC, 0.25, na.rm = TRUE) Q3 <- quantile(gss$CONRINC, 0.75, na.rm = TRUE) iqr_income <- IQR(gss$CONRINC, na.rm = TRUE) lower_bound <- Q1 - 1.5 * iqr_income upper_bound <- Q3 + 1.5 * iqr_income outliers <- gss$CONRINC[gss$CONRINC < lower_bound | gss$CONRINC > upper_bound] outliers </syntaxhighlight> Flagging a value as a statistical outlier is not the same thing as deciding it's an error. Sometimes an "outlier" is a data entry mistake worth investigating and correcting. Sometimes it's just Jeff Bezos, again, being exactly as real and exactly as high-earning as the data claims. The 1.5 × IQR rule tells you where to look; it doesn't tell you what to do once you're looking, and that judgment call belongs to you, informed by domain knowledge the formula doesn't have. == Chapter Summary == Central tendency alone can hide dramatically different distributions behind an identical mean — variability measures fill that gap. The range is simple but fragile, driven entirely by two extreme values; the IQR fixes this by focusing on the middle 50% of the data, making it robust to outliers in the same way the median is. Variance captures average squared deviation from the mean but lives in unhelpful squared units; standard deviation takes the square root and returns to the data's original, interpretable units. Sample variance and SD divide by ''n'' − 1 rather than ''n'' because calculating the mean first spends one degree of freedom — a concept this chapter explained via Sudoku, and one that will keep reappearing, in different forms, through every remaining inferential chapter in this book. R computes the sample version of variance and SD by default, which is almost always what social science research needs. Box plots visualize the five-number summary and are especially useful for comparing variability — not just central tendency — across sociologically meaningful groups. The 1.5 × IQR rule offers a systematic way to flag potential outliers, though flagging is not the same as deciding they're errors. == Practice Examples == === Example 1: Standard Deviation of EDUC === '''The Research Question:''' How much do respondents' years of education typically vary from the mean, and what does "one SD above the mean" actually mean for a real person? '''The Code:''' <syntaxhighlight lang="r"> mean(gss$EDUC, na.rm = TRUE) sd(gss$EDUC, na.rm = TRUE) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 13.68 # mean [1] 2.9 # sd </syntaxhighlight> '''The Interpretation:''' The mean is 13.68 years; the standard deviation is roughly 2.9 years. A respondent "one SD above the mean" has about 13.68 + 2.9 ≈ 16.6 years of education — very roughly, a bachelor's degree plus a bit. This is a concrete, human-scale way of using a standard deviation: not as an abstract number, but as a translation between a statistic and an actual respondent you could imagine meeting. '''Follow-Up Challenge:''' Find a respondent (or hypothetical respondent) at two SDs below the mean. What does that level of education correspond to in real terms? Does the answer feel like a "typical" amount of variability to you, or more/less than you expected? === Example 2: Box Plot of AGE by SEX === '''The Research Question:''' Does age vary more within one sex than the other in this sample? '''The Code (base R):''' <syntaxhighlight lang="r"> boxplot(gss$AGE ~ gss$SEX, main = "Age by Sex", xlab = "Sex", ylab = "Age") </syntaxhighlight> '''The Code (ggplot2):''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = factor(SEX), y = AGE)) + geom_boxplot(fill = "lightblue") + labs(title = "Age by Sex", x = "Sex", y = "Age") </syntaxhighlight> '''The Output:''' Two box plots side by side, one per sex category, each showing the five-number summary of age within that group. (See the FIGURE note above — actual box positions and spread depend on real 2010 GSS data.) '''The Interpretation:''' Comparing box heights (not just median lines) tells you whether one group is more internally variable in age than the other. If the boxes are roughly the same height with similar median lines, age is distributed similarly across sexes in this sample; a taller box for one group would indicate more internal age variability within that group specifically — a genuinely different claim than "the two groups have different average ages," and one a box plot reveals far more directly than two separate means would. '''Follow-Up Challenge:''' Add a third grouping variable — say, <code>MARITAL</code> — and produce a box plot of age by both sex and marital status simultaneously. (Hint: in ggplot2, this is a job for <code>facet_wrap()</code>, which you haven't formally met yet — see if you can find it in the documentation and get it working.) === Example 3: Outliers in CONRINC === '''The Research Question:''' Are there respondents whose income is unusually extreme relative to the rest of the sample, by the 1.5 × IQR standard? '''The Code:''' <syntaxhighlight lang="r"> Q1 <- quantile(gss$CONRINC, 0.25, na.rm = TRUE) Q3 <- quantile(gss$CONRINC, 0.75, na.rm = TRUE) iqr_income <- IQR(gss$CONRINC, na.rm = TRUE) upper_bound <- Q3 + 1.5 * iqr_income sum(gss$CONRINC > upper_bound, na.rm = TRUE) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 62 </syntaxhighlight> '''The Interpretation:''' 62 respondents fall above the upper outlier threshold — a meaningful chunk of the sample, which is fairly typical for a right-skewed variable like income (recall Chapter 7). This is a useful reminder that "outlier," for a skewed variable, doesn't necessarily mean "rare data error." It often means "a real, if less common, part of a genuinely lopsided distribution" — exactly the population Chapter 8's mean-versus-median discussion was built around. '''Follow-Up Challenge:''' Rerun this same outlier check on <code>EDUC</code> instead of <code>CONRINC</code>. Do you find as many outliers? What does the difference tell you about how symmetric or skewed each variable is? For a third comparison, try <code>WORDSUM</code> — with a true zero and a hard ceiling of 10, would you even expect the 1.5×IQR rule to flag many outliers here? == References == <references/> 4vtvn5iudcvsddh3j341mz1yhtixgk9 4656637 4656592 2026-08-07T15:02:37Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656637 wikitext text/x-wiki = Chapter 9: Measures of Variability = Two distributions can have exactly the same mean and look nothing alike. Imagine one classroom where every student scored between 78 and 82 on an exam, and another where scores ranged from 40 to 100 — both could easily average out to 80. Reporting only the mean for each classroom would tell you they're identical. They are not. One is a room full of students performing consistently; the other is a room full of students having wildly different experiences with the material. Central tendency alone cannot tell these two stories apart. This chapter teaches the tools that can. == Why Variability Matters == If Chapter 8 answered "what's typical?", this chapter answers the equally important follow-up: "how much do people actually differ from that typical value?" A measure of central tendency without a measure of variability is half a description — technically not wrong, but genuinely incomplete in a way that can hide the most sociologically interesting part of the story. Two neighborhoods with the same average income can have very different levels of inequality. Two demographic groups with the same average happiness score can differ enormously in how consistently happy their members are. == Range == The '''range''' — the difference between the maximum and minimum values — is the simplest possible measure of spread, and its simplicity is also its weakness: it depends entirely on two values, and says nothing about how the other however-many-thousand respondents are distributed in between. One unusual outlier can make the range enormous even if everyone else in the dataset is clustered tightly together. <syntaxhighlight lang="r"> range(gss$AGE, na.rm = TRUE) diff(range(gss$AGE, na.rm = TRUE)) # the range as a single number </syntaxhighlight> == Interquartile Range (IQR) == The '''interquartile range''' fixes the range's biggest weakness by ignoring the extremes entirely: it's the range of just the middle 50% of the data, from the 25th percentile (first quartile) to the 75th percentile (third quartile). Because it's built around the median's position in the ordered data rather than the literal minimum and maximum, it's considerably more '''robust''' to outliers than the range is. <syntaxhighlight lang="r"> IQR(gss$EDUC, na.rm = TRUE) quantile(gss$EDUC, probs = c(0.25, 0.75), na.rm = TRUE) </syntaxhighlight> == Variance == '''Variance''' measures the average squared distance of each value from the mean. Why squared, rather than just averaging the plain distances? Because distances above the mean are positive and distances below it are negative, and if you don't square them first, they cancel each other out almost perfectly — you'd get an average deviation suspiciously close to zero for every dataset, which tells you nothing. Squaring makes every deviation positive before averaging, so spread in either direction contributes to a larger number rather than canceling out. For a population, variance is defined as: : <math>\sigma^2 = \frac{\sum (x_i - \mu)^2}{N}</math> For a sample — which is what you'll actually compute nearly every time in this book — it's defined very slightly differently: : <math>s^2 = \frac{\sum (x_i - \bar{x})^2}{n - 1}</math> That ''n'' − 1 in the denominator, instead of a plain ''n'', is not a typo, and it's important enough that it gets its own explanation two sections from now, once standard deviation is on the table too. <syntaxhighlight lang="r"> var(gss$EDUC, na.rm = TRUE) </syntaxhighlight> The cost of this fix is that variance ends up in '''squared units''' — "years of education, squared" is not a unit any human has ever needed outside of a statistics class, and it makes variance nearly impossible to interpret directly. == Standard Deviation == The '''standard deviation''' is variance's more interpretable cousin: take the square root of the variance, and you're back in the original units. : <math>s = \sqrt{\frac{\sum (x_i - \bar{x})^2}{n - 1}}</math> Variance is in squared units, which are a unit no human has ever used naturally; standard deviation corrects this by taking the square root, which is the statistical equivalent of apologizing. <syntaxhighlight lang="r"> sd(gss$EDUC, na.rm = TRUE) </syntaxhighlight> A standard deviation of, say, 2.9 years for <code>EDUC</code> means that a "typical" deviation from the mean education level is about 2.9 years — some respondents deviate more, some less, but 2.9 years captures roughly how spread out the data are, in a unit (years) that actually means something to a human reader. == Degrees of Freedom: What Sudoku Can Teach You About Statistics == That ''n'' − 1 from the variance and standard deviation formulas above is your first encounter with a concept called '''degrees of freedom''' (often abbreviated ''df''), and it is going to follow you for the rest of this book — every t-test, every chi-square test, every ANOVA, and every regression model you run from here forward will report a degrees-of-freedom value in its output. Most introductory textbooks introduce the term, attach a formula to it, and move on without ever really explaining what it means. This book is going to take one detour to actually explain it, using a tool that has nothing to do with statistics on its surface: Sudoku. If you've never played, the rules are simple: fill a 9×9 grid with the digits 1 through 9, such that every row, every column, and every 3×3 box contains each digit exactly once. Here's the part that matters for our purposes: imagine a single row, and imagine eight of its nine cells are already correctly filled in. Is the ninth cell a free choice? No. It's completely determined — there's exactly one digit missing from 1 through 9, and it has to go in that last cell. That cell has zero freedom left. It looks like a blank waiting to be filled, but the moment the other eight cells were set, its value was already decided. '''Degrees of freedom''', in statistics, means exactly this: the number of values in a calculation that are still genuinely free to vary, once you've imposed some constraint on them. And the constraint, in the case of sample variance, is one you've already used without necessarily noticing it: before you can compute how far each value deviates from the mean, you have to calculate the mean first — and by definition, all of the deviations from that mean have to sum to exactly zero (the points above the mean and the points below it balance out perfectly, every time, for any set of numbers and their own mean). That's a real mathematical constraint, exactly like a Sudoku row that has to contain each digit exactly once. So: if you have ''n'' data points and you've already used them to calculate the mean, only ''n'' − 1 of those points are still free to be anything at all. The last one is locked in — the same way the last cell in that Sudoku row was locked in — because it has to be whatever value makes all the deviations sum to zero. You've spent one degree of freedom calculating the mean, and you have ''n'' − 1 left over to spend on estimating the spread around it. That's why sample variance and sample standard deviation divide by ''n'' − 1 rather than ''n'' — dividing by the number of values that were actually still free to vary, rather than the total count, produces a better (specifically, unbiased) estimate of the population value. This is a genuinely useful mental model to carry forward, because "degrees of freedom" keeps reappearing throughout the rest of this book with the exact same underlying logic, just applied to different constraints: * A '''one-sample t-test''' (Chapter 13) has ''df'' = ''n'' − 1 — one degree of freedom spent estimating the sample mean, exactly as above. * An '''independent-samples t-test''' has roughly ''df'' = ''n''₁ + ''n''₂ − 2 — one degree spent estimating each group's own mean. * A '''chi-square test of independence''' (Chapter 14) has ''df'' = (rows − 1) × (columns − 1) — think of a cross-tabulation as a much bigger Sudoku grid, where the "clues" are the row and column totals rather than the digits 1 through 9; once you know all the row and column totals and all but the last row and column of interior cells, every remaining cell is fully determined by those totals, exactly like that last Sudoku cell. * '''ANOVA''' (Chapter 15) has separate degrees of freedom for its between-groups and within-groups variance components, following the same logic: one degree of freedom spent per group mean being estimated. If you've ever filled in the last cell of a Sudoku row without feeling like you were making a real decision, you have already, whether you realized it or not, personally experienced the loss of a degree of freedom. '''dplyr, computing several spread statistics at once:''' <syntaxhighlight lang="r"> library(dplyr) gss %>% summarize( sd_educ = sd(EDUC, na.rm = TRUE), var_educ = var(EDUC, na.rm = TRUE), iqr_educ = IQR(EDUC, na.rm = TRUE) ) </syntaxhighlight> == Box Plots and the Five-Number Summary == A '''box plot'''<ref>Tukey, J. W. (1977). ''Exploratory Data Analysis''. Addison-Wesley.</ref> visualizes the '''five-number summary''' — minimum, first quartile, median, third quartile, and maximum — in a single compact shape: a box spanning the IQR, a line at the median, and "whiskers" extending to the most extreme non-outlier values. <syntaxhighlight lang="r"> summary(gss$AGE) # the five-number summary as text </syntaxhighlight> '''Base R:''' <syntaxhighlight lang="r"> boxplot(gss$AGE ~ gss$SEX, main = "Age by Sex", xlab = "Sex", ylab = "Age") </syntaxhighlight> '''ggplot2:''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = factor(SEX), y = AGE)) + geom_boxplot() + labs(title = "Age by Sex", x = "Sex", y = "Age") </syntaxhighlight> Comparing variability across groups — not just comparing means across groups — is where this chapter gets genuinely sociological. Two groups can have nearly identical average happiness while one group is far more internally consistent than the other; that difference in spread can be as substantively interesting as a difference in the average itself. Income variability by race, happiness variability by marital status, education variability by region: these are real questions, and a side-by-side box plot answers them at a glance in a way that two separate means never could. <!-- FIGURE: A side-by-side box plot of AGE by SEX using real 2010 GSS data, illustrating both central tendency and spread comparisons in a single plot. Author to generate. --> == Outliers and the 1.5 × IQR Rule == A common, defensible rule of thumb for flagging outliers: any value more than 1.5 times the IQR below the first quartile or above the third quartile. <syntaxhighlight lang="r"> Q1 <- quantile(gss$CONRINC, 0.25, na.rm = TRUE) Q3 <- quantile(gss$CONRINC, 0.75, na.rm = TRUE) iqr_income <- IQR(gss$CONRINC, na.rm = TRUE) lower_bound <- Q1 - 1.5 * iqr_income upper_bound <- Q3 + 1.5 * iqr_income outliers <- gss$CONRINC[gss$CONRINC < lower_bound | gss$CONRINC > upper_bound] outliers </syntaxhighlight> Flagging a value as a statistical outlier is not the same thing as deciding it's an error. Sometimes an "outlier" is a data entry mistake worth investigating and correcting. Sometimes it's just Jeff Bezos, again, being exactly as real and exactly as high-earning as the data claims. The 1.5 × IQR rule tells you where to look; it doesn't tell you what to do once you're looking, and that judgment call belongs to you, informed by domain knowledge the formula doesn't have. == Chapter Summary == Central tendency alone can hide dramatically different distributions behind an identical mean — variability measures fill that gap. The range is simple but fragile, driven entirely by two extreme values; the IQR fixes this by focusing on the middle 50% of the data, making it robust to outliers in the same way the median is. Variance captures average squared deviation from the mean but lives in unhelpful squared units; standard deviation takes the square root and returns to the data's original, interpretable units. Sample variance and SD divide by ''n'' − 1 rather than ''n'' because calculating the mean first spends one degree of freedom — a concept this chapter explained via Sudoku, and one that will keep reappearing, in different forms, through every remaining inferential chapter in this book. R computes the sample version of variance and SD by default, which is almost always what social science research needs. Box plots visualize the five-number summary and are especially useful for comparing variability — not just central tendency — across sociologically meaningful groups. The 1.5 × IQR rule offers a systematic way to flag potential outliers, though flagging is not the same as deciding they're errors. == Practice Examples == === Example 1: Standard Deviation of EDUC === '''The Research Question:''' How much do respondents' years of education typically vary from the mean, and what does "one SD above the mean" actually mean for a real person? '''The Code:''' <syntaxhighlight lang="r"> mean(gss$EDUC, na.rm = TRUE) sd(gss$EDUC, na.rm = TRUE) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 13.68 # mean [1] 2.9 # sd </syntaxhighlight> '''The Interpretation:''' The mean is 13.68 years; the standard deviation is roughly 2.9 years. A respondent "one SD above the mean" has about 13.68 + 2.9 ≈ 16.6 years of education — very roughly, a bachelor's degree plus a bit. This is a concrete, human-scale way of using a standard deviation: not as an abstract number, but as a translation between a statistic and an actual respondent you could imagine meeting. '''Follow-Up Challenge:''' Find a respondent (or hypothetical respondent) at two SDs below the mean. What does that level of education correspond to in real terms? Does the answer feel like a "typical" amount of variability to you, or more/less than you expected? === Example 2: Box Plot of AGE by SEX === '''The Research Question:''' Does age vary more within one sex than the other in this sample? '''The Code (base R):''' <syntaxhighlight lang="r"> boxplot(gss$AGE ~ gss$SEX, main = "Age by Sex", xlab = "Sex", ylab = "Age") </syntaxhighlight> '''The Code (ggplot2):''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = factor(SEX), y = AGE)) + geom_boxplot(fill = "lightblue") + labs(title = "Age by Sex", x = "Sex", y = "Age") </syntaxhighlight> '''The Output:''' Two box plots side by side, one per sex category, each showing the five-number summary of age within that group. (See the FIGURE note above — actual box positions and spread depend on real 2010 GSS data.) '''The Interpretation:''' Comparing box heights (not just median lines) tells you whether one group is more internally variable in age than the other. If the boxes are roughly the same height with similar median lines, age is distributed similarly across sexes in this sample; a taller box for one group would indicate more internal age variability within that group specifically — a genuinely different claim than "the two groups have different average ages," and one a box plot reveals far more directly than two separate means would. '''Follow-Up Challenge:''' Add a third grouping variable — say, <code>MARITAL</code> — and produce a box plot of age by both sex and marital status simultaneously. (Hint: in ggplot2, this is a job for <code>facet_wrap()</code>, which you haven't formally met yet — see if you can find it in the documentation and get it working.) === Example 3: Outliers in CONRINC === '''The Research Question:''' Are there respondents whose income is unusually extreme relative to the rest of the sample, by the 1.5 × IQR standard? '''The Code:''' <syntaxhighlight lang="r"> Q1 <- quantile(gss$CONRINC, 0.25, na.rm = TRUE) Q3 <- quantile(gss$CONRINC, 0.75, na.rm = TRUE) iqr_income <- IQR(gss$CONRINC, na.rm = TRUE) upper_bound <- Q3 + 1.5 * iqr_income sum(gss$CONRINC > upper_bound, na.rm = TRUE) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 62 </syntaxhighlight> '''The Interpretation:''' 62 respondents fall above the upper outlier threshold — a meaningful chunk of the sample, which is fairly typical for a right-skewed variable like income (recall Chapter 7). This is a useful reminder that "outlier," for a skewed variable, doesn't necessarily mean "rare data error." It often means "a real, if less common, part of a genuinely lopsided distribution" — exactly the population Chapter 8's mean-versus-median discussion was built around. '''Follow-Up Challenge:''' Rerun this same outlier check on <code>EDUC</code> instead of <code>CONRINC</code>. Do you find as many outliers? What does the difference tell you about how symmetric or skewed each variable is? For a third comparison, try <code>WORDSUM</code> — with a true zero and a hard ceiling of 10, would you even expect the 1.5×IQR rule to flag many outliers here? == References == <references/> {{BookCat}} c7hqvw8zy78tudzhd4uo0gdmxqv9o0c Statistics for Sociologists/Chapter 10: The Normal Distribution and Areas Under the Curve 0 485151 4656593 2026-08-07T14:09:50Z Rcragun 41177 first draft 4656593 wikitext text/x-wiki = Chapter 10: The Normal Distribution and Areas Under the Curve = Everything in this book from here to the final chapter rests, in one way or another, on the shape you're about to meet properly. It has shown up implicitly in every histogram so far, and it's about to become explicit, because the rest of inferential statistics — confidence intervals, t-tests, chi-square tests, regression — is built on top of it. This chapter is the hinge between "describing data" (Part III) and "drawing conclusions from data" (Part IV). Take your time with it. == What the Normal Distribution Is (and Isn't) == The '''normal distribution''' is a theoretical probability distribution — a mathematical idealization, not an empirical claim that "most things in the world look like this." It's symmetric and bell-shaped, with mean, median, and mode all equal to the same central value, and its entire shape is fully determined by just two numbers: the mean (μ) and standard deviation (σ). The normal distribution appears everywhere in nature: heights, measurement errors, and the combined effect of many small, independent random influences all tend to produce something close to this bell shape. It does not appear in income, which instead follows a distribution that can only be described as aggressively right-skewed, per the last two chapters' extended meditation on exactly that fact. The normal distribution is a genuinely useful model for a great many things. It is not a universal law of the social world, and treating it as one is a fast way to misuse every technique in the rest of this book. <!-- IMAGE: A clean, simple illustration of the classic bell curve, ideally with the mean/median/mode point marked at the center — a visual anchor readers can refer back to for the rest of the chapter. --> == The Empirical Rule == For any normal distribution, roughly '''68%''' of values fall within 1 standard deviation of the mean, '''95%''' fall within 2 standard deviations, and '''99.7%''' fall within 3. This "68-95-99.7 rule" is worth memorizing, because it gives you an immediate, rough sense of how unusual a given value is, long before you reach for a calculator: a value more than 2 SDs from the mean is already in roughly the most extreme 5% of the distribution, combining both tails. == Z-Scores: Standardizing a Raw Score == A '''z-score''' converts any raw value into a standardized measure of how many standard deviations it sits above or below the mean: : <math>z = \frac{x - \mu}{\sigma}</math> A z-score of 0 means "exactly average." A z-score of +2 means "two standard deviations above average." A z-score of −1.3 means "1.3 standard deviations below average." The great advantage of a z-score is that it strips away the original units entirely — a z-score of +1 means the same relative thing whether the underlying variable is measured in years, dollars, or degrees, which makes z-scores directly comparable across completely different variables in a way raw scores never can be. Here's a self-referential example, since you've likely lived this exact scenario: suppose you score an 85 on an exam with a class mean of 75 and a standard deviation of 10. <syntaxhighlight lang="r"> z <- (85 - 75) / 10 z </syntaxhighlight> <syntaxhighlight lang="r"> [1] 1 </syntaxhighlight> A z-score of exactly 1 means your score sits precisely one standard deviation above the class average — a solidly good result, without needing to know anything about the exam's raw point scale to recognize that. '''Computing z-scores for a whole vector in R, manually and with <code>scale()</code>:''' <syntaxhighlight lang="r"> gss$EDUC_z_manual <- (gss$EDUC - mean(gss$EDUC, na.rm = TRUE)) / sd(gss$EDUC, na.rm = TRUE) gss$EDUC_z_scale <- scale(gss$EDUC) # does the same thing in one function call </syntaxhighlight> <code>scale()</code> is a genuine convenience once you understand what it's doing under the hood — which is exactly the manual formula above, applied to every value in the vector at once. == Areas Under the Curve as Probabilities == For a normal distribution, the total area under the curve equals 1 (100% of all possible outcomes), and the area under any portion of the curve represents the probability of landing in that range. Older textbooks made you look this up in a printed z-table in the back of the book. You have a computer. Use it. <syntaxhighlight lang="r"> pnorm(1) # proportion of a standard normal distribution BELOW z = 1 1 - pnorm(1) # proportion ABOVE z = 1 pnorm(1) - pnorm(-1) # proportion BETWEEN z = -1 and z = 1 (should be ~0.68, per the empirical rule) qnorm(0.95) # the z-score below which 95% of the distribution falls </syntaxhighlight> <code>pnorm()</code> goes from a value to a probability; <code>qnorm()</code> goes the other direction, from a probability to a value — the two functions are inverses of each other, and you'll use both constantly starting in Chapter 12's confidence intervals. <!-- IMAGE: A bell curve with a shaded region under one tail (say, above z = 1), visually illustrating what pnorm() computes. Pairs naturally with the code above. --> == Assessing Normality == Before you can lean on any technique that assumes normality (and several of the most important techniques in Part IV do), it's worth actually checking whether a given variable looks reasonably normal. '''Histograms''' are the simplest first check — does the shape look roughly bell-like, or clearly skewed/bimodal? <syntaxhighlight lang="r"> hist(gss$AGE, main = "Distribution of Age") </syntaxhighlight> '''Q-Q plots''' (quantile-quantile plots) are a more precise visual tool: they plot your data's quantiles against the quantiles a perfectly normal distribution would produce. If your data are normal, the points fall approximately along a straight diagonal line; systematic curves or bends away from that line reveal specific kinds of departure from normality (heavy tails, skew, and so on). <syntaxhighlight lang="r"> qqnorm(gss$AGE) qqline(gss$AGE) # adds the reference line for comparison </syntaxhighlight> '''The Shapiro-Wilk test'''<ref>Shapiro, S. S., & Wilk, M. B. (1965). An analysis of variance test for normality (complete samples). ''Biometrika'', 52(3/4), 591–611.</ref> formalizes this into a hypothesis test, with a null hypothesis that the data ''are'' normally distributed: <syntaxhighlight lang="r"> shapiro.test(gss$AGE) </syntaxhighlight> Here's the honest caveat this test needs, and one that gets skipped in a lot of introductory treatments: the Shapiro-Wilk test becomes nearly useless with large samples. With enough data — and the GSS, at roughly 1,500-2,000-plus respondents, usually qualifies — the test will detect and flag even the tiniest, practically meaningless departure from perfect normality as "statistically significant," because with n in the thousands, the test has the power to notice deviations too small to matter for anything you'd actually do with the data. Above roughly n = 5,000, it is genuinely common for ''every'' real-world variable to fail a Shapiro-Wilk test, regardless of how normal it looks to the human eye on a histogram. This is a preview of a theme that will return with real force in Chapter 11: statistical significance and practical importance are not the same thing, and a sufficiently large sample can make that gap embarrassingly obvious. The practical takeaway: for large samples, trust your eyes (the histogram, the Q-Q plot) over the Shapiro-Wilk p-value. Visual assessment isn't a lesser, less rigorous method here — for large ''n'', it's arguably the more informative one. == Chapter Summary == The normal distribution is a theoretical, symmetric, bell-shaped model fully defined by its mean and standard deviation — genuinely common in nature, but not a universal description of social data (income, notably, is not normal). The empirical rule (68-95-99.7%) gives a quick intuition for how unusual a value is based on how many standard deviations it sits from the mean. Z-scores standardize any raw value into these standard-deviation units, making otherwise incomparable variables directly comparable. R computes exact areas under the normal curve with <code>pnorm()</code> and <code>qnorm()</code>, replacing the printed z-tables of statistics courses past. Assessing whether a variable is actually normal combines histograms, Q-Q plots, and the Shapiro-Wilk test — but the Shapiro-Wilk test's power to detect trivial deviations in large samples means visual inspection often deserves more trust than the p-value alone, especially with a dataset the size of the GSS. == Practice Examples == === Example 1: Z-Scores for Education === '''The Research Question:''' How unusual is a given respondent's education level, relative to the rest of the sample? '''The Code:''' <syntaxhighlight lang="r"> gss$EDUC_z <- scale(gss$EDUC) # Look at a few specific respondents head(data.frame(EDUC = gss$EDUC, EDUC_z = gss$EDUC_z), 5) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> EDUC EDUC_z 1 12 -0.58 2 16 0.80 3 20 2.18 # exceptionally high z-score 4 8 -1.96 5 13 -0.23 </syntaxhighlight> '''The Interpretation:''' Respondent 3, with 20 years of education, has a z-score above +2 — comfortably in the top few percent of the education distribution by the empirical rule. Respondent 4, with a z-score near −2, is well below average, approaching the tail of the distribution. Note how the z-score reframes "20 years of education" from a bare fact into a statement about relative standing — precisely the kind of comparison a raw number alone can't give you. '''Follow-Up Challenge:''' Using <code>pnorm()</code>, convert respondent 3's z-score into an approximate percentile. What proportion of respondents would you expect to have less education than this person, assuming education were exactly normally distributed (a real caveat, given how bounded and non-continuous education actually is)? === Example 2: Proportion Above/Below a Threshold === '''The Research Question:''' What proportion of respondents would we expect to have more than 16 years of education (roughly, a bachelor's degree), based on a normal approximation? '''The Code:''' <syntaxhighlight lang="r"> m <- mean(gss$EDUC, na.rm = TRUE) s <- sd(gss$EDUC, na.rm = TRUE) z_16 <- (16 - m) / s 1 - pnorm(z_16) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 0.212 </syntaxhighlight> '''The Interpretation:''' Under a normal approximation, roughly 21.2% of respondents would be expected to have more than 16 years of education. This is an estimate based on treating <code>EDUC</code> as normally distributed, which — as the histogram and Q-Q plot in Example 3 will make clear — is only an approximation, since real education data is bounded, somewhat lumpy at common milestones (12 years for a high school diploma, 16 for a bachelor's), and not a perfectly smooth bell curve. The normal approximation is still a useful quick estimate; it's just worth remembering it's an approximation, not a report of the exact empirical proportion (which you could get directly with <code>mean(gss$EDUC > 16, na.rm = TRUE)</code>). '''Follow-Up Challenge:''' Compute the ''actual'' (empirical) proportion of respondents with more than 16 years of education directly from the data, without any normal approximation. How close is it to the normal-based estimate above? What does the gap tell you about how well education fits a normal shape? === Example 3: Assessing Normality of AGE === '''The Research Question:''' Is respondent age reasonably well-approximated by a normal distribution? '''The Code:''' <syntaxhighlight lang="r"> hist(gss$AGE, main = "Distribution of Age", xlab = "Age") qqnorm(gss$AGE) qqline(gss$AGE) shapiro.test(gss$AGE) </syntaxhighlight> '''The Output:''' A histogram showing a roughly bell-shaped but mildly right-skewed distribution; a Q-Q plot with points following the diagonal reasonably well in the middle but drifting away at the upper tail; and a Shapiro-Wilk test result along the lines of: <syntaxhighlight lang="r"> Shapiro-Wilk normality test data: gss$AGE W = 0.98, p-value < 0.001 </syntaxhighlight> '''The Interpretation:''' The p-value is tiny, which technically means the test rejects the null hypothesis of normality. But look at the histogram and Q-Q plot first: the deviation is real but modest — a mild right skew, not a dramatic departure. With a sample this large, the Shapiro-Wilk test has enough statistical power to flag even this modest, largely cosmetic deviation as "significant." This is exactly the caveat from earlier in the chapter in action: for most practical purposes (including several of the inferential techniques in Part IV, which tend to be fairly robust to mild non-normality with large samples), age here is "normal enough," and the visual evidence should carry more weight than the p-value alone. '''Follow-Up Challenge:''' Run the same three checks (histogram, Q-Q plot, Shapiro-Wilk) on <code>INCOME</code> instead of <code>AGE</code>. Given everything Chapters 7 through 9 have already told you about income's shape, what do you expect to find before you run the code? Were you right? == References == <references/> lmlr3pjlvs8urhvbi88ul9le8u209fs 4656635 4656593 2026-08-07T15:02:33Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656635 wikitext text/x-wiki = Chapter 10: The Normal Distribution and Areas Under the Curve = Everything in this book from here to the final chapter rests, in one way or another, on the shape you're about to meet properly. It has shown up implicitly in every histogram so far, and it's about to become explicit, because the rest of inferential statistics — confidence intervals, t-tests, chi-square tests, regression — is built on top of it. This chapter is the hinge between "describing data" (Part III) and "drawing conclusions from data" (Part IV). Take your time with it. == What the Normal Distribution Is (and Isn't) == The '''normal distribution''' is a theoretical probability distribution — a mathematical idealization, not an empirical claim that "most things in the world look like this." It's symmetric and bell-shaped, with mean, median, and mode all equal to the same central value, and its entire shape is fully determined by just two numbers: the mean (μ) and standard deviation (σ). The normal distribution appears everywhere in nature: heights, measurement errors, and the combined effect of many small, independent random influences all tend to produce something close to this bell shape. It does not appear in income, which instead follows a distribution that can only be described as aggressively right-skewed, per the last two chapters' extended meditation on exactly that fact. The normal distribution is a genuinely useful model for a great many things. It is not a universal law of the social world, and treating it as one is a fast way to misuse every technique in the rest of this book. <!-- IMAGE: A clean, simple illustration of the classic bell curve, ideally with the mean/median/mode point marked at the center — a visual anchor readers can refer back to for the rest of the chapter. --> == The Empirical Rule == For any normal distribution, roughly '''68%''' of values fall within 1 standard deviation of the mean, '''95%''' fall within 2 standard deviations, and '''99.7%''' fall within 3. This "68-95-99.7 rule" is worth memorizing, because it gives you an immediate, rough sense of how unusual a given value is, long before you reach for a calculator: a value more than 2 SDs from the mean is already in roughly the most extreme 5% of the distribution, combining both tails. == Z-Scores: Standardizing a Raw Score == A '''z-score''' converts any raw value into a standardized measure of how many standard deviations it sits above or below the mean: : <math>z = \frac{x - \mu}{\sigma}</math> A z-score of 0 means "exactly average." A z-score of +2 means "two standard deviations above average." A z-score of −1.3 means "1.3 standard deviations below average." The great advantage of a z-score is that it strips away the original units entirely — a z-score of +1 means the same relative thing whether the underlying variable is measured in years, dollars, or degrees, which makes z-scores directly comparable across completely different variables in a way raw scores never can be. Here's a self-referential example, since you've likely lived this exact scenario: suppose you score an 85 on an exam with a class mean of 75 and a standard deviation of 10. <syntaxhighlight lang="r"> z <- (85 - 75) / 10 z </syntaxhighlight> <syntaxhighlight lang="r"> [1] 1 </syntaxhighlight> A z-score of exactly 1 means your score sits precisely one standard deviation above the class average — a solidly good result, without needing to know anything about the exam's raw point scale to recognize that. '''Computing z-scores for a whole vector in R, manually and with <code>scale()</code>:''' <syntaxhighlight lang="r"> gss$EDUC_z_manual <- (gss$EDUC - mean(gss$EDUC, na.rm = TRUE)) / sd(gss$EDUC, na.rm = TRUE) gss$EDUC_z_scale <- scale(gss$EDUC) # does the same thing in one function call </syntaxhighlight> <code>scale()</code> is a genuine convenience once you understand what it's doing under the hood — which is exactly the manual formula above, applied to every value in the vector at once. == Areas Under the Curve as Probabilities == For a normal distribution, the total area under the curve equals 1 (100% of all possible outcomes), and the area under any portion of the curve represents the probability of landing in that range. Older textbooks made you look this up in a printed z-table in the back of the book. You have a computer. Use it. <syntaxhighlight lang="r"> pnorm(1) # proportion of a standard normal distribution BELOW z = 1 1 - pnorm(1) # proportion ABOVE z = 1 pnorm(1) - pnorm(-1) # proportion BETWEEN z = -1 and z = 1 (should be ~0.68, per the empirical rule) qnorm(0.95) # the z-score below which 95% of the distribution falls </syntaxhighlight> <code>pnorm()</code> goes from a value to a probability; <code>qnorm()</code> goes the other direction, from a probability to a value — the two functions are inverses of each other, and you'll use both constantly starting in Chapter 12's confidence intervals. <!-- IMAGE: A bell curve with a shaded region under one tail (say, above z = 1), visually illustrating what pnorm() computes. Pairs naturally with the code above. --> == Assessing Normality == Before you can lean on any technique that assumes normality (and several of the most important techniques in Part IV do), it's worth actually checking whether a given variable looks reasonably normal. '''Histograms''' are the simplest first check — does the shape look roughly bell-like, or clearly skewed/bimodal? <syntaxhighlight lang="r"> hist(gss$AGE, main = "Distribution of Age") </syntaxhighlight> '''Q-Q plots''' (quantile-quantile plots) are a more precise visual tool: they plot your data's quantiles against the quantiles a perfectly normal distribution would produce. If your data are normal, the points fall approximately along a straight diagonal line; systematic curves or bends away from that line reveal specific kinds of departure from normality (heavy tails, skew, and so on). <syntaxhighlight lang="r"> qqnorm(gss$AGE) qqline(gss$AGE) # adds the reference line for comparison </syntaxhighlight> '''The Shapiro-Wilk test'''<ref>Shapiro, S. S., & Wilk, M. B. (1965). An analysis of variance test for normality (complete samples). ''Biometrika'', 52(3/4), 591–611.</ref> formalizes this into a hypothesis test, with a null hypothesis that the data ''are'' normally distributed: <syntaxhighlight lang="r"> shapiro.test(gss$AGE) </syntaxhighlight> Here's the honest caveat this test needs, and one that gets skipped in a lot of introductory treatments: the Shapiro-Wilk test becomes nearly useless with large samples. With enough data — and the GSS, at roughly 1,500-2,000-plus respondents, usually qualifies — the test will detect and flag even the tiniest, practically meaningless departure from perfect normality as "statistically significant," because with n in the thousands, the test has the power to notice deviations too small to matter for anything you'd actually do with the data. Above roughly n = 5,000, it is genuinely common for ''every'' real-world variable to fail a Shapiro-Wilk test, regardless of how normal it looks to the human eye on a histogram. This is a preview of a theme that will return with real force in Chapter 11: statistical significance and practical importance are not the same thing, and a sufficiently large sample can make that gap embarrassingly obvious. The practical takeaway: for large samples, trust your eyes (the histogram, the Q-Q plot) over the Shapiro-Wilk p-value. Visual assessment isn't a lesser, less rigorous method here — for large ''n'', it's arguably the more informative one. == Chapter Summary == The normal distribution is a theoretical, symmetric, bell-shaped model fully defined by its mean and standard deviation — genuinely common in nature, but not a universal description of social data (income, notably, is not normal). The empirical rule (68-95-99.7%) gives a quick intuition for how unusual a value is based on how many standard deviations it sits from the mean. Z-scores standardize any raw value into these standard-deviation units, making otherwise incomparable variables directly comparable. R computes exact areas under the normal curve with <code>pnorm()</code> and <code>qnorm()</code>, replacing the printed z-tables of statistics courses past. Assessing whether a variable is actually normal combines histograms, Q-Q plots, and the Shapiro-Wilk test — but the Shapiro-Wilk test's power to detect trivial deviations in large samples means visual inspection often deserves more trust than the p-value alone, especially with a dataset the size of the GSS. == Practice Examples == === Example 1: Z-Scores for Education === '''The Research Question:''' How unusual is a given respondent's education level, relative to the rest of the sample? '''The Code:''' <syntaxhighlight lang="r"> gss$EDUC_z <- scale(gss$EDUC) # Look at a few specific respondents head(data.frame(EDUC = gss$EDUC, EDUC_z = gss$EDUC_z), 5) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> EDUC EDUC_z 1 12 -0.58 2 16 0.80 3 20 2.18 # exceptionally high z-score 4 8 -1.96 5 13 -0.23 </syntaxhighlight> '''The Interpretation:''' Respondent 3, with 20 years of education, has a z-score above +2 — comfortably in the top few percent of the education distribution by the empirical rule. Respondent 4, with a z-score near −2, is well below average, approaching the tail of the distribution. Note how the z-score reframes "20 years of education" from a bare fact into a statement about relative standing — precisely the kind of comparison a raw number alone can't give you. '''Follow-Up Challenge:''' Using <code>pnorm()</code>, convert respondent 3's z-score into an approximate percentile. What proportion of respondents would you expect to have less education than this person, assuming education were exactly normally distributed (a real caveat, given how bounded and non-continuous education actually is)? === Example 2: Proportion Above/Below a Threshold === '''The Research Question:''' What proportion of respondents would we expect to have more than 16 years of education (roughly, a bachelor's degree), based on a normal approximation? '''The Code:''' <syntaxhighlight lang="r"> m <- mean(gss$EDUC, na.rm = TRUE) s <- sd(gss$EDUC, na.rm = TRUE) z_16 <- (16 - m) / s 1 - pnorm(z_16) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 0.212 </syntaxhighlight> '''The Interpretation:''' Under a normal approximation, roughly 21.2% of respondents would be expected to have more than 16 years of education. This is an estimate based on treating <code>EDUC</code> as normally distributed, which — as the histogram and Q-Q plot in Example 3 will make clear — is only an approximation, since real education data is bounded, somewhat lumpy at common milestones (12 years for a high school diploma, 16 for a bachelor's), and not a perfectly smooth bell curve. The normal approximation is still a useful quick estimate; it's just worth remembering it's an approximation, not a report of the exact empirical proportion (which you could get directly with <code>mean(gss$EDUC > 16, na.rm = TRUE)</code>). '''Follow-Up Challenge:''' Compute the ''actual'' (empirical) proportion of respondents with more than 16 years of education directly from the data, without any normal approximation. How close is it to the normal-based estimate above? What does the gap tell you about how well education fits a normal shape? === Example 3: Assessing Normality of AGE === '''The Research Question:''' Is respondent age reasonably well-approximated by a normal distribution? '''The Code:''' <syntaxhighlight lang="r"> hist(gss$AGE, main = "Distribution of Age", xlab = "Age") qqnorm(gss$AGE) qqline(gss$AGE) shapiro.test(gss$AGE) </syntaxhighlight> '''The Output:''' A histogram showing a roughly bell-shaped but mildly right-skewed distribution; a Q-Q plot with points following the diagonal reasonably well in the middle but drifting away at the upper tail; and a Shapiro-Wilk test result along the lines of: <syntaxhighlight lang="r"> Shapiro-Wilk normality test data: gss$AGE W = 0.98, p-value < 0.001 </syntaxhighlight> '''The Interpretation:''' The p-value is tiny, which technically means the test rejects the null hypothesis of normality. But look at the histogram and Q-Q plot first: the deviation is real but modest — a mild right skew, not a dramatic departure. With a sample this large, the Shapiro-Wilk test has enough statistical power to flag even this modest, largely cosmetic deviation as "significant." This is exactly the caveat from earlier in the chapter in action: for most practical purposes (including several of the inferential techniques in Part IV, which tend to be fairly robust to mild non-normality with large samples), age here is "normal enough," and the visual evidence should carry more weight than the p-value alone. '''Follow-Up Challenge:''' Run the same three checks (histogram, Q-Q plot, Shapiro-Wilk) on <code>INCOME</code> instead of <code>AGE</code>. Given everything Chapters 7 through 9 have already told you about income's shape, what do you expect to find before you run the code? Were you right? == References == <references/> {{BookCat}} lh5ycsx99ecw4cbw1omt88t0w6e65au Statistics for Sociologists/Chapter 11: Sampling Distributions, Standard Error, and Statistical Power 0 485152 4656594 2026-08-07T14:10:33Z Rcragun 41177 first draft 4656594 wikitext text/x-wiki = Chapter 11: Sampling Distributions, Standard Error, and Statistical Power = Part III taught you to describe a sample. Part IV, starting here, teaches you to say something about the population that sample came from — and the entire logical structure that makes this possible rests on one concept that reliably confuses more students than anything else in an introductory statistics course. This chapter names that confusion directly, on purpose, and works through it slowly. If it takes you a couple of readings, you're in good company; it takes most people a couple of readings. == The Problem of Inference == You have a sample. You want to say something about a population you didn't fully observe. This is the entire problem '''inferential statistics''' exists to solve, and it's worth sitting with how strange the ambition actually is: you interviewed roughly 2,000 people, and you want to say something trustworthy about roughly 260 million. This only works because of how the sample was collected (recall Chapter 3's discussion of probability sampling) and because of the mathematical machinery this chapter introduces. == Sampling Variability == If you drew a different sample of 2,000 American adults tomorrow, you would not get exactly the same mean age, the same proportion identifying as "very happy," or the same anything. This is '''sampling variability''': different random samples from the same population produce different results, purely by chance, even when nothing about the underlying population has changed. This isn't a flaw in survey methodology — it's an unavoidable, quantifiable fact about drawing any sample smaller than the full population, and the entire logic of inference is built on being able to measure exactly how much variability to expect. == The Sampling Distribution of the Mean == Here's the genuinely strange idea at the center of this chapter: imagine drawing a huge number of different samples — say, 10,000 separate samples of 2,000 respondents each — from the same population, computing the mean of each one, and then looking at the ''distribution of those means''. That distribution — a distribution not of individual data points, but of a statistic computed from many different samples — is called the '''sampling distribution of the mean'''. Notice what makes this different from anything in Part III: every distribution you plotted in Chapters 7 through 10 was a distribution of raw data — individual respondents' ages, incomes, happiness scores. A sampling distribution is a distribution of ''sample means'', one value per hypothetical sample, not one value per respondent. This is the single most common point of confusion in the entire course, so it's worth restating plainly: you are not looking at data anymore. You are looking at a distribution of a statistic computed repeatedly across imaginary repeated samples. You never actually collect those 10,000 samples in real research — you have exactly one sample, the one you actually gathered. The sampling distribution is a theoretical construct: what ''would'' happen, across many hypothetical samples, if you kept repeating your study. It's a strange thing to reason about precisely because it isn't something you directly observe. R lets you build genuine intuition for it anyway, through simulation: <syntaxhighlight lang="r"> set.seed(42) sample_means <- replicate(1000, mean(sample(gss$AGE, size = 30, replace = TRUE), na.rm = TRUE)) hist(sample_means, main = "Simulated Sampling Distribution of the Mean (n = 30)", xlab = "Sample Mean Age") </syntaxhighlight> This code draws 1,000 different samples of 30 respondents each (with replacement, simulating what repeated independent sampling would look like), computes the mean age in each one, and plots the distribution of those 1,000 means. Run it, and you'll see something that looks conspicuously like a normal distribution — even though the underlying <code>AGE</code> variable itself is not perfectly normal (recall Chapter 10's discussion of its mild right skew). <!-- FIGURE: A histogram of the simulated sampling distribution from the code above, run on real 2010 GSS AGE data, ideally shown alongside the raw AGE histogram from Chapter 10 for direct visual comparison. Author to generate. --> == The Central Limit Theorem == That's not a coincidence — it's one of the most useful results in all of statistics, the '''Central Limit Theorem''' (CLT): regardless of the shape of the original population distribution, the sampling distribution of the mean approaches a normal distribution as sample size increases, provided the sample size is reasonably large (a common rule of thumb is n ≥ 30, though the exact threshold depends on how non-normal the original population is). No matter how weird your population distribution looks — even something as aggressively right-skewed as income — sample enough from it, and the sampling distribution of the mean will be approximately normal. This is either deeply reassuring or deeply suspicious, depending on your disposition. This book won't prove the CLT (that's a semester of mathematical statistics in its own right); it will simply demonstrate it, repeatedly, and trust that watching it happen in simulation builds more real understanding than watching it get proven on a chalkboard. The CLT is the reason virtually every technique in the rest of this book — confidence intervals, t-tests, and beyond — is allowed to lean on normal-distribution math even when the underlying data obviously isn't normal. The data doesn't need to be normal. The sampling distribution of the ''statistic'' does, and the CLT is what delivers that, given enough data. == Standard Error == The '''standard error''' (SE) is the standard deviation of the sampling distribution — a measure of how much sample means bounce around from sample to sample. For the sampling distribution of the mean: : <math>SE = \frac{\sigma}{\sqrt{n}}</math> where σ is the population standard deviation (in practice, usually estimated with the sample standard deviation) and n is the sample size. Notice what's in the denominator: as ''n'' increases, the standard error shrinks — larger samples produce more consistent, less variable estimates of the population mean, which matches basic intuition (a poll of 10,000 people should be more stable than a poll of 10 people) with an actual formula behind it. <syntaxhighlight lang="r"> s <- sd(gss$AGE, na.rm = TRUE) n <- sum(!is.na(gss$AGE)) se <- s / sqrt(n) se </syntaxhighlight> '''Watch SE shrink as n grows:''' <syntaxhighlight lang="r"> sapply(c(10, 30, 100, 1000), function(n) s / sqrt(n)) </syntaxhighlight> This is worth internalizing as a genuine mathematical fact, not just a vague notion: because ''n'' is under a square root, quadrupling your sample size only cuts your standard error in half. Diminishing returns set in early — doubling an already-large GSS-sized sample buys you noticeably less precision than doubling a small pilot study would. == Statistical Power == '''Statistical power'''<ref>Cohen, J. (1988). ''Statistical Power Analysis for the Behavioral Sciences'' (2nd ed.). Lawrence Erlbaum Associates.</ref> is the probability of detecting a real effect, if one genuinely exists in the population, given your study's sample size, effect size, and chosen significance level (α). Power depends on three things, and understanding the relationship between them is one of the more practically useful things this book will teach you: * '''Sample size.''' Larger samples → more power, all else equal — a direct consequence of the shrinking standard error above. * '''Effect size.''' Larger true effects are easier to detect than subtle ones, for the same reason a shout is easier to hear across a noisy room than a whisper. * '''Alpha level.''' A more lenient α (say, 0.10 instead of 0.05) increases power, at the direct cost of a higher false-positive rate — there's no free lunch here, only a trade-off you're choosing explicitly or by default. Why does this matter, beyond study design? Because underpowered studies are a direct, well-documented contributor to the replication crisis from Chapter 1. A study with insufficient power to detect a real effect will, quite often, simply fail to find it — and even when it does find something "significant," an underpowered study's significant results tend to be exaggerated in size (a phenomenon sometimes called the "winner's curse"), because only the inflated, lucky estimates clear the significance bar in a noisy, underpowered sample. <syntaxhighlight lang="r"> library(pwr) pwr.t.test(d = 0.5, sig.level = 0.05, power = 0.80, type = "two.sample") pwr.chisq.test(w = 0.3, df = 1, sig.level = 0.05, power = 0.80) pwr.anova.test(k = 3, f = 0.25, sig.level = 0.05, power = 0.80) </syntaxhighlight> The <code>pwr</code> package<ref>Champely, S. ''pwr: Basic Functions for Power Analysis''. R package. https://CRAN.R-project.org/package=pwr</ref> implements these calculations using the effect-size conventions from Cohen (1988), cited above. Each of these functions solves for whatever argument you leave out — supply the effect size, significance level, and desired power, and <code>pwr</code> tells you the sample size a well-designed study would need. Supply the sample size instead, and it tells you the power you actually had. Here's the sociologist's practical takeaway, and it's a genuinely important one for how you'll read every GSS-based result in the rest of this book: with a GSS-sized sample (n > 1,500), you have enough statistical power to detect even ''tiny'' effects as "statistically significant." A study with 80% power to detect a medium effect is a well-designed study. A study so large it has 80% power to detect only a large effect is, in a specific sense, wasting its own sample size — and a study so large it can detect effects too small to matter at all is exactly why this book has insisted on effect sizes, alongside p-values, since Chapter 1. Power and effect size are two sides of the same coin, and Chapter 13 is where that coin gets spent. == Chapter Summary == Inferential statistics uses a sample to say something trustworthy about a population, and the sampling distribution — the theoretical distribution of a statistic (like the mean) computed across many hypothetical repeated samples — is the conceptual bridge that makes this possible. It's a genuinely confusing idea because it's a distribution of statistics, not of raw data, and simulation in R is one of the best ways to build real intuition for it. The Central Limit Theorem guarantees that this sampling distribution approaches normality as sample size grows, regardless of the shape of the original population — which is why so much of inferential statistics gets to lean on normal-distribution math. The standard error quantifies how much sample means vary from sample to sample, shrinking as sample size grows (though with diminishing returns, since it depends on the square root of n). Statistical power — the probability of detecting a real effect — depends on sample size, effect size, and alpha, and underpowered studies are a direct contributor to the replication crisis from Chapter 1. With a GSS-sized sample, power is rarely the limiting factor; the limiting factor is remembering that "statistically significant" and "big enough to matter" are different claims, a theme Chapter 13 picks up directly. == Practice Examples == === Example 1: Simulating a Sampling Distribution === '''The Research Question:''' What does the sampling distribution of the mean actually look like, built from real GSS data rather than just described in the abstract? '''The Code:''' <syntaxhighlight lang="r"> set.seed(42) sample_means <- replicate(1000, mean(sample(gss$AGE, size = 30, replace = TRUE), na.rm = TRUE)) hist(sample_means, main = "1,000 Simulated Sample Means (n = 30 each)", xlab = "Sample Mean Age") mean(sample_means) sd(sample_means) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 47.3 # mean of the sample means [1] 3.2 # SD of the sample means (this IS the simulated standard error) </syntaxhighlight> '''The Interpretation:''' The mean of the 1,000 simulated sample means lands close to the true sample mean of <code>AGE</code> in the full dataset — exactly what should happen, since the sampling distribution is centered on the population value it's estimating. The standard deviation of those 1,000 means (3.2) is the simulation's empirical estimate of the standard error, and it should closely match the formula-based calculation, <code>sd(gss$AGE, na.rm = TRUE) / sqrt(30)</code>, computed directly in the next example — two completely different routes to (approximately) the same number. '''Follow-Up Challenge:''' Rerun the simulation with a sample size of 100 instead of 30. How does the spread of the histogram change? Does the shape become more or less normal-looking? === Example 2: Standard Error and Sample Size === '''The Research Question:''' How, precisely, does standard error change as sample size increases? '''The Code:''' <syntaxhighlight lang="r"> s <- sd(gss$AGE, na.rm = TRUE) sample_sizes <- c(10, 30, 100, 500, 1500) se_values <- s / sqrt(sample_sizes) data.frame(n = sample_sizes, SE = round(se_values, 3)) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> n SE 1 10 5.470 2 30 3.158 3 100 1.730 4 500 0.773 5 1500 0.447 </syntaxhighlight> '''The Interpretation:''' Standard error drops sharply at first (going from n = 10 to n = 30) and then more gradually as sample size keeps climbing — the square root in the denominator means each additional respondent buys you less precision than the last. Going from 100 to 1,500 respondents (a 15-fold increase in sample size) only shrinks the standard error by about a factor of 4, not 15 — a concrete illustration of the diminishing-returns point made in the chapter text. '''Follow-Up Challenge:''' At what sample size does the standard error drop below 0.5? Solve for it algebraically first, then confirm with R. === Example 3: Sample Size Needed for 80% Power === '''The Research Question:''' How large a sample would a two-group comparison need to reliably detect a medium effect (Cohen's d = 0.5)? '''The Code:''' <syntaxhighlight lang="r"> library(pwr) pwr.t.test(d = 0.5, sig.level = 0.05, power = 0.80, type = "two.sample") </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Two-sample t test power calculation n = 63.77 d = 0.5 sig.level = 0.05 power = 0.8 alternative = two.sided </syntaxhighlight> '''The Interpretation:''' Roughly 64 respondents per group (about 128 total) would be needed for 80% power to detect a medium effect at the conventional α = 0.05. Compare that to the GSS's typical sample size of 1,500-plus: a GSS-based comparison is drastically overpowered for detecting medium effects, meaning it will reliably flag even quite small effects as statistically significant — which is exactly the setup for Chapter 13's central argument about why effect sizes have to accompany every p-value in this book. '''Follow-Up Challenge:''' Rerun the calculation for a small effect (d = 0.2) and a large effect (d = 0.8). How dramatically does the required sample size change? What does this tell you about the cost of trying to detect subtle effects with a modest sample? == References == <references/> f5wuy03liwpydy459tfgbxpajemqcqd 4656634 4656594 2026-08-07T15:02:29Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656634 wikitext text/x-wiki = Chapter 11: Sampling Distributions, Standard Error, and Statistical Power = Part III taught you to describe a sample. Part IV, starting here, teaches you to say something about the population that sample came from — and the entire logical structure that makes this possible rests on one concept that reliably confuses more students than anything else in an introductory statistics course. This chapter names that confusion directly, on purpose, and works through it slowly. If it takes you a couple of readings, you're in good company; it takes most people a couple of readings. == The Problem of Inference == You have a sample. You want to say something about a population you didn't fully observe. This is the entire problem '''inferential statistics''' exists to solve, and it's worth sitting with how strange the ambition actually is: you interviewed roughly 2,000 people, and you want to say something trustworthy about roughly 260 million. This only works because of how the sample was collected (recall Chapter 3's discussion of probability sampling) and because of the mathematical machinery this chapter introduces. == Sampling Variability == If you drew a different sample of 2,000 American adults tomorrow, you would not get exactly the same mean age, the same proportion identifying as "very happy," or the same anything. This is '''sampling variability''': different random samples from the same population produce different results, purely by chance, even when nothing about the underlying population has changed. This isn't a flaw in survey methodology — it's an unavoidable, quantifiable fact about drawing any sample smaller than the full population, and the entire logic of inference is built on being able to measure exactly how much variability to expect. == The Sampling Distribution of the Mean == Here's the genuinely strange idea at the center of this chapter: imagine drawing a huge number of different samples — say, 10,000 separate samples of 2,000 respondents each — from the same population, computing the mean of each one, and then looking at the ''distribution of those means''. That distribution — a distribution not of individual data points, but of a statistic computed from many different samples — is called the '''sampling distribution of the mean'''. Notice what makes this different from anything in Part III: every distribution you plotted in Chapters 7 through 10 was a distribution of raw data — individual respondents' ages, incomes, happiness scores. A sampling distribution is a distribution of ''sample means'', one value per hypothetical sample, not one value per respondent. This is the single most common point of confusion in the entire course, so it's worth restating plainly: you are not looking at data anymore. You are looking at a distribution of a statistic computed repeatedly across imaginary repeated samples. You never actually collect those 10,000 samples in real research — you have exactly one sample, the one you actually gathered. The sampling distribution is a theoretical construct: what ''would'' happen, across many hypothetical samples, if you kept repeating your study. It's a strange thing to reason about precisely because it isn't something you directly observe. R lets you build genuine intuition for it anyway, through simulation: <syntaxhighlight lang="r"> set.seed(42) sample_means <- replicate(1000, mean(sample(gss$AGE, size = 30, replace = TRUE), na.rm = TRUE)) hist(sample_means, main = "Simulated Sampling Distribution of the Mean (n = 30)", xlab = "Sample Mean Age") </syntaxhighlight> This code draws 1,000 different samples of 30 respondents each (with replacement, simulating what repeated independent sampling would look like), computes the mean age in each one, and plots the distribution of those 1,000 means. Run it, and you'll see something that looks conspicuously like a normal distribution — even though the underlying <code>AGE</code> variable itself is not perfectly normal (recall Chapter 10's discussion of its mild right skew). <!-- FIGURE: A histogram of the simulated sampling distribution from the code above, run on real 2010 GSS AGE data, ideally shown alongside the raw AGE histogram from Chapter 10 for direct visual comparison. Author to generate. --> == The Central Limit Theorem == That's not a coincidence — it's one of the most useful results in all of statistics, the '''Central Limit Theorem''' (CLT): regardless of the shape of the original population distribution, the sampling distribution of the mean approaches a normal distribution as sample size increases, provided the sample size is reasonably large (a common rule of thumb is n ≥ 30, though the exact threshold depends on how non-normal the original population is). No matter how weird your population distribution looks — even something as aggressively right-skewed as income — sample enough from it, and the sampling distribution of the mean will be approximately normal. This is either deeply reassuring or deeply suspicious, depending on your disposition. This book won't prove the CLT (that's a semester of mathematical statistics in its own right); it will simply demonstrate it, repeatedly, and trust that watching it happen in simulation builds more real understanding than watching it get proven on a chalkboard. The CLT is the reason virtually every technique in the rest of this book — confidence intervals, t-tests, and beyond — is allowed to lean on normal-distribution math even when the underlying data obviously isn't normal. The data doesn't need to be normal. The sampling distribution of the ''statistic'' does, and the CLT is what delivers that, given enough data. == Standard Error == The '''standard error''' (SE) is the standard deviation of the sampling distribution — a measure of how much sample means bounce around from sample to sample. For the sampling distribution of the mean: : <math>SE = \frac{\sigma}{\sqrt{n}}</math> where σ is the population standard deviation (in practice, usually estimated with the sample standard deviation) and n is the sample size. Notice what's in the denominator: as ''n'' increases, the standard error shrinks — larger samples produce more consistent, less variable estimates of the population mean, which matches basic intuition (a poll of 10,000 people should be more stable than a poll of 10 people) with an actual formula behind it. <syntaxhighlight lang="r"> s <- sd(gss$AGE, na.rm = TRUE) n <- sum(!is.na(gss$AGE)) se <- s / sqrt(n) se </syntaxhighlight> '''Watch SE shrink as n grows:''' <syntaxhighlight lang="r"> sapply(c(10, 30, 100, 1000), function(n) s / sqrt(n)) </syntaxhighlight> This is worth internalizing as a genuine mathematical fact, not just a vague notion: because ''n'' is under a square root, quadrupling your sample size only cuts your standard error in half. Diminishing returns set in early — doubling an already-large GSS-sized sample buys you noticeably less precision than doubling a small pilot study would. == Statistical Power == '''Statistical power'''<ref>Cohen, J. (1988). ''Statistical Power Analysis for the Behavioral Sciences'' (2nd ed.). Lawrence Erlbaum Associates.</ref> is the probability of detecting a real effect, if one genuinely exists in the population, given your study's sample size, effect size, and chosen significance level (α). Power depends on three things, and understanding the relationship between them is one of the more practically useful things this book will teach you: * '''Sample size.''' Larger samples → more power, all else equal — a direct consequence of the shrinking standard error above. * '''Effect size.''' Larger true effects are easier to detect than subtle ones, for the same reason a shout is easier to hear across a noisy room than a whisper. * '''Alpha level.''' A more lenient α (say, 0.10 instead of 0.05) increases power, at the direct cost of a higher false-positive rate — there's no free lunch here, only a trade-off you're choosing explicitly or by default. Why does this matter, beyond study design? Because underpowered studies are a direct, well-documented contributor to the replication crisis from Chapter 1. A study with insufficient power to detect a real effect will, quite often, simply fail to find it — and even when it does find something "significant," an underpowered study's significant results tend to be exaggerated in size (a phenomenon sometimes called the "winner's curse"), because only the inflated, lucky estimates clear the significance bar in a noisy, underpowered sample. <syntaxhighlight lang="r"> library(pwr) pwr.t.test(d = 0.5, sig.level = 0.05, power = 0.80, type = "two.sample") pwr.chisq.test(w = 0.3, df = 1, sig.level = 0.05, power = 0.80) pwr.anova.test(k = 3, f = 0.25, sig.level = 0.05, power = 0.80) </syntaxhighlight> The <code>pwr</code> package<ref>Champely, S. ''pwr: Basic Functions for Power Analysis''. R package. https://CRAN.R-project.org/package=pwr</ref> implements these calculations using the effect-size conventions from Cohen (1988), cited above. Each of these functions solves for whatever argument you leave out — supply the effect size, significance level, and desired power, and <code>pwr</code> tells you the sample size a well-designed study would need. Supply the sample size instead, and it tells you the power you actually had. Here's the sociologist's practical takeaway, and it's a genuinely important one for how you'll read every GSS-based result in the rest of this book: with a GSS-sized sample (n > 1,500), you have enough statistical power to detect even ''tiny'' effects as "statistically significant." A study with 80% power to detect a medium effect is a well-designed study. A study so large it has 80% power to detect only a large effect is, in a specific sense, wasting its own sample size — and a study so large it can detect effects too small to matter at all is exactly why this book has insisted on effect sizes, alongside p-values, since Chapter 1. Power and effect size are two sides of the same coin, and Chapter 13 is where that coin gets spent. == Chapter Summary == Inferential statistics uses a sample to say something trustworthy about a population, and the sampling distribution — the theoretical distribution of a statistic (like the mean) computed across many hypothetical repeated samples — is the conceptual bridge that makes this possible. It's a genuinely confusing idea because it's a distribution of statistics, not of raw data, and simulation in R is one of the best ways to build real intuition for it. The Central Limit Theorem guarantees that this sampling distribution approaches normality as sample size grows, regardless of the shape of the original population — which is why so much of inferential statistics gets to lean on normal-distribution math. The standard error quantifies how much sample means vary from sample to sample, shrinking as sample size grows (though with diminishing returns, since it depends on the square root of n). Statistical power — the probability of detecting a real effect — depends on sample size, effect size, and alpha, and underpowered studies are a direct contributor to the replication crisis from Chapter 1. With a GSS-sized sample, power is rarely the limiting factor; the limiting factor is remembering that "statistically significant" and "big enough to matter" are different claims, a theme Chapter 13 picks up directly. == Practice Examples == === Example 1: Simulating a Sampling Distribution === '''The Research Question:''' What does the sampling distribution of the mean actually look like, built from real GSS data rather than just described in the abstract? '''The Code:''' <syntaxhighlight lang="r"> set.seed(42) sample_means <- replicate(1000, mean(sample(gss$AGE, size = 30, replace = TRUE), na.rm = TRUE)) hist(sample_means, main = "1,000 Simulated Sample Means (n = 30 each)", xlab = "Sample Mean Age") mean(sample_means) sd(sample_means) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> [1] 47.3 # mean of the sample means [1] 3.2 # SD of the sample means (this IS the simulated standard error) </syntaxhighlight> '''The Interpretation:''' The mean of the 1,000 simulated sample means lands close to the true sample mean of <code>AGE</code> in the full dataset — exactly what should happen, since the sampling distribution is centered on the population value it's estimating. The standard deviation of those 1,000 means (3.2) is the simulation's empirical estimate of the standard error, and it should closely match the formula-based calculation, <code>sd(gss$AGE, na.rm = TRUE) / sqrt(30)</code>, computed directly in the next example — two completely different routes to (approximately) the same number. '''Follow-Up Challenge:''' Rerun the simulation with a sample size of 100 instead of 30. How does the spread of the histogram change? Does the shape become more or less normal-looking? === Example 2: Standard Error and Sample Size === '''The Research Question:''' How, precisely, does standard error change as sample size increases? '''The Code:''' <syntaxhighlight lang="r"> s <- sd(gss$AGE, na.rm = TRUE) sample_sizes <- c(10, 30, 100, 500, 1500) se_values <- s / sqrt(sample_sizes) data.frame(n = sample_sizes, SE = round(se_values, 3)) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> n SE 1 10 5.470 2 30 3.158 3 100 1.730 4 500 0.773 5 1500 0.447 </syntaxhighlight> '''The Interpretation:''' Standard error drops sharply at first (going from n = 10 to n = 30) and then more gradually as sample size keeps climbing — the square root in the denominator means each additional respondent buys you less precision than the last. Going from 100 to 1,500 respondents (a 15-fold increase in sample size) only shrinks the standard error by about a factor of 4, not 15 — a concrete illustration of the diminishing-returns point made in the chapter text. '''Follow-Up Challenge:''' At what sample size does the standard error drop below 0.5? Solve for it algebraically first, then confirm with R. === Example 3: Sample Size Needed for 80% Power === '''The Research Question:''' How large a sample would a two-group comparison need to reliably detect a medium effect (Cohen's d = 0.5)? '''The Code:''' <syntaxhighlight lang="r"> library(pwr) pwr.t.test(d = 0.5, sig.level = 0.05, power = 0.80, type = "two.sample") </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Two-sample t test power calculation n = 63.77 d = 0.5 sig.level = 0.05 power = 0.8 alternative = two.sided </syntaxhighlight> '''The Interpretation:''' Roughly 64 respondents per group (about 128 total) would be needed for 80% power to detect a medium effect at the conventional α = 0.05. Compare that to the GSS's typical sample size of 1,500-plus: a GSS-based comparison is drastically overpowered for detecting medium effects, meaning it will reliably flag even quite small effects as statistically significant — which is exactly the setup for Chapter 13's central argument about why effect sizes have to accompany every p-value in this book. '''Follow-Up Challenge:''' Rerun the calculation for a small effect (d = 0.2) and a large effect (d = 0.8). How dramatically does the required sample size change? What does this tell you about the cost of trying to detect subtle effects with a modest sample? == References == <references/> {{BookCat}} ke5zmjof2tg5tuoupanvngj383uisgh Statistics for Sociologists/Chapter 12: Confidence Intervals 0 485153 4656595 2026-08-07T14:11:12Z Rcragun 41177 first draft 4656595 wikitext text/x-wiki = Chapter 12: Confidence Intervals = Chapters 10 and 11 built two pieces of machinery — the normal distribution and the standard error — that this chapter finally puts to practical use. A confidence interval is the first genuinely useful ''product'' of inferential statistics: not just a single number claiming to be "the" population mean, but an honest range that acknowledges you're estimating from a sample and quantifies exactly how much uncertainty that estimation carries. == What a Confidence Interval Is (and Is Not) == Here's the misconception first, because it's the one nearly everyone arrives with: a 95% confidence interval<ref>Neyman, J. (1937). Outline of a theory of statistical estimation based on the classical theory of probability. ''Philosophical Transactions of the Royal Society of London. Series A'', 236(767), 333–380.</ref> does '''not''' mean "there is a 95% probability the true population value falls inside this specific interval." That sounds like it should be true. It is not what a confidence interval claims. The correct interpretation is more roundabout: if you repeated your study many times, drawing a new sample and constructing a new 95% confidence interval each time, approximately 95% of those intervals — across all those hypothetical repetitions — would contain the true population value. Any ''one'' interval, the one you actually calculated from your actual sample, either does or doesn't contain the true value; there's no probability left to assign to it once it's calculated, any more than a coin already lying heads-up on the table has a "50% chance" of being heads. If you find this confusing, you are paying attention. This distinction trips up working researchers, not just students, and the honest thing to do is name that difficulty rather than paper over it with a simpler-sounding but wrong explanation. A useful analogy: a confidence interval is like a fishing net. You're not certain the fish (the true population parameter) is in any particular net you cast, but you know that 95% of nets cast the way yours was will, in fact, catch the fish. The confidence level describes the reliability of the ''method'', across repeated use — not your certainty about this one specific result. == Confidence Interval for a Mean == The general form of a confidence interval is: : <math>\bar{x} \pm (\text{critical value}) \times SE</math> For large samples, the critical value comes from the normal distribution (commonly written z*); for smaller samples, it comes from the '''t-distribution''' (t*), which is slightly wider — more conservative — to account for the extra uncertainty of estimating the population standard deviation from a small sample rather than knowing it outright. The quantity (critical value) × SE is called the '''margin of error''' — the "plus or minus" you see attached to any properly reported poll result. Three things affect a confidence interval's width, and each one makes intuitive sense once you say it out loud: a higher confidence level (99% instead of 95%) widens the interval, because being more certain requires casting a wider net; a larger sample size narrows it, because standard error shrinks with n (Chapter 11); and more variability in the underlying data widens it, because a noisier population is harder to pin down precisely regardless of sample size. == Confidence Intervals in R == The single easiest way to get a confidence interval in R is to ask for something else and receive one as a side effect: <syntaxhighlight lang="r"> t.test(gss$EDUC) </syntaxhighlight> <code>t.test()</code>, run on a single vector with no comparison group, returns a one-sample t-test — but its output includes a 95% confidence interval for the mean by default, which is very often the part of the output you actually came for. '''The manual calculation, for comparison (and for understanding what <code>t.test()</code> is doing under the hood):''' <syntaxhighlight lang="r"> x_bar <- mean(gss$EDUC, na.rm = TRUE) s <- sd(gss$EDUC, na.rm = TRUE) n <- sum(!is.na(gss$EDUC)) se <- s / sqrt(n) t_star <- qt(0.975, df = n - 1) # the t critical value for a 95% CI lower <- x_bar - t_star * se upper <- x_bar + t_star * se c(lower, upper) </syntaxhighlight> Note <code>qt(0.975, ...)</code> rather than <code>0.95</code> — a 95% confidence interval splits the remaining 5% evenly between the two tails, 2.5% on each side, which is why the critical value comes from the 97.5th percentile of the t-distribution rather than the 95th. The <code>df = n - 1</code> should look familiar from Chapter 9's Sudoku explanation of degrees of freedom: calculating <code>x_bar</code> first spends one degree of freedom, leaving ''n'' − 1 for everything downstream, including the shape of the t-distribution used here. == Visualizing Confidence Intervals == Error bars are the standard way to show a confidence interval visually — a point for the estimate, with a line extending above and below to the interval's bounds. <syntaxhighlight lang="r"> library(dplyr) library(ggplot2) ci_by_sex <- gss %>% group_by(SEX) %>% summarize( mean_age = mean(AGE, na.rm = TRUE), se = sd(AGE, na.rm = TRUE) / sqrt(sum(!is.na(AGE))), lower = mean_age - 1.96 * se, upper = mean_age + 1.96 * se ) ggplot(ci_by_sex, aes(x = factor(SEX), y = mean_age)) + geom_point(size = 3) + geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.2) + labs(title = "Mean Age by Sex, with 95% Confidence Intervals", x = "Sex", y = "Mean Age") </syntaxhighlight> <!-- FIGURE: A real error-bar plot of mean AGE by SEX with 95% CIs, generated from 2010 GSS data, illustrating both the point estimates and how much (or little) their intervals overlap. Author to generate. --> A genuinely useful habit worth building right now: when comparing two groups, look at whether their confidence intervals overlap. Widely separated, non-overlapping intervals are a strong visual hint of a real difference; heavily overlapping intervals suggest the groups may not differ meaningfully at all. This is an informal preview of Chapter 13's t-test — the formal version of exactly this comparison. == Confidence Intervals vs. Hypothesis Tests: A Preview == Confidence intervals and hypothesis tests (Chapter 13) are two views of the same underlying logic, and they will always agree with each other when applied consistently: if a 95% confidence interval for a difference between two groups does not contain zero, a hypothesis test on that same difference will reject the null hypothesis at α = 0.05, every time, by mathematical necessity rather than coincidence. Many working researchers actually prefer reporting confidence intervals over bare p-values for exactly this reason — a CI gives you the significance test's conclusion ''and'' a sense of the estimate's precision and plausible range, in one number instead of two. == Practical Significance Revisited == A confidence interval entirely above zero (or entirely below it) tells you the same directional story a significant p-value would — but it tells you more. It tells you the ''range'' of plausible effect sizes consistent with your data. A CI of [0.5, 12.3] and a CI of [4.8, 5.2] might both exclude zero and both count as "statistically significant," but they are telling very different stories about how precisely you've pinned down the true effect, and about how large that effect plausibly is. This is the same theme this book has returned to since Chapter 1: significance answers "is something going on here?"; the confidence interval, like the effect size, starts to answer "how much, and how sure are we?" == Chapter Summary == A confidence interval provides a range of plausible values for a population parameter, built from a sample estimate plus or minus a margin of error. The correct interpretation is about the reliability of the ''method'' across repeated sampling (95% of intervals built this way will contain the true value), not a probability statement about any one specific interval — a genuinely counterintuitive distinction worth sitting with rather than glossing over. Confidence interval width depends on confidence level, sample size, and underlying variability, and R's <code>t.test()</code> returns a 95% CI by default alongside its hypothesis test output. Visualizing CIs with error bars makes group comparisons intuitive, and non-overlapping intervals are an informal preview of statistical significance, formalized properly in Chapter 13. A confidence interval that excludes zero carries the same directional information as a significant p-value, plus something a p-value alone cannot offer: a sense of how large the effect plausibly is, and how precisely it's been estimated. == Practice Examples == === Example 1: 95% CI for Mean EDUC === '''The Research Question:''' What is a plausible range for the true population mean of years of education, based on this sample? '''The Code:''' <syntaxhighlight lang="r"> t.test(gss$EDUC) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> One Sample t-test data: gss$EDUC t = 210.4, df = 2019, p-value < 2.2e-16 95 percent confidence interval: 13.55 13.81 sample estimates: mean of x 13.68 </syntaxhighlight> '''The Interpretation:''' We're 95% confident, in the repeated-sampling sense described earlier in this chapter, that the true population mean years of education for U.S. adults (circa 2010) falls between 13.55 and 13.81 years. Notice how narrow this interval is — a direct consequence of the GSS's large sample size, per Chapter 11's discussion of standard error shrinking with n. A smaller survey estimating the same quantity would produce a noticeably wider, less precise interval. '''Follow-Up Challenge:''' Compute the margin of error directly (half the interval's width). How does it compare to 1.96 times the standard error you'd calculate manually? Should they match closely? === Example 2: CIs for Mean AGE by SEX, With Error Bars === '''The Research Question:''' Do men and women in the sample have meaningfully different average ages, based on whether their confidence intervals overlap? '''The Code:''' <syntaxhighlight lang="r"> library(dplyr) library(ggplot2) ci_by_sex <- gss %>% group_by(SEX) %>% summarize( mean_age = mean(AGE, na.rm = TRUE), se = sd(AGE, na.rm = TRUE) / sqrt(sum(!is.na(AGE))), lower = mean_age - 1.96 * se, upper = mean_age + 1.96 * se ) ci_by_sex ggplot(ci_by_sex, aes(x = factor(SEX), y = mean_age)) + geom_point(size = 3) + geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.2) + labs(title = "Mean Age by Sex, 95% CI", x = "Sex", y = "Mean Age") </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> SEX mean_age se lower upper 1 1 46.1 0.45 45.22 46.98 2 2 47.6 0.42 46.78 48.42 </syntaxhighlight> '''The Interpretation:''' The two confidence intervals overlap substantially (45.22–46.98 versus 46.78–48.42), which suggests any difference in average age between men and women in this sample, if real at all, is small relative to the uncertainty in both estimates. This is an informal read; Chapter 13's independent-samples t-test will give you a formal answer to the same question. '''Follow-Up Challenge:''' Compute the same comparison for <code>EDUC</code> by <code>SEX</code> instead of <code>AGE</code>. Do those intervals overlap as much, or does one group's interval sit clearly apart from the other's? === Example 3: Changing the Confidence Level === '''The Research Question:''' How does the width of a confidence interval change as you demand more or less confidence? '''The Code:''' <syntaxhighlight lang="r"> t.test(gss$EDUC, conf.level = 0.90) t.test(gss$EDUC, conf.level = 0.95) t.test(gss$EDUC, conf.level = 0.99) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> 90 percent CI: 13.58 13.78 95 percent CI: 13.55 13.81 99 percent CI: 13.49 13.87 </syntaxhighlight> '''The Interpretation:''' Moving from 90% to 99% confidence widens the interval at both ends — you're demanding a net that catches the true value more reliably across repeated sampling, and a more reliable net has to be wider. There is no free lunch here: more confidence always costs precision, for a fixed sample size. The only way to get both more confidence and a narrower interval simultaneously is a larger sample, which is exactly the tension every study designer has to navigate. '''Follow-Up Challenge:''' Predict, before running the code, whether an 80% confidence interval would be narrower or wider than the 90% one above. Confirm your prediction with <code>conf.level = 0.80</code>. == References == <references/> 57txlt1m3r9esaf58xawleig33bb9kp 4656633 4656595 2026-08-07T15:02:25Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656633 wikitext text/x-wiki = Chapter 12: Confidence Intervals = Chapters 10 and 11 built two pieces of machinery — the normal distribution and the standard error — that this chapter finally puts to practical use. A confidence interval is the first genuinely useful ''product'' of inferential statistics: not just a single number claiming to be "the" population mean, but an honest range that acknowledges you're estimating from a sample and quantifies exactly how much uncertainty that estimation carries. == What a Confidence Interval Is (and Is Not) == Here's the misconception first, because it's the one nearly everyone arrives with: a 95% confidence interval<ref>Neyman, J. (1937). Outline of a theory of statistical estimation based on the classical theory of probability. ''Philosophical Transactions of the Royal Society of London. Series A'', 236(767), 333–380.</ref> does '''not''' mean "there is a 95% probability the true population value falls inside this specific interval." That sounds like it should be true. It is not what a confidence interval claims. The correct interpretation is more roundabout: if you repeated your study many times, drawing a new sample and constructing a new 95% confidence interval each time, approximately 95% of those intervals — across all those hypothetical repetitions — would contain the true population value. Any ''one'' interval, the one you actually calculated from your actual sample, either does or doesn't contain the true value; there's no probability left to assign to it once it's calculated, any more than a coin already lying heads-up on the table has a "50% chance" of being heads. If you find this confusing, you are paying attention. This distinction trips up working researchers, not just students, and the honest thing to do is name that difficulty rather than paper over it with a simpler-sounding but wrong explanation. A useful analogy: a confidence interval is like a fishing net. You're not certain the fish (the true population parameter) is in any particular net you cast, but you know that 95% of nets cast the way yours was will, in fact, catch the fish. The confidence level describes the reliability of the ''method'', across repeated use — not your certainty about this one specific result. == Confidence Interval for a Mean == The general form of a confidence interval is: : <math>\bar{x} \pm (\text{critical value}) \times SE</math> For large samples, the critical value comes from the normal distribution (commonly written z*); for smaller samples, it comes from the '''t-distribution''' (t*), which is slightly wider — more conservative — to account for the extra uncertainty of estimating the population standard deviation from a small sample rather than knowing it outright. The quantity (critical value) × SE is called the '''margin of error''' — the "plus or minus" you see attached to any properly reported poll result. Three things affect a confidence interval's width, and each one makes intuitive sense once you say it out loud: a higher confidence level (99% instead of 95%) widens the interval, because being more certain requires casting a wider net; a larger sample size narrows it, because standard error shrinks with n (Chapter 11); and more variability in the underlying data widens it, because a noisier population is harder to pin down precisely regardless of sample size. == Confidence Intervals in R == The single easiest way to get a confidence interval in R is to ask for something else and receive one as a side effect: <syntaxhighlight lang="r"> t.test(gss$EDUC) </syntaxhighlight> <code>t.test()</code>, run on a single vector with no comparison group, returns a one-sample t-test — but its output includes a 95% confidence interval for the mean by default, which is very often the part of the output you actually came for. '''The manual calculation, for comparison (and for understanding what <code>t.test()</code> is doing under the hood):''' <syntaxhighlight lang="r"> x_bar <- mean(gss$EDUC, na.rm = TRUE) s <- sd(gss$EDUC, na.rm = TRUE) n <- sum(!is.na(gss$EDUC)) se <- s / sqrt(n) t_star <- qt(0.975, df = n - 1) # the t critical value for a 95% CI lower <- x_bar - t_star * se upper <- x_bar + t_star * se c(lower, upper) </syntaxhighlight> Note <code>qt(0.975, ...)</code> rather than <code>0.95</code> — a 95% confidence interval splits the remaining 5% evenly between the two tails, 2.5% on each side, which is why the critical value comes from the 97.5th percentile of the t-distribution rather than the 95th. The <code>df = n - 1</code> should look familiar from Chapter 9's Sudoku explanation of degrees of freedom: calculating <code>x_bar</code> first spends one degree of freedom, leaving ''n'' − 1 for everything downstream, including the shape of the t-distribution used here. == Visualizing Confidence Intervals == Error bars are the standard way to show a confidence interval visually — a point for the estimate, with a line extending above and below to the interval's bounds. <syntaxhighlight lang="r"> library(dplyr) library(ggplot2) ci_by_sex <- gss %>% group_by(SEX) %>% summarize( mean_age = mean(AGE, na.rm = TRUE), se = sd(AGE, na.rm = TRUE) / sqrt(sum(!is.na(AGE))), lower = mean_age - 1.96 * se, upper = mean_age + 1.96 * se ) ggplot(ci_by_sex, aes(x = factor(SEX), y = mean_age)) + geom_point(size = 3) + geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.2) + labs(title = "Mean Age by Sex, with 95% Confidence Intervals", x = "Sex", y = "Mean Age") </syntaxhighlight> <!-- FIGURE: A real error-bar plot of mean AGE by SEX with 95% CIs, generated from 2010 GSS data, illustrating both the point estimates and how much (or little) their intervals overlap. Author to generate. --> A genuinely useful habit worth building right now: when comparing two groups, look at whether their confidence intervals overlap. Widely separated, non-overlapping intervals are a strong visual hint of a real difference; heavily overlapping intervals suggest the groups may not differ meaningfully at all. This is an informal preview of Chapter 13's t-test — the formal version of exactly this comparison. == Confidence Intervals vs. Hypothesis Tests: A Preview == Confidence intervals and hypothesis tests (Chapter 13) are two views of the same underlying logic, and they will always agree with each other when applied consistently: if a 95% confidence interval for a difference between two groups does not contain zero, a hypothesis test on that same difference will reject the null hypothesis at α = 0.05, every time, by mathematical necessity rather than coincidence. Many working researchers actually prefer reporting confidence intervals over bare p-values for exactly this reason — a CI gives you the significance test's conclusion ''and'' a sense of the estimate's precision and plausible range, in one number instead of two. == Practical Significance Revisited == A confidence interval entirely above zero (or entirely below it) tells you the same directional story a significant p-value would — but it tells you more. It tells you the ''range'' of plausible effect sizes consistent with your data. A CI of [0.5, 12.3] and a CI of [4.8, 5.2] might both exclude zero and both count as "statistically significant," but they are telling very different stories about how precisely you've pinned down the true effect, and about how large that effect plausibly is. This is the same theme this book has returned to since Chapter 1: significance answers "is something going on here?"; the confidence interval, like the effect size, starts to answer "how much, and how sure are we?" == Chapter Summary == A confidence interval provides a range of plausible values for a population parameter, built from a sample estimate plus or minus a margin of error. The correct interpretation is about the reliability of the ''method'' across repeated sampling (95% of intervals built this way will contain the true value), not a probability statement about any one specific interval — a genuinely counterintuitive distinction worth sitting with rather than glossing over. Confidence interval width depends on confidence level, sample size, and underlying variability, and R's <code>t.test()</code> returns a 95% CI by default alongside its hypothesis test output. Visualizing CIs with error bars makes group comparisons intuitive, and non-overlapping intervals are an informal preview of statistical significance, formalized properly in Chapter 13. A confidence interval that excludes zero carries the same directional information as a significant p-value, plus something a p-value alone cannot offer: a sense of how large the effect plausibly is, and how precisely it's been estimated. == Practice Examples == === Example 1: 95% CI for Mean EDUC === '''The Research Question:''' What is a plausible range for the true population mean of years of education, based on this sample? '''The Code:''' <syntaxhighlight lang="r"> t.test(gss$EDUC) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> One Sample t-test data: gss$EDUC t = 210.4, df = 2019, p-value < 2.2e-16 95 percent confidence interval: 13.55 13.81 sample estimates: mean of x 13.68 </syntaxhighlight> '''The Interpretation:''' We're 95% confident, in the repeated-sampling sense described earlier in this chapter, that the true population mean years of education for U.S. adults (circa 2010) falls between 13.55 and 13.81 years. Notice how narrow this interval is — a direct consequence of the GSS's large sample size, per Chapter 11's discussion of standard error shrinking with n. A smaller survey estimating the same quantity would produce a noticeably wider, less precise interval. '''Follow-Up Challenge:''' Compute the margin of error directly (half the interval's width). How does it compare to 1.96 times the standard error you'd calculate manually? Should they match closely? === Example 2: CIs for Mean AGE by SEX, With Error Bars === '''The Research Question:''' Do men and women in the sample have meaningfully different average ages, based on whether their confidence intervals overlap? '''The Code:''' <syntaxhighlight lang="r"> library(dplyr) library(ggplot2) ci_by_sex <- gss %>% group_by(SEX) %>% summarize( mean_age = mean(AGE, na.rm = TRUE), se = sd(AGE, na.rm = TRUE) / sqrt(sum(!is.na(AGE))), lower = mean_age - 1.96 * se, upper = mean_age + 1.96 * se ) ci_by_sex ggplot(ci_by_sex, aes(x = factor(SEX), y = mean_age)) + geom_point(size = 3) + geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.2) + labs(title = "Mean Age by Sex, 95% CI", x = "Sex", y = "Mean Age") </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> SEX mean_age se lower upper 1 1 46.1 0.45 45.22 46.98 2 2 47.6 0.42 46.78 48.42 </syntaxhighlight> '''The Interpretation:''' The two confidence intervals overlap substantially (45.22–46.98 versus 46.78–48.42), which suggests any difference in average age between men and women in this sample, if real at all, is small relative to the uncertainty in both estimates. This is an informal read; Chapter 13's independent-samples t-test will give you a formal answer to the same question. '''Follow-Up Challenge:''' Compute the same comparison for <code>EDUC</code> by <code>SEX</code> instead of <code>AGE</code>. Do those intervals overlap as much, or does one group's interval sit clearly apart from the other's? === Example 3: Changing the Confidence Level === '''The Research Question:''' How does the width of a confidence interval change as you demand more or less confidence? '''The Code:''' <syntaxhighlight lang="r"> t.test(gss$EDUC, conf.level = 0.90) t.test(gss$EDUC, conf.level = 0.95) t.test(gss$EDUC, conf.level = 0.99) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> 90 percent CI: 13.58 13.78 95 percent CI: 13.55 13.81 99 percent CI: 13.49 13.87 </syntaxhighlight> '''The Interpretation:''' Moving from 90% to 99% confidence widens the interval at both ends — you're demanding a net that catches the true value more reliably across repeated sampling, and a more reliable net has to be wider. There is no free lunch here: more confidence always costs precision, for a fixed sample size. The only way to get both more confidence and a narrower interval simultaneously is a larger sample, which is exactly the tension every study designer has to navigate. '''Follow-Up Challenge:''' Predict, before running the code, whether an 80% confidence interval would be narrower or wider than the 90% one above. Confirm your prediction with <code>conf.level = 0.80</code>. == References == <references/> {{BookCat}} myuq1ln2qoqvp7b2ay508pp7nmyhw6h Statistics for Sociologists/Chapter 13: Hypothesis Testing, t-Tests, and Effect Sizes 0 485154 4656596 2026-08-07T14:11:53Z Rcragun 41177 first draft 4656596 wikitext text/x-wiki = Chapter 13: Hypothesis Testing, t-Tests, and Effect Sizes = Every inferential technique for the rest of this book follows the same basic logic, and this chapter introduces that logic and its first real application at the same time, on purpose — hypothesis testing stays grounded when it's attached to an actual question about actual people, instead of floating free as an abstract procedure you memorize and then forget. The question here: do two groups actually differ, or does it just look that way in this particular sample? == The Logic of Hypothesis Testing == Every hypothesis test starts with two competing claims. The '''null hypothesis''' (H₀) is the boring one: no difference, no relationship, nothing going on. The '''alternative hypothesis''' (H₁) is the interesting one: there is a difference, a relationship, something happening. The entire logic of the test is built around the null hypothesis as a kind of straw man — you assume, for the sake of argument, that nothing is going on, and then ask whether your actual data are surprising under that assumption. If the data would be quite unlikely if the null were really true, that's evidence against the null. If the data look perfectly ordinary under the null, you have no particular reason to abandon it. This setup creates two distinct ways to be wrong. A '''Type I error''' (false positive) means rejecting a true null hypothesis — concluding something is going on when it isn't. A '''Type II error''' (false negative) means failing to reject a false null hypothesis — missing a real effect that's actually there (this is precisely what low statistical power, from Chapter 11, makes more likely). Every hypothesis test involves a trade-off between these two error types, and no test eliminates either one entirely. The '''p-value''' is the probability of observing data this extreme (or more extreme) if the null hypothesis were actually true. Read that definition again, because it is not the definition most people carry around in their heads. A p-value of 0.04 does not mean there is a 4% chance you're wrong, or a 4% chance the null hypothesis is true. It means that if the null hypothesis were true, you'd see data this extreme (or more so) about 4% of the time. These are not the same claim. One of them is useful. '''Choosing alpha (α)''' — the threshold below which you'll call a result "statistically significant" — is a decision, not a law of nature. The conventional α = 0.05 is exactly that: a convention, inherited largely from mid-20th-century agricultural statistics, not a principled cutoff between "real" and "not real." Some fields use stricter thresholds; nothing stops you from justifying a different one, provided you say so upfront rather than after seeing your results. Finally: nearly every test in this book is '''two-tailed''' — testing for a difference in either direction, rather than committing in advance to only one direction. One-tailed tests exist and are occasionally defensible, but they're easy to misuse (a one-tailed test that happens to point the "right" way after the fact is a classic, quiet form of p-hacking), so this book defaults to two-tailed testing throughout, and you should have a strong, pre-specified reason before doing otherwise. == t-Tests == A '''t-test'''<ref>Student [Gosset, W. S.] (1908). The probable error of a mean. ''Biometrika'', 6(1), 1–25.</ref> compares means, and comes in a few varieties depending on your research design: * '''One-sample t-test''' — is this sample's mean different from a specific known value? * '''Independent samples t-test''' — do two separate, unrelated groups differ in their means? * '''Paired samples t-test''' — do the same respondents differ across two related measurements (before/after, spouse/spouse)? This book mentions it here for completeness but doesn't dwell on it, since GSS's cross-sectional design rarely produces natural pairs. For a one-sample t-test, the test statistic has a familiar shape — it's a z-score (Chapter 10) built from a sample mean instead of a single raw value, using the standard error (Chapter 11) instead of the population standard deviation: : <math>t = \frac{\bar{x} - \mu_0}{SE}</math> where μ₀ is the value you're testing against (the scale midpoint, a known population value, whatever your null hypothesis specifies). The independent-samples version follows the same basic logic — a difference between two group means, divided by the standard error of that difference — with a somewhat messier formula this book won't reproduce in full, since R computes it for you and the conceptual picture is what matters. Every t-test result also reports degrees of freedom. A one-sample t-test has ''df'' = ''n'' − 1, for exactly the reason Chapter 9's Sudoku explanation laid out: calculating the sample mean spends one degree of freedom, leaving ''n'' − 1 values genuinely free to vary. An independent-samples t-test spends one degree of freedom per group, for roughly ''df'' = ''n''₁ + ''n''₂ − 2 (Welch's version, which this book uses by default, adjusts this further to account for unequal variances, which is why you'll often see a non-integer df like 2017.3 in R's output rather than a clean whole number). t-tests carry assumptions — approximate normality (fairly robust to violation with large samples, per the Central Limit Theorem from Chapter 11), equal variances between groups (for the independent-samples version), and independence of observations. That second assumption, equal variances, is handled automatically in R by default: '''Welch's t-test'''<ref>Welch, B. L. (1947). The generalization of "Student's" problem when several different population variances are involved. ''Biometrika'', 34(1/2), 28–35.</ref>, which does not assume equal variances between groups, is R's default (<code>var.equal = FALSE</code>), and this book follows that default throughout rather than the classic Student's t-test, which does assume equal variances and is consequently a bit more fragile. <syntaxhighlight lang="r"> # One-sample t-test: is mean HAPPY different from the scale midpoint (2)? t.test(gss$HAPPY, mu = 2) # Independent-samples t-test: does EDUC differ by SEX? (Welch's by default) t.test(EDUC ~ SEX, data = gss) # Explicit about Welch's vs. Student's, for clarity: t.test(EDUC ~ SEX, data = gss, var.equal = FALSE) # Welch's (default, and this book's choice) t.test(EDUC ~ SEX, data = gss, var.equal = TRUE) # Student's (equal-variance assumption) </syntaxhighlight> '''dplyr, for the group descriptives you'll want alongside any t-test:''' <syntaxhighlight lang="r"> library(dplyr) gss %>% group_by(SEX) %>% summarize( mean_educ = mean(EDUC, na.rm = TRUE), sd_educ = sd(EDUC, na.rm = TRUE), n = sum(!is.na(EDUC)) ) </syntaxhighlight> == Effect Size: Cohen's d == Here is the point this book has been building toward since Chapter 1. With a GSS-sized sample (n > 1,500, per Chapter 11's power discussion), almost any real difference — even a genuinely tiny one — will turn out "statistically significant." A p-value under 0.05 in a sample this large tells you astonishingly little on its own about whether the difference is worth caring about. You need a second number, answering a different question: '''"Is the difference real?"''' is the p-value's job. '''"Does the difference matter?"''' is the effect size's job. You need both, and this book has insisted on both since Chapter 1 for exactly this reason. '''Cohen's d''' expresses the size of a difference between two means in standard-deviation units — conceptually a close cousin of the z-score from Chapter 10, but describing the gap ''between groups'' rather than one value's distance from a mean: : <math>d = \frac{\bar{x}_1 - \bar{x}_2}{s_{pooled}}</math> Conventional benchmarks, due to Jacob Cohen,<ref>Cohen, J. (1988). ''Statistical Power Analysis for the Behavioral Sciences'' (2nd ed.). Lawrence Erlbaum Associates.</ref> are small (d ≈ 0.2), medium (d ≈ 0.5), and large (d ≈ 0.8) — rough guides meant to aid interpretation, not laws of nature. A d of 0.5 in a study of educational interventions might be a genuinely large, policy-relevant effect; the same d of 0.5 in a study of something with enormous real-world variability might be comparatively unremarkable. Context, not the raw number alone, determines whether an effect size is "big." <syntaxhighlight lang="r"> library(effectsize) cohens_d(EDUC ~ SEX, data = gss) </syntaxhighlight> The <code>effectsize</code> package<ref>Ben-Shachar, M. S., Lüdecke, D., & Makowski, D. (2020). effectsize: Estimation of effect size indices and standardized parameters. ''Journal of Open Source Software'', 5(56), 2815.</ref> handles the computation, along with confidence intervals for the effect size itself, and will reappear for every effect size in the rest of this book. == Reporting Results == A complete t-test write-up, in the style expected in a sociology paper, includes the test statistic, degrees of freedom, p-value, and effect size — never the p-value alone: <blockquote> An independent-samples t-test (Welch's) found that respondents' years of education did not differ meaningfully by sex, ''t''(2017.3) = 1.42, ''p'' = .156, ''d'' = 0.06. Although the difference was not statistically significant, the effect size was also negligible by conventional benchmarks, suggesting little practical difference in educational attainment between men and women in this sample. </blockquote> Notice that this write-up reports a null result honestly and completely — no p-value fishing, no quietly reframing the question until something crosses the threshold. A negative result, reported with its effect size, is a genuine contribution; that's precisely the professional habit Chapter 1's replication-crisis discussion was arguing for. {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Pre-register your hypothesis before you look at the results. Deciding what you predicted after you've already seen the data isn't hypothesis testing — it's storytelling with extra steps, and it's exactly the kind of "researcher degrees of freedom" that inflates false-positive rates across an entire literature (a full taxonomy of this problem is waiting for you in Chapter 18). Posting a short, timestamped pre-registration to OSF, stating your hypothesis and planned analysis before running it, costs you ten minutes and buys your later results real credibility. }} == Chapter Summary == Hypothesis testing works by assuming a boring null hypothesis (nothing going on) and asking whether the observed data would be surprising under that assumption; a small p-value means the data would be unlikely if the null were true, not that the null is unlikely to be true — a distinction worth over-learning. Type I and Type II errors represent the two ways a test can go wrong, and α = 0.05 is a convention, not a natural law. t-tests compare means across one sample against a known value, two independent groups, or (less commonly for GSS data) paired measurements, and this book follows R's default of Welch's t-test, which doesn't assume equal variances between groups. With a sample as large as the GSS's, statistical significance is nearly guaranteed for any real difference, however small — which is why Cohen's d, reported alongside every p-value in this book, answers the question a p-value structurally cannot: does the difference actually matter? A complete result write-up always reports both, honestly, whether or not the result turned out to be significant. == Practice Examples == === Example 1: Education by Sex — Independent Samples t-Test === '''The Research Question:''' Do men and women differ in years of education, and if so, by how much does it matter? '''The Code (base R):''' <syntaxhighlight lang="r"> t.test(EDUC ~ SEX, data = gss) library(effectsize) cohens_d(EDUC ~ SEX, data = gss) </syntaxhighlight> '''The Code (dplyr, for descriptives first):''' <syntaxhighlight lang="r"> library(dplyr) gss %>% group_by(SEX) %>% summarize(mean_educ = mean(EDUC, na.rm = TRUE), sd_educ = sd(EDUC, na.rm = TRUE), n = n()) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Welch Two Sample t-test data: EDUC by SEX t = 1.42, df = 2017.3, p-value = 0.156 95 percent confidence interval: -0.05 0.31 sample estimates: mean in group 1 mean in group 2 13.75 13.62 Cohen's d = 0.06 [95% CI: -0.02, 0.15] </syntaxhighlight> '''The Interpretation:''' The p-value (0.156) is above the conventional 0.05 threshold, so this test does not find a statistically significant difference — and the effect size (d = 0.06) confirms there's not much to find in the first place: this is a negligible effect by any conventional benchmark. Both pieces of evidence point the same direction here, which won't always be true (a significant result with a tiny effect size is entirely possible with a large sample, and is exactly the pattern this chapter has been warning about). '''Follow-Up Challenge:''' Run the same comparison on <code>WORDSUM</code> instead of <code>EDUC</code>. Is there a meaningful sex difference in vocabulary test performance, both statistically and practically? === Example 2: Happiness vs. the Scale Midpoint — One-Sample t-Test === '''The Research Question:''' Is average happiness in the sample different from the scale's neutral midpoint? '''The Code:''' <syntaxhighlight lang="r"> t.test(gss$HAPPY, mu = 2) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> One Sample t-test data: gss$HAPPY t = -8.9, df = 1999, p-value < 2.2e-16 mean of x: 1.85 </syntaxhighlight> '''The Interpretation:''' The sample mean (1.85, on a scale where lower values indicate greater happiness) is significantly different from the scale's midpoint of 2, and the enormous t-statistic combined with the very small p-value reflects both a real pattern and the sample's large size. Because <code>HAPPY</code>'s scale runs only 1–3, a raw mean difference of 0.15 is actually a fairly substantial shift relative to the scale's total range — worth confirming with an effect size (Cohen's d comparing the sample mean to the fixed value 2) rather than trusting the dramatic-looking t-statistic alone. '''Follow-Up Challenge:''' Compute a one-sample Cohen's d for this comparison (the formula is the mean difference divided by the sample standard deviation). Does the effect size support the same "this matters" conclusion the p-value seems to suggest, or does it complicate the story? === Example 3: Full Write-Up === '''The Research Question:''' How would the Example 1 result be written up for a sociology paper? '''The Code:''' (No new code — this example is about translating Example 1's output into prose.) '''The Output:''' A publication-style sentence, not R output: <syntaxhighlight lang="text"> An independent-samples t-test (Welch's) found that respondents' years of education did not differ meaningfully by sex, t(2017.3) = 1.42, p = .156, d = 0.06 [95% CI: -0.02, 0.15]. The effect was negligible by conventional benchmarks, suggesting no practically meaningful difference in educational attainment between men and women in this sample. </syntaxhighlight> '''The Interpretation:''' Notice everything this write-up includes that a bare "p = .156, not significant" would leave out: the test statistic, degrees of freedom, effect size with its own confidence interval, and an explicit statement about practical (not just statistical) significance. This is the template this book will reuse for every inferential test from here forward — chi-square in Chapter 14, ANOVA in Chapter 15, regression in Chapter 16 — because the underlying professional habit doesn't change, only the specific numbers being reported. '''Follow-Up Challenge:''' Write your own full report for Example 2's one-sample t-test on <code>HAPPY</code>, following this same template exactly. == References == <references/> il8dj9xt0rvrimlsn4f6ykpep9zs22e 4656632 4656596 2026-08-07T15:02:21Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656632 wikitext text/x-wiki = Chapter 13: Hypothesis Testing, t-Tests, and Effect Sizes = Every inferential technique for the rest of this book follows the same basic logic, and this chapter introduces that logic and its first real application at the same time, on purpose — hypothesis testing stays grounded when it's attached to an actual question about actual people, instead of floating free as an abstract procedure you memorize and then forget. The question here: do two groups actually differ, or does it just look that way in this particular sample? == The Logic of Hypothesis Testing == Every hypothesis test starts with two competing claims. The '''null hypothesis''' (H₀) is the boring one: no difference, no relationship, nothing going on. The '''alternative hypothesis''' (H₁) is the interesting one: there is a difference, a relationship, something happening. The entire logic of the test is built around the null hypothesis as a kind of straw man — you assume, for the sake of argument, that nothing is going on, and then ask whether your actual data are surprising under that assumption. If the data would be quite unlikely if the null were really true, that's evidence against the null. If the data look perfectly ordinary under the null, you have no particular reason to abandon it. This setup creates two distinct ways to be wrong. A '''Type I error''' (false positive) means rejecting a true null hypothesis — concluding something is going on when it isn't. A '''Type II error''' (false negative) means failing to reject a false null hypothesis — missing a real effect that's actually there (this is precisely what low statistical power, from Chapter 11, makes more likely). Every hypothesis test involves a trade-off between these two error types, and no test eliminates either one entirely. The '''p-value''' is the probability of observing data this extreme (or more extreme) if the null hypothesis were actually true. Read that definition again, because it is not the definition most people carry around in their heads. A p-value of 0.04 does not mean there is a 4% chance you're wrong, or a 4% chance the null hypothesis is true. It means that if the null hypothesis were true, you'd see data this extreme (or more so) about 4% of the time. These are not the same claim. One of them is useful. '''Choosing alpha (α)''' — the threshold below which you'll call a result "statistically significant" — is a decision, not a law of nature. The conventional α = 0.05 is exactly that: a convention, inherited largely from mid-20th-century agricultural statistics, not a principled cutoff between "real" and "not real." Some fields use stricter thresholds; nothing stops you from justifying a different one, provided you say so upfront rather than after seeing your results. Finally: nearly every test in this book is '''two-tailed''' — testing for a difference in either direction, rather than committing in advance to only one direction. One-tailed tests exist and are occasionally defensible, but they're easy to misuse (a one-tailed test that happens to point the "right" way after the fact is a classic, quiet form of p-hacking), so this book defaults to two-tailed testing throughout, and you should have a strong, pre-specified reason before doing otherwise. == t-Tests == A '''t-test'''<ref>Student [Gosset, W. S.] (1908). The probable error of a mean. ''Biometrika'', 6(1), 1–25.</ref> compares means, and comes in a few varieties depending on your research design: * '''One-sample t-test''' — is this sample's mean different from a specific known value? * '''Independent samples t-test''' — do two separate, unrelated groups differ in their means? * '''Paired samples t-test''' — do the same respondents differ across two related measurements (before/after, spouse/spouse)? This book mentions it here for completeness but doesn't dwell on it, since GSS's cross-sectional design rarely produces natural pairs. For a one-sample t-test, the test statistic has a familiar shape — it's a z-score (Chapter 10) built from a sample mean instead of a single raw value, using the standard error (Chapter 11) instead of the population standard deviation: : <math>t = \frac{\bar{x} - \mu_0}{SE}</math> where μ₀ is the value you're testing against (the scale midpoint, a known population value, whatever your null hypothesis specifies). The independent-samples version follows the same basic logic — a difference between two group means, divided by the standard error of that difference — with a somewhat messier formula this book won't reproduce in full, since R computes it for you and the conceptual picture is what matters. Every t-test result also reports degrees of freedom. A one-sample t-test has ''df'' = ''n'' − 1, for exactly the reason Chapter 9's Sudoku explanation laid out: calculating the sample mean spends one degree of freedom, leaving ''n'' − 1 values genuinely free to vary. An independent-samples t-test spends one degree of freedom per group, for roughly ''df'' = ''n''₁ + ''n''₂ − 2 (Welch's version, which this book uses by default, adjusts this further to account for unequal variances, which is why you'll often see a non-integer df like 2017.3 in R's output rather than a clean whole number). t-tests carry assumptions — approximate normality (fairly robust to violation with large samples, per the Central Limit Theorem from Chapter 11), equal variances between groups (for the independent-samples version), and independence of observations. That second assumption, equal variances, is handled automatically in R by default: '''Welch's t-test'''<ref>Welch, B. L. (1947). The generalization of "Student's" problem when several different population variances are involved. ''Biometrika'', 34(1/2), 28–35.</ref>, which does not assume equal variances between groups, is R's default (<code>var.equal = FALSE</code>), and this book follows that default throughout rather than the classic Student's t-test, which does assume equal variances and is consequently a bit more fragile. <syntaxhighlight lang="r"> # One-sample t-test: is mean HAPPY different from the scale midpoint (2)? t.test(gss$HAPPY, mu = 2) # Independent-samples t-test: does EDUC differ by SEX? (Welch's by default) t.test(EDUC ~ SEX, data = gss) # Explicit about Welch's vs. Student's, for clarity: t.test(EDUC ~ SEX, data = gss, var.equal = FALSE) # Welch's (default, and this book's choice) t.test(EDUC ~ SEX, data = gss, var.equal = TRUE) # Student's (equal-variance assumption) </syntaxhighlight> '''dplyr, for the group descriptives you'll want alongside any t-test:''' <syntaxhighlight lang="r"> library(dplyr) gss %>% group_by(SEX) %>% summarize( mean_educ = mean(EDUC, na.rm = TRUE), sd_educ = sd(EDUC, na.rm = TRUE), n = sum(!is.na(EDUC)) ) </syntaxhighlight> == Effect Size: Cohen's d == Here is the point this book has been building toward since Chapter 1. With a GSS-sized sample (n > 1,500, per Chapter 11's power discussion), almost any real difference — even a genuinely tiny one — will turn out "statistically significant." A p-value under 0.05 in a sample this large tells you astonishingly little on its own about whether the difference is worth caring about. You need a second number, answering a different question: '''"Is the difference real?"''' is the p-value's job. '''"Does the difference matter?"''' is the effect size's job. You need both, and this book has insisted on both since Chapter 1 for exactly this reason. '''Cohen's d''' expresses the size of a difference between two means in standard-deviation units — conceptually a close cousin of the z-score from Chapter 10, but describing the gap ''between groups'' rather than one value's distance from a mean: : <math>d = \frac{\bar{x}_1 - \bar{x}_2}{s_{pooled}}</math> Conventional benchmarks, due to Jacob Cohen,<ref>Cohen, J. (1988). ''Statistical Power Analysis for the Behavioral Sciences'' (2nd ed.). Lawrence Erlbaum Associates.</ref> are small (d ≈ 0.2), medium (d ≈ 0.5), and large (d ≈ 0.8) — rough guides meant to aid interpretation, not laws of nature. A d of 0.5 in a study of educational interventions might be a genuinely large, policy-relevant effect; the same d of 0.5 in a study of something with enormous real-world variability might be comparatively unremarkable. Context, not the raw number alone, determines whether an effect size is "big." <syntaxhighlight lang="r"> library(effectsize) cohens_d(EDUC ~ SEX, data = gss) </syntaxhighlight> The <code>effectsize</code> package<ref>Ben-Shachar, M. S., Lüdecke, D., & Makowski, D. (2020). effectsize: Estimation of effect size indices and standardized parameters. ''Journal of Open Source Software'', 5(56), 2815.</ref> handles the computation, along with confidence intervals for the effect size itself, and will reappear for every effect size in the rest of this book. == Reporting Results == A complete t-test write-up, in the style expected in a sociology paper, includes the test statistic, degrees of freedom, p-value, and effect size — never the p-value alone: <blockquote> An independent-samples t-test (Welch's) found that respondents' years of education did not differ meaningfully by sex, ''t''(2017.3) = 1.42, ''p'' = .156, ''d'' = 0.06. Although the difference was not statistically significant, the effect size was also negligible by conventional benchmarks, suggesting little practical difference in educational attainment between men and women in this sample. </blockquote> Notice that this write-up reports a null result honestly and completely — no p-value fishing, no quietly reframing the question until something crosses the threshold. A negative result, reported with its effect size, is a genuine contribution; that's precisely the professional habit Chapter 1's replication-crisis discussion was arguing for. {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Pre-register your hypothesis before you look at the results. Deciding what you predicted after you've already seen the data isn't hypothesis testing — it's storytelling with extra steps, and it's exactly the kind of "researcher degrees of freedom" that inflates false-positive rates across an entire literature (a full taxonomy of this problem is waiting for you in Chapter 18). Posting a short, timestamped pre-registration to OSF, stating your hypothesis and planned analysis before running it, costs you ten minutes and buys your later results real credibility. }} == Chapter Summary == Hypothesis testing works by assuming a boring null hypothesis (nothing going on) and asking whether the observed data would be surprising under that assumption; a small p-value means the data would be unlikely if the null were true, not that the null is unlikely to be true — a distinction worth over-learning. Type I and Type II errors represent the two ways a test can go wrong, and α = 0.05 is a convention, not a natural law. t-tests compare means across one sample against a known value, two independent groups, or (less commonly for GSS data) paired measurements, and this book follows R's default of Welch's t-test, which doesn't assume equal variances between groups. With a sample as large as the GSS's, statistical significance is nearly guaranteed for any real difference, however small — which is why Cohen's d, reported alongside every p-value in this book, answers the question a p-value structurally cannot: does the difference actually matter? A complete result write-up always reports both, honestly, whether or not the result turned out to be significant. == Practice Examples == === Example 1: Education by Sex — Independent Samples t-Test === '''The Research Question:''' Do men and women differ in years of education, and if so, by how much does it matter? '''The Code (base R):''' <syntaxhighlight lang="r"> t.test(EDUC ~ SEX, data = gss) library(effectsize) cohens_d(EDUC ~ SEX, data = gss) </syntaxhighlight> '''The Code (dplyr, for descriptives first):''' <syntaxhighlight lang="r"> library(dplyr) gss %>% group_by(SEX) %>% summarize(mean_educ = mean(EDUC, na.rm = TRUE), sd_educ = sd(EDUC, na.rm = TRUE), n = n()) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Welch Two Sample t-test data: EDUC by SEX t = 1.42, df = 2017.3, p-value = 0.156 95 percent confidence interval: -0.05 0.31 sample estimates: mean in group 1 mean in group 2 13.75 13.62 Cohen's d = 0.06 [95% CI: -0.02, 0.15] </syntaxhighlight> '''The Interpretation:''' The p-value (0.156) is above the conventional 0.05 threshold, so this test does not find a statistically significant difference — and the effect size (d = 0.06) confirms there's not much to find in the first place: this is a negligible effect by any conventional benchmark. Both pieces of evidence point the same direction here, which won't always be true (a significant result with a tiny effect size is entirely possible with a large sample, and is exactly the pattern this chapter has been warning about). '''Follow-Up Challenge:''' Run the same comparison on <code>WORDSUM</code> instead of <code>EDUC</code>. Is there a meaningful sex difference in vocabulary test performance, both statistically and practically? === Example 2: Happiness vs. the Scale Midpoint — One-Sample t-Test === '''The Research Question:''' Is average happiness in the sample different from the scale's neutral midpoint? '''The Code:''' <syntaxhighlight lang="r"> t.test(gss$HAPPY, mu = 2) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> One Sample t-test data: gss$HAPPY t = -8.9, df = 1999, p-value < 2.2e-16 mean of x: 1.85 </syntaxhighlight> '''The Interpretation:''' The sample mean (1.85, on a scale where lower values indicate greater happiness) is significantly different from the scale's midpoint of 2, and the enormous t-statistic combined with the very small p-value reflects both a real pattern and the sample's large size. Because <code>HAPPY</code>'s scale runs only 1–3, a raw mean difference of 0.15 is actually a fairly substantial shift relative to the scale's total range — worth confirming with an effect size (Cohen's d comparing the sample mean to the fixed value 2) rather than trusting the dramatic-looking t-statistic alone. '''Follow-Up Challenge:''' Compute a one-sample Cohen's d for this comparison (the formula is the mean difference divided by the sample standard deviation). Does the effect size support the same "this matters" conclusion the p-value seems to suggest, or does it complicate the story? === Example 3: Full Write-Up === '''The Research Question:''' How would the Example 1 result be written up for a sociology paper? '''The Code:''' (No new code — this example is about translating Example 1's output into prose.) '''The Output:''' A publication-style sentence, not R output: <syntaxhighlight lang="text"> An independent-samples t-test (Welch's) found that respondents' years of education did not differ meaningfully by sex, t(2017.3) = 1.42, p = .156, d = 0.06 [95% CI: -0.02, 0.15]. The effect was negligible by conventional benchmarks, suggesting no practically meaningful difference in educational attainment between men and women in this sample. </syntaxhighlight> '''The Interpretation:''' Notice everything this write-up includes that a bare "p = .156, not significant" would leave out: the test statistic, degrees of freedom, effect size with its own confidence interval, and an explicit statement about practical (not just statistical) significance. This is the template this book will reuse for every inferential test from here forward — chi-square in Chapter 14, ANOVA in Chapter 15, regression in Chapter 16 — because the underlying professional habit doesn't change, only the specific numbers being reported. '''Follow-Up Challenge:''' Write your own full report for Example 2's one-sample t-test on <code>HAPPY</code>, following this same template exactly. == References == <references/> {{BookCat}} fzpoj328dkpni1le9scbjsslj0out25 Statistics for Sociologists/Chapter 14: Chi-Square Tests and Effet Sizes 0 485155 4656598 2026-08-07T14:13:12Z Rcragun 41177 first draft 4656598 wikitext text/x-wiki = Chapter 14: Chi-Square Tests and Effect Sizes = Chapter 13 compared means. A huge share of the questions sociologists actually ask don't involve means at all — they involve categories. Is political party affiliation related to religious attendance? Is race associated with happiness category? These are questions about whether two categorical variables move together, and t-tests have nothing to say about them. This chapter introduces the tool built specifically for this situation, and it happens to be one of the more transparent, satisfying pieces of logic in the entire book. == When to Use Chi-Square == The '''chi-square test of independence'''<ref>Pearson, K. (1900). On the criterion that a given system of deviations from the probable in the case of a correlated system of variables is such that it can be reasonably supposed to have arisen from random sampling. ''Philosophical Magazine, Series 5'', 50(302), 157–175.</ref> applies when you have two categorical variables and want to know whether they're related — whether knowing a respondent's category on one variable tells you anything about their likely category on the other. If sex and political party identification are truly independent, knowing someone's sex should tell you nothing about their party — the party breakdown among men should look statistically like the party breakdown among women. Chi-square tests exactly that proposition. == The Logic of the Test == The logic is genuinely transparent, more so than most inferential tests: build a table of '''observed''' frequencies (how many respondents actually fall into each combination of categories), compare it to the table of '''expected''' frequencies you'd predict if the two variables were completely independent, and measure how far apart the two tables are. Big gap → the variables are probably related. Small gap → the data look about like what independence would predict. The chi-square statistic itself formalizes "how far apart" by summing, across every cell in the table, the squared difference between observed and expected counts, divided by the expected count: : <math>\chi^2 = \sum \frac{(O_i - E_i)^2}{E_i}</math> (squaring, for the same reason it showed up in Chapter 9's variance formula: it keeps positive and negative deviations from canceling out). '''Degrees of freedom''' for this test equal (number of rows − 1) × (number of columns − 1) — the same Sudoku-grid logic from Chapter 9 applies here at the scale of a whole table: once you know the row totals, the column totals, and all but the last row and column of individual cells, every remaining cell is completely determined, with no freedom left to vary. A larger chi-square statistic relative to its degrees of freedom translates into a smaller p-value. '''One real assumption to check''': the test's math starts to break down when '''expected cell counts''' are too small — a common guideline is that no more than 20% of cells should have an expected count under 5, and none should be under 1. With a GSS-sized sample this is rarely a problem for two variables with a modest number of categories each, but it becomes a real concern fast if you're cross-tabulating two variables with many categories, spreading a few thousand respondents thin across dozens of cells. When it happens, collapsing categories (Chapter 6's recoding skills, put to direct use here) is usually the fix. == Cross-Tabulation in R == '''Base R:''' <syntaxhighlight lang="r"> tab <- table(gss$SEX, gss$PARTYID) tab chisq.test(tab) </syntaxhighlight> '''dplyr + janitor:''' <syntaxhighlight lang="r"> library(dplyr) library(janitor) gss %>% tabyl(SEX, PARTYID) %>% adorn_percentages() %>% adorn_pct_formatting() chisq.test(table(gss$SEX, gss$PARTYID)) </syntaxhighlight> <code>tabyl()</code> plus the <code>adorn_*()</code> family produces a genuinely readable, publication-adjacent cross-tab with percentages baked in — a real step up from base R's bare counts when you're building a table for an actual write-up. == Effect Size: Cramér's V == Just as Chapter 13 paired every t-test with Cohen's d, every chi-square test in this book gets paired with '''Cramér's V'''<ref>Cramér, H. (1946). ''Mathematical Methods of Statistics''. Princeton University Press.</ref> — a measure, bounded between 0 and 1, of how strongly two categorical variables are associated, independent of sample size. A chi-square test can be statistically significant with an association too weak to matter (the same GSS-sample-size problem from Chapter 13, showing up again here); Cramér's V is how you find out whether it's worth mentioning outside a statistics class. <syntaxhighlight lang="r"> library(effectsize) cramers_v(table(gss$SEX, gss$PARTYID)) </syntaxhighlight> Rough interpretation benchmarks (which, like Cohen's benchmarks in Chapter 13, depend somewhat on the number of categories involved and should be treated as guides, not laws): around 0.1 is a small association, around 0.3 is medium, and 0.5 or above is large. == Visualizing Categorical Relationships == <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = factor(PARTYID), fill = factor(SEX))) + geom_bar(position = "dodge") + labs(title = "Party Identification by Sex", x = "Party ID", y = "Count", fill = "Sex") </syntaxhighlight> A '''grouped bar chart''' (bars for each category of one variable, clustered and colored by the other) makes a categorical association visible at a glance in a way a table of percentages, however well-formatted, usually doesn't. <!-- FIGURE: A real grouped bar chart of PARTYID by SEX (or RACE by HAPPY, matching Example 2 below) from the 2010 GSS. Author to generate. --> == Reporting Results == Chi-square is deeply satisfying because the logic is so transparent: you are, quite literally, asking "how far are the observed counts from what we'd expect if there were no relationship at all?" A good sociological example makes this concrete — is political party affiliation associated with religious attendance? (Yes. Dramatically.) That's not exactly a shocking finding, and that's fine — sometimes a test just confirms what you already strongly suspected, and confirmation is still information. A complete write-up follows the same template Chapter 13 established, adapted for chi-square's specific statistics: <blockquote> A chi-square test of independence found a significant association between sex and political party identification, χ²(6, ''N'' = 2,020) = 14.3, ''p'' = .026, Cramér's ''V'' = 0.08. Although statistically significant, the association was weak by conventional benchmarks, suggesting sex accounts for only a small part of the variation in party identification in this sample. </blockquote> == Chapter Summary == The chi-square test of independence evaluates whether two categorical variables are related by comparing observed cell counts to the counts you'd expect under complete independence — a large gap between observed and expected suggests a real relationship. Degrees of freedom depend on the table's dimensions, and the test requires reasonably large expected cell counts to behave well, which can require collapsing sparse categories first. <code>chisq.test()</code> in base R and <code>tabyl()</code> from janitor (paired with dplyr) both build the necessary cross-tabs, and Cramér's V — required alongside every chi-square result in this book, exactly like Cohen's d for t-tests — tells you whether a statistically significant association is actually strong enough to matter. Grouped bar charts make categorical associations visually obvious in a way raw percentage tables rarely do. == Practice Examples == === Example 1: Sex and Party Identification === '''The Research Question:''' Is political party identification associated with sex in this sample, and how strong is that association? '''The Code (base R):''' <syntaxhighlight lang="r"> tab <- table(gss$SEX, gss$PARTYID) chisq.test(tab) library(effectsize) cramers_v(tab) </syntaxhighlight> '''The Code (dplyr + janitor):''' <syntaxhighlight lang="r"> library(dplyr) library(janitor) gss %>% tabyl(SEX, PARTYID) %>% adorn_percentages("row") %>% adorn_pct_formatting() </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Pearson's Chi-squared test data: tab X-squared = 14.3, df = 6, p-value = 0.0264 Cramer's V = 0.08 [95% CI: 0.02, 0.14] </syntaxhighlight> '''The Interpretation:''' The association is statistically significant (p = .026) but weak (V = 0.08) — a pattern that should feel familiar after Chapter 13's discussion of GSS-sized samples detecting small effects reliably. Sex tells you a little something about party identification in this sample, but not very much; most of the variation in party ID has nothing to do with sex at all. '''Follow-Up Challenge:''' Collapse <code>PARTYID</code> into three broader categories (Democrat, Independent, Republican) using Chapter 6's recoding skills, and rerun the test. Does collapsing categories change the substantive conclusion, the effect size, or both? === Example 2: Race and Happiness === '''The Research Question:''' Is race associated with self-reported happiness in this sample? '''The Code:''' <syntaxhighlight lang="r"> tab2 <- table(gss$RACE, gss$HAPPY) chisq.test(tab2) library(effectsize) cramers_v(tab2) library(ggplot2) ggplot(gss, aes(x = factor(RACE), fill = factor(HAPPY))) + geom_bar(position = "fill") + labs(title = "Happiness by Race", x = "Race", y = "Proportion", fill = "Happiness") </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> X-squared = 22.6, df = 4, p-value = 0.0002 Cramer's V = 0.11 [95% CI: 0.06, 0.16] </syntaxhighlight> '''The Interpretation:''' A statistically significant association (p < .001) with a small-to-moderate effect size (V = 0.11) — stronger evidence of a real relationship than Example 1, though still modest in size. The <code>geom_bar(position = "fill")</code> version of the plot is worth noting specifically: it converts each racial group's bar to 100% height and shows the ''proportion'' falling into each happiness category, which makes a compositional comparison across groups of different sizes much easier to read than raw counts would. '''Follow-Up Challenge:''' This association is significant and larger than Example 1's — but chi-square alone can't tell you anything about ''why''. What third variables (income, discrimination, health, region) might plausibly explain part of this association? How would you begin to investigate that with the tools from this book so far? === Example 3: Write-Up === '''The Research Question:''' How should the Example 2 result be written up for a sociology paper? '''The Code:''' (No new code — translating Example 2's output into prose.) '''The Output:''' <syntaxhighlight lang="text"> A chi-square test of independence found a significant association between race and self-reported happiness, chi-squared(4, N = 2,020) = 22.6, p < .001, Cramer's V = 0.11. The association, while statistically significant and somewhat stronger than a comparable test of sex and party identification, remained modest in magnitude, indicating that race alone accounts for a relatively small share of the variation in happiness in this sample. </syntaxhighlight> '''The Interpretation:''' This write-up does something worth flagging explicitly: it contextualizes the effect size by comparing it to another result from earlier in the chapter, rather than reporting the number in isolation. Readers rarely have a strong independent intuition for what "V = 0.11" means; giving them a comparison point (weaker than X, stronger than Y) often communicates more than the bare statistic. '''Follow-Up Challenge:''' Find a published sociology article that reports a chi-square test (a quick search for "chi-square" plus a topic you're interested in, in a database like Google Scholar, will turn up plenty). Does it report an effect size alongside the p-value? If not, what does that omission cost the reader? == References == <references/> s9zfeovb61jwvepaf7ng5u4nwpd2hh0 4656631 4656598 2026-08-07T15:02:17Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656631 wikitext text/x-wiki = Chapter 14: Chi-Square Tests and Effect Sizes = Chapter 13 compared means. A huge share of the questions sociologists actually ask don't involve means at all — they involve categories. Is political party affiliation related to religious attendance? Is race associated with happiness category? These are questions about whether two categorical variables move together, and t-tests have nothing to say about them. This chapter introduces the tool built specifically for this situation, and it happens to be one of the more transparent, satisfying pieces of logic in the entire book. == When to Use Chi-Square == The '''chi-square test of independence'''<ref>Pearson, K. (1900). On the criterion that a given system of deviations from the probable in the case of a correlated system of variables is such that it can be reasonably supposed to have arisen from random sampling. ''Philosophical Magazine, Series 5'', 50(302), 157–175.</ref> applies when you have two categorical variables and want to know whether they're related — whether knowing a respondent's category on one variable tells you anything about their likely category on the other. If sex and political party identification are truly independent, knowing someone's sex should tell you nothing about their party — the party breakdown among men should look statistically like the party breakdown among women. Chi-square tests exactly that proposition. == The Logic of the Test == The logic is genuinely transparent, more so than most inferential tests: build a table of '''observed''' frequencies (how many respondents actually fall into each combination of categories), compare it to the table of '''expected''' frequencies you'd predict if the two variables were completely independent, and measure how far apart the two tables are. Big gap → the variables are probably related. Small gap → the data look about like what independence would predict. The chi-square statistic itself formalizes "how far apart" by summing, across every cell in the table, the squared difference between observed and expected counts, divided by the expected count: : <math>\chi^2 = \sum \frac{(O_i - E_i)^2}{E_i}</math> (squaring, for the same reason it showed up in Chapter 9's variance formula: it keeps positive and negative deviations from canceling out). '''Degrees of freedom''' for this test equal (number of rows − 1) × (number of columns − 1) — the same Sudoku-grid logic from Chapter 9 applies here at the scale of a whole table: once you know the row totals, the column totals, and all but the last row and column of individual cells, every remaining cell is completely determined, with no freedom left to vary. A larger chi-square statistic relative to its degrees of freedom translates into a smaller p-value. '''One real assumption to check''': the test's math starts to break down when '''expected cell counts''' are too small — a common guideline is that no more than 20% of cells should have an expected count under 5, and none should be under 1. With a GSS-sized sample this is rarely a problem for two variables with a modest number of categories each, but it becomes a real concern fast if you're cross-tabulating two variables with many categories, spreading a few thousand respondents thin across dozens of cells. When it happens, collapsing categories (Chapter 6's recoding skills, put to direct use here) is usually the fix. == Cross-Tabulation in R == '''Base R:''' <syntaxhighlight lang="r"> tab <- table(gss$SEX, gss$PARTYID) tab chisq.test(tab) </syntaxhighlight> '''dplyr + janitor:''' <syntaxhighlight lang="r"> library(dplyr) library(janitor) gss %>% tabyl(SEX, PARTYID) %>% adorn_percentages() %>% adorn_pct_formatting() chisq.test(table(gss$SEX, gss$PARTYID)) </syntaxhighlight> <code>tabyl()</code> plus the <code>adorn_*()</code> family produces a genuinely readable, publication-adjacent cross-tab with percentages baked in — a real step up from base R's bare counts when you're building a table for an actual write-up. == Effect Size: Cramér's V == Just as Chapter 13 paired every t-test with Cohen's d, every chi-square test in this book gets paired with '''Cramér's V'''<ref>Cramér, H. (1946). ''Mathematical Methods of Statistics''. Princeton University Press.</ref> — a measure, bounded between 0 and 1, of how strongly two categorical variables are associated, independent of sample size. A chi-square test can be statistically significant with an association too weak to matter (the same GSS-sample-size problem from Chapter 13, showing up again here); Cramér's V is how you find out whether it's worth mentioning outside a statistics class. <syntaxhighlight lang="r"> library(effectsize) cramers_v(table(gss$SEX, gss$PARTYID)) </syntaxhighlight> Rough interpretation benchmarks (which, like Cohen's benchmarks in Chapter 13, depend somewhat on the number of categories involved and should be treated as guides, not laws): around 0.1 is a small association, around 0.3 is medium, and 0.5 or above is large. == Visualizing Categorical Relationships == <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = factor(PARTYID), fill = factor(SEX))) + geom_bar(position = "dodge") + labs(title = "Party Identification by Sex", x = "Party ID", y = "Count", fill = "Sex") </syntaxhighlight> A '''grouped bar chart''' (bars for each category of one variable, clustered and colored by the other) makes a categorical association visible at a glance in a way a table of percentages, however well-formatted, usually doesn't. <!-- FIGURE: A real grouped bar chart of PARTYID by SEX (or RACE by HAPPY, matching Example 2 below) from the 2010 GSS. Author to generate. --> == Reporting Results == Chi-square is deeply satisfying because the logic is so transparent: you are, quite literally, asking "how far are the observed counts from what we'd expect if there were no relationship at all?" A good sociological example makes this concrete — is political party affiliation associated with religious attendance? (Yes. Dramatically.) That's not exactly a shocking finding, and that's fine — sometimes a test just confirms what you already strongly suspected, and confirmation is still information. A complete write-up follows the same template Chapter 13 established, adapted for chi-square's specific statistics: <blockquote> A chi-square test of independence found a significant association between sex and political party identification, χ²(6, ''N'' = 2,020) = 14.3, ''p'' = .026, Cramér's ''V'' = 0.08. Although statistically significant, the association was weak by conventional benchmarks, suggesting sex accounts for only a small part of the variation in party identification in this sample. </blockquote> == Chapter Summary == The chi-square test of independence evaluates whether two categorical variables are related by comparing observed cell counts to the counts you'd expect under complete independence — a large gap between observed and expected suggests a real relationship. Degrees of freedom depend on the table's dimensions, and the test requires reasonably large expected cell counts to behave well, which can require collapsing sparse categories first. <code>chisq.test()</code> in base R and <code>tabyl()</code> from janitor (paired with dplyr) both build the necessary cross-tabs, and Cramér's V — required alongside every chi-square result in this book, exactly like Cohen's d for t-tests — tells you whether a statistically significant association is actually strong enough to matter. Grouped bar charts make categorical associations visually obvious in a way raw percentage tables rarely do. == Practice Examples == === Example 1: Sex and Party Identification === '''The Research Question:''' Is political party identification associated with sex in this sample, and how strong is that association? '''The Code (base R):''' <syntaxhighlight lang="r"> tab <- table(gss$SEX, gss$PARTYID) chisq.test(tab) library(effectsize) cramers_v(tab) </syntaxhighlight> '''The Code (dplyr + janitor):''' <syntaxhighlight lang="r"> library(dplyr) library(janitor) gss %>% tabyl(SEX, PARTYID) %>% adorn_percentages("row") %>% adorn_pct_formatting() </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Pearson's Chi-squared test data: tab X-squared = 14.3, df = 6, p-value = 0.0264 Cramer's V = 0.08 [95% CI: 0.02, 0.14] </syntaxhighlight> '''The Interpretation:''' The association is statistically significant (p = .026) but weak (V = 0.08) — a pattern that should feel familiar after Chapter 13's discussion of GSS-sized samples detecting small effects reliably. Sex tells you a little something about party identification in this sample, but not very much; most of the variation in party ID has nothing to do with sex at all. '''Follow-Up Challenge:''' Collapse <code>PARTYID</code> into three broader categories (Democrat, Independent, Republican) using Chapter 6's recoding skills, and rerun the test. Does collapsing categories change the substantive conclusion, the effect size, or both? === Example 2: Race and Happiness === '''The Research Question:''' Is race associated with self-reported happiness in this sample? '''The Code:''' <syntaxhighlight lang="r"> tab2 <- table(gss$RACE, gss$HAPPY) chisq.test(tab2) library(effectsize) cramers_v(tab2) library(ggplot2) ggplot(gss, aes(x = factor(RACE), fill = factor(HAPPY))) + geom_bar(position = "fill") + labs(title = "Happiness by Race", x = "Race", y = "Proportion", fill = "Happiness") </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> X-squared = 22.6, df = 4, p-value = 0.0002 Cramer's V = 0.11 [95% CI: 0.06, 0.16] </syntaxhighlight> '''The Interpretation:''' A statistically significant association (p < .001) with a small-to-moderate effect size (V = 0.11) — stronger evidence of a real relationship than Example 1, though still modest in size. The <code>geom_bar(position = "fill")</code> version of the plot is worth noting specifically: it converts each racial group's bar to 100% height and shows the ''proportion'' falling into each happiness category, which makes a compositional comparison across groups of different sizes much easier to read than raw counts would. '''Follow-Up Challenge:''' This association is significant and larger than Example 1's — but chi-square alone can't tell you anything about ''why''. What third variables (income, discrimination, health, region) might plausibly explain part of this association? How would you begin to investigate that with the tools from this book so far? === Example 3: Write-Up === '''The Research Question:''' How should the Example 2 result be written up for a sociology paper? '''The Code:''' (No new code — translating Example 2's output into prose.) '''The Output:''' <syntaxhighlight lang="text"> A chi-square test of independence found a significant association between race and self-reported happiness, chi-squared(4, N = 2,020) = 22.6, p < .001, Cramer's V = 0.11. The association, while statistically significant and somewhat stronger than a comparable test of sex and party identification, remained modest in magnitude, indicating that race alone accounts for a relatively small share of the variation in happiness in this sample. </syntaxhighlight> '''The Interpretation:''' This write-up does something worth flagging explicitly: it contextualizes the effect size by comparing it to another result from earlier in the chapter, rather than reporting the number in isolation. Readers rarely have a strong independent intuition for what "V = 0.11" means; giving them a comparison point (weaker than X, stronger than Y) often communicates more than the bare statistic. '''Follow-Up Challenge:''' Find a published sociology article that reports a chi-square test (a quick search for "chi-square" plus a topic you're interested in, in a database like Google Scholar, will turn up plenty). Does it report an effect size alongside the p-value? If not, what does that omission cost the reader? == References == <references/> {{BookCat}} ctkt3f3ork89v6h4ymyv4tmb5jkupk9 Statistics for Sociologists/Chapter 15: ANOVA and Effect Sizes 0 485156 4656599 2026-08-07T14:14:29Z Rcragun 41177 first draft 4656599 wikitext text/x-wiki = Chapter 15: ANOVA and Effect Sizes = Chapter 13's t-test compares two groups. Real sociological variables rarely stop at two categories — marital status, religious attendance, region, education level all naturally split respondents into three, four, or more groups. This chapter extends the t-test's logic to exactly that situation, and introduces a new way of thinking about variance that will turn out to be the conceptual foundation for regression in Chapter 16 as well. == Why Not Just Run Multiple t-Tests? == If you have four marital status categories and want to compare education across all of them, why not just run every possible pairwise t-test — married vs. never married, married vs. divorced, and so on? Because doing so inflates your '''Type I error rate''' well beyond the α you think you're using. Each individual t-test carries a 5% false-positive risk on its own; run six pairwise comparisons across four groups, and the probability that ''at least one'' of them turns up "significant" by pure chance climbs well above 5% — closer to 25% or more, depending on how many comparisons you run. This is the '''multiple comparisons problem''', and it's a real, well-documented contributor to spurious findings in the published literature (recall Chapter 1's replication-crisis discussion, and Chapter 18's fuller treatment of p-hacking to come). ANOVA solves this by asking one question across all groups simultaneously, controlling the overall error rate properly, rather than asking many separate questions and hoping none of them get lucky. == One-Way ANOVA Logic == '''Analysis of Variance''' (ANOVA)<ref>Fisher, R. A. (1925). ''Statistical Methods for Research Workers''. Oliver and Boyd.</ref> is, despite the name, a test about means — it just gets there by '''partitioning variance''' into two components: variance '''between''' groups (how much the group means differ from the overall mean) and variance '''within''' groups (how much individual respondents vary around their own group's mean). ANOVA is just a fancy way of asking: is the spread between groups bigger than the spread within groups? If the groups vary more from each other than people vary within groups, something is probably going on. If people within each group are all over the place anyway, a difference between group means starts looking a lot less impressive by comparison. The '''F-statistic''' formalizes this directly as a ratio: between-group variance divided by within-group variance. : <math>F = \frac{MS_{between}}{MS_{within}} = \frac{SS_{between} / df_{between}}{SS_{within} / df_{within}}</math> Each ''MS'' ("mean square") is just a sum of squared deviations (''SS'', the same building block behind variance since Chapter 9) divided by its own degrees of freedom — ''df''<sub>between</sub> = ''k'' − 1 (one degree of freedom spent per group mean, where ''k'' is the number of groups) and ''df''<sub>within</sub> = ''N'' − ''k'' (one degree of freedom spent per group, subtracted from the total sample size), the same Sudoku-style logic from Chapter 9 showing up again at the level of whole groups instead of individual values. A large F means the between-group differences are large relative to the ordinary noise within each group; an F close to 1 means the groups aren't really separating from each other any more than random chance within a single group would produce. ANOVA's assumptions echo the t-test's from Chapter 13: approximate normality within each group (again, fairly robust with large samples), '''homogeneity of variance''' across groups (each group should show roughly similar spread — a group-level version of the equal-variance assumption Welch's t-test relaxed for two groups), and independence of observations. == Running ANOVA in R == <syntaxhighlight lang="r"> model <- aov(EDUC ~ factor(MARITAL), data = gss) summary(model) </syntaxhighlight> '''dplyr, for group descriptives before the test:''' <syntaxhighlight lang="r"> library(dplyr) gss %>% group_by(MARITAL) %>% summarize(mean_educ = mean(EDUC, na.rm = TRUE), sd_educ = sd(EDUC, na.rm = TRUE), n = n()) </syntaxhighlight> Note the <code>factor()</code> wrapped around <code>MARITAL</code> inside the formula — <code>aov()</code> needs to know this is a categorical grouping variable, not a number to treat arithmetically, which should feel like familiar territory after Chapter 4's entire discussion of exactly this distinction. == Post-Hoc Tests: Which Groups Actually Differ? == A significant ANOVA result tells you '''that''' the groups differ somewhere — it does not tell you '''which''' specific groups differ from which others. That's the job of a '''post-hoc test''', run only after a significant overall ANOVA result, and '''Tukey's HSD''' ("Honestly Significant Difference")<ref>Tukey, J. W. (1949). Comparing individual means in the analysis of variance. ''Biometrics'', 5(2), 99–114.</ref> is the standard choice — a name that sounds less like a statistical method and more like something you'd say to reassure a nervous coauthor. It compares every pair of groups while still properly controlling the overall Type I error rate, solving the exact problem that made running separate t-tests a bad idea in the first place. <syntaxhighlight lang="r"> TukeyHSD(model) </syntaxhighlight> The output gives you a confidence interval and adjusted p-value for every pairwise group comparison — married vs. divorced, divorced vs. never married, and so on — letting you say specifically where the differences live rather than just that they exist somewhere in the table. == Effect Size: Eta-Squared == '''Eta-squared''' (η²) is ANOVA's effect size, expressing the proportion of total variance in the outcome that's explained by group membership — conceptually a close relative of R² from the regression chapter just ahead. <syntaxhighlight lang="r"> library(effectsize) eta_squared(model) </syntaxhighlight> Rough benchmarks: around 0.01 is a small effect, around 0.06 is medium, and 0.14 or above is large — again, guides rather than laws, and worth interpreting in context rather than mechanically. == Visualizing Group Differences == <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = factor(MARITAL), y = EDUC)) + geom_boxplot() + labs(title = "Education by Marital Status", x = "Marital Status", y = "Years of Education") </syntaxhighlight> Box plots (Chapter 9) remain the right tool here, exactly as they were for the two-group comparisons in earlier chapters — they show both central tendency and spread across every group at once, which is precisely the between-versus-within comparison ANOVA is built around. <!-- FIGURE: A real box plot of EDUC by MARITAL from the 2010 GSS, showing both group medians and within-group spread. Author to generate. --> == Reporting Results == <blockquote> A one-way ANOVA found a significant effect of marital status on years of education, ''F''(3, 2016) = 8.42, ''p'' < .001, η² = 0.012. Tukey's HSD post-hoc comparisons indicated that never-married respondents (M = 14.1) had significantly more education than divorced respondents (M = 13.2, ''p'' = .003), though the overall effect size was small, suggesting marital status accounts for only a modest share of the variation in educational attainment. </blockquote> Notice, again, the discipline of reporting a small effect size honestly even when the p-value is comfortably significant — the same habit this book has insisted on since Chapter 1, now showing up for the third inferential test in a row. == Chapter Summary == ANOVA extends the t-test's logic to three or more groups by comparing between-group variance to within-group variance via the F-statistic, avoiding the inflated false-positive risk that running many separate pairwise t-tests would create. A significant ANOVA result establishes that group means differ somewhere, but identifying specifically which groups differ requires a post-hoc test like Tukey's HSD, which controls the overall error rate properly across all pairwise comparisons. Eta-squared, ANOVA's effect size, expresses the proportion of variance explained by group membership and should accompany every ANOVA result in this book, exactly as Cohen's d and Cramér's V have accompanied t-tests and chi-square tests. Box plots remain the natural visualization for comparing several groups' distributions at once. The core idea here — partitioning variance into explained and unexplained components — isn't just an ANOVA-specific trick; it's the same logic Chapter 16's regression is built on. == Practice Examples == === Example 1: Education by Marital Status === '''The Research Question:''' Does average education differ across marital status categories, and if so, which specific groups differ? '''The Code:''' <syntaxhighlight lang="r"> model <- aov(EDUC ~ factor(MARITAL), data = gss) summary(model) TukeyHSD(model) library(effectsize) eta_squared(model) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Df Sum Sq Mean Sq F value Pr(>F) factor(MARITAL) 3 203 67.7 8.42 1.2e-05 Residuals 2016 16200 8.0 Eta2 = 0.012 [95% CI: 0.005, 1.00] Tukey multiple comparisons of means diff lwr upr p adj Never married-Divorced 0.90 0.24 1.56 0.003 ... </syntaxhighlight> '''The Interpretation:''' The overall ANOVA is significant (p < .001), and Tukey's HSD narrows that down: never-married respondents have significantly more education than divorced respondents specifically, with a 95% CI for that gap ([0.24, 1.56] years) that excludes zero. The effect size (η² = 0.012) is small by conventional benchmarks — marital status explains about 1.2% of the total variance in education, meaningfully real but far from the dominant factor. '''Follow-Up Challenge:''' Look at the full Tukey output (not just the one comparison shown above). How many of the six pairwise comparisons turn out significant? Does the overall pattern make more sense once you see all of them together, rather than just the ANOVA's single p-value? === Example 2: Happiness by Religious Attendance === '''The Research Question:''' Does happiness differ across categories of religious attendance frequency? '''The Code:''' <syntaxhighlight lang="r"> model2 <- aov(HAPPY ~ factor(ATTEND), data = gss) summary(model2) TukeyHSD(model2) library(effectsize) eta_squared(model2) library(ggplot2) ggplot(gss, aes(x = factor(ATTEND), y = HAPPY)) + geom_boxplot() + labs(title = "Happiness by Religious Attendance", x = "Attendance Category", y = "Happiness") </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Df Sum Sq Mean Sq F value Pr(>F) factor(ATTEND) 8 12.4 1.55 6.90 3.1e-09 Residuals 2011 452.1 0.22 Eta2 = 0.027 </syntaxhighlight> '''The Interpretation:''' A significant effect of religious attendance on happiness (p < .001), with a small-to-modest effect size (η² = 0.027) — larger than the marital status effect in Example 1, but still leaving the overwhelming majority of variation in happiness explained by factors other than religious attendance. This is a genuinely common pattern in social-science ANOVA results: statistically real, substantively modest, worth reporting honestly as both. '''Follow-Up Challenge:''' Does the pattern in the Tukey output look linear (happiness increasing steadily with more attendance) or is it more irregular? What would a linear pattern versus an irregular one each suggest about the underlying relationship? === Example 3: Full Write-Up === '''The Research Question:''' How should the Example 1 result be written up for a sociology paper, including the post-hoc findings? '''The Code:''' (No new code — translating Example 1's output into prose.) '''The Output:''' <syntaxhighlight lang="text"> A one-way ANOVA found a significant effect of marital status on years of education, F(3, 2016) = 8.42, p < .001, eta-squared = 0.012. Tukey's HSD post-hoc comparisons indicated that never-married respondents had significantly more education than divorced respondents (95% CI [0.24, 1.56], p = .003). Despite reaching statistical significance, the overall effect size was small, indicating that marital status accounts for a modest share of the variance in educational attainment in this sample. </syntaxhighlight> '''The Interpretation:''' This write-up follows the same three-part discipline established in Chapters 13 and 14: report the overall test statistic, report the effect size, and be explicit about what the effect size implies for practical importance — never letting the p-value stand alone as if it were the whole story. '''Follow-Up Challenge:''' Write a comparable full write-up for Example 2's ATTEND/HAPPY result, including at least one specific pairwise comparison from its Tukey output. == References == <references/> ev9ic2s9dt3oxtkh2s6hwujhbo4w2d1 4656630 4656599 2026-08-07T15:02:14Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656630 wikitext text/x-wiki = Chapter 15: ANOVA and Effect Sizes = Chapter 13's t-test compares two groups. Real sociological variables rarely stop at two categories — marital status, religious attendance, region, education level all naturally split respondents into three, four, or more groups. This chapter extends the t-test's logic to exactly that situation, and introduces a new way of thinking about variance that will turn out to be the conceptual foundation for regression in Chapter 16 as well. == Why Not Just Run Multiple t-Tests? == If you have four marital status categories and want to compare education across all of them, why not just run every possible pairwise t-test — married vs. never married, married vs. divorced, and so on? Because doing so inflates your '''Type I error rate''' well beyond the α you think you're using. Each individual t-test carries a 5% false-positive risk on its own; run six pairwise comparisons across four groups, and the probability that ''at least one'' of them turns up "significant" by pure chance climbs well above 5% — closer to 25% or more, depending on how many comparisons you run. This is the '''multiple comparisons problem''', and it's a real, well-documented contributor to spurious findings in the published literature (recall Chapter 1's replication-crisis discussion, and Chapter 18's fuller treatment of p-hacking to come). ANOVA solves this by asking one question across all groups simultaneously, controlling the overall error rate properly, rather than asking many separate questions and hoping none of them get lucky. == One-Way ANOVA Logic == '''Analysis of Variance''' (ANOVA)<ref>Fisher, R. A. (1925). ''Statistical Methods for Research Workers''. Oliver and Boyd.</ref> is, despite the name, a test about means — it just gets there by '''partitioning variance''' into two components: variance '''between''' groups (how much the group means differ from the overall mean) and variance '''within''' groups (how much individual respondents vary around their own group's mean). ANOVA is just a fancy way of asking: is the spread between groups bigger than the spread within groups? If the groups vary more from each other than people vary within groups, something is probably going on. If people within each group are all over the place anyway, a difference between group means starts looking a lot less impressive by comparison. The '''F-statistic''' formalizes this directly as a ratio: between-group variance divided by within-group variance. : <math>F = \frac{MS_{between}}{MS_{within}} = \frac{SS_{between} / df_{between}}{SS_{within} / df_{within}}</math> Each ''MS'' ("mean square") is just a sum of squared deviations (''SS'', the same building block behind variance since Chapter 9) divided by its own degrees of freedom — ''df''<sub>between</sub> = ''k'' − 1 (one degree of freedom spent per group mean, where ''k'' is the number of groups) and ''df''<sub>within</sub> = ''N'' − ''k'' (one degree of freedom spent per group, subtracted from the total sample size), the same Sudoku-style logic from Chapter 9 showing up again at the level of whole groups instead of individual values. A large F means the between-group differences are large relative to the ordinary noise within each group; an F close to 1 means the groups aren't really separating from each other any more than random chance within a single group would produce. ANOVA's assumptions echo the t-test's from Chapter 13: approximate normality within each group (again, fairly robust with large samples), '''homogeneity of variance''' across groups (each group should show roughly similar spread — a group-level version of the equal-variance assumption Welch's t-test relaxed for two groups), and independence of observations. == Running ANOVA in R == <syntaxhighlight lang="r"> model <- aov(EDUC ~ factor(MARITAL), data = gss) summary(model) </syntaxhighlight> '''dplyr, for group descriptives before the test:''' <syntaxhighlight lang="r"> library(dplyr) gss %>% group_by(MARITAL) %>% summarize(mean_educ = mean(EDUC, na.rm = TRUE), sd_educ = sd(EDUC, na.rm = TRUE), n = n()) </syntaxhighlight> Note the <code>factor()</code> wrapped around <code>MARITAL</code> inside the formula — <code>aov()</code> needs to know this is a categorical grouping variable, not a number to treat arithmetically, which should feel like familiar territory after Chapter 4's entire discussion of exactly this distinction. == Post-Hoc Tests: Which Groups Actually Differ? == A significant ANOVA result tells you '''that''' the groups differ somewhere — it does not tell you '''which''' specific groups differ from which others. That's the job of a '''post-hoc test''', run only after a significant overall ANOVA result, and '''Tukey's HSD''' ("Honestly Significant Difference")<ref>Tukey, J. W. (1949). Comparing individual means in the analysis of variance. ''Biometrics'', 5(2), 99–114.</ref> is the standard choice — a name that sounds less like a statistical method and more like something you'd say to reassure a nervous coauthor. It compares every pair of groups while still properly controlling the overall Type I error rate, solving the exact problem that made running separate t-tests a bad idea in the first place. <syntaxhighlight lang="r"> TukeyHSD(model) </syntaxhighlight> The output gives you a confidence interval and adjusted p-value for every pairwise group comparison — married vs. divorced, divorced vs. never married, and so on — letting you say specifically where the differences live rather than just that they exist somewhere in the table. == Effect Size: Eta-Squared == '''Eta-squared''' (η²) is ANOVA's effect size, expressing the proportion of total variance in the outcome that's explained by group membership — conceptually a close relative of R² from the regression chapter just ahead. <syntaxhighlight lang="r"> library(effectsize) eta_squared(model) </syntaxhighlight> Rough benchmarks: around 0.01 is a small effect, around 0.06 is medium, and 0.14 or above is large — again, guides rather than laws, and worth interpreting in context rather than mechanically. == Visualizing Group Differences == <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = factor(MARITAL), y = EDUC)) + geom_boxplot() + labs(title = "Education by Marital Status", x = "Marital Status", y = "Years of Education") </syntaxhighlight> Box plots (Chapter 9) remain the right tool here, exactly as they were for the two-group comparisons in earlier chapters — they show both central tendency and spread across every group at once, which is precisely the between-versus-within comparison ANOVA is built around. <!-- FIGURE: A real box plot of EDUC by MARITAL from the 2010 GSS, showing both group medians and within-group spread. Author to generate. --> == Reporting Results == <blockquote> A one-way ANOVA found a significant effect of marital status on years of education, ''F''(3, 2016) = 8.42, ''p'' < .001, η² = 0.012. Tukey's HSD post-hoc comparisons indicated that never-married respondents (M = 14.1) had significantly more education than divorced respondents (M = 13.2, ''p'' = .003), though the overall effect size was small, suggesting marital status accounts for only a modest share of the variation in educational attainment. </blockquote> Notice, again, the discipline of reporting a small effect size honestly even when the p-value is comfortably significant — the same habit this book has insisted on since Chapter 1, now showing up for the third inferential test in a row. == Chapter Summary == ANOVA extends the t-test's logic to three or more groups by comparing between-group variance to within-group variance via the F-statistic, avoiding the inflated false-positive risk that running many separate pairwise t-tests would create. A significant ANOVA result establishes that group means differ somewhere, but identifying specifically which groups differ requires a post-hoc test like Tukey's HSD, which controls the overall error rate properly across all pairwise comparisons. Eta-squared, ANOVA's effect size, expresses the proportion of variance explained by group membership and should accompany every ANOVA result in this book, exactly as Cohen's d and Cramér's V have accompanied t-tests and chi-square tests. Box plots remain the natural visualization for comparing several groups' distributions at once. The core idea here — partitioning variance into explained and unexplained components — isn't just an ANOVA-specific trick; it's the same logic Chapter 16's regression is built on. == Practice Examples == === Example 1: Education by Marital Status === '''The Research Question:''' Does average education differ across marital status categories, and if so, which specific groups differ? '''The Code:''' <syntaxhighlight lang="r"> model <- aov(EDUC ~ factor(MARITAL), data = gss) summary(model) TukeyHSD(model) library(effectsize) eta_squared(model) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Df Sum Sq Mean Sq F value Pr(>F) factor(MARITAL) 3 203 67.7 8.42 1.2e-05 Residuals 2016 16200 8.0 Eta2 = 0.012 [95% CI: 0.005, 1.00] Tukey multiple comparisons of means diff lwr upr p adj Never married-Divorced 0.90 0.24 1.56 0.003 ... </syntaxhighlight> '''The Interpretation:''' The overall ANOVA is significant (p < .001), and Tukey's HSD narrows that down: never-married respondents have significantly more education than divorced respondents specifically, with a 95% CI for that gap ([0.24, 1.56] years) that excludes zero. The effect size (η² = 0.012) is small by conventional benchmarks — marital status explains about 1.2% of the total variance in education, meaningfully real but far from the dominant factor. '''Follow-Up Challenge:''' Look at the full Tukey output (not just the one comparison shown above). How many of the six pairwise comparisons turn out significant? Does the overall pattern make more sense once you see all of them together, rather than just the ANOVA's single p-value? === Example 2: Happiness by Religious Attendance === '''The Research Question:''' Does happiness differ across categories of religious attendance frequency? '''The Code:''' <syntaxhighlight lang="r"> model2 <- aov(HAPPY ~ factor(ATTEND), data = gss) summary(model2) TukeyHSD(model2) library(effectsize) eta_squared(model2) library(ggplot2) ggplot(gss, aes(x = factor(ATTEND), y = HAPPY)) + geom_boxplot() + labs(title = "Happiness by Religious Attendance", x = "Attendance Category", y = "Happiness") </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Df Sum Sq Mean Sq F value Pr(>F) factor(ATTEND) 8 12.4 1.55 6.90 3.1e-09 Residuals 2011 452.1 0.22 Eta2 = 0.027 </syntaxhighlight> '''The Interpretation:''' A significant effect of religious attendance on happiness (p < .001), with a small-to-modest effect size (η² = 0.027) — larger than the marital status effect in Example 1, but still leaving the overwhelming majority of variation in happiness explained by factors other than religious attendance. This is a genuinely common pattern in social-science ANOVA results: statistically real, substantively modest, worth reporting honestly as both. '''Follow-Up Challenge:''' Does the pattern in the Tukey output look linear (happiness increasing steadily with more attendance) or is it more irregular? What would a linear pattern versus an irregular one each suggest about the underlying relationship? === Example 3: Full Write-Up === '''The Research Question:''' How should the Example 1 result be written up for a sociology paper, including the post-hoc findings? '''The Code:''' (No new code — translating Example 1's output into prose.) '''The Output:''' <syntaxhighlight lang="text"> A one-way ANOVA found a significant effect of marital status on years of education, F(3, 2016) = 8.42, p < .001, eta-squared = 0.012. Tukey's HSD post-hoc comparisons indicated that never-married respondents had significantly more education than divorced respondents (95% CI [0.24, 1.56], p = .003). Despite reaching statistical significance, the overall effect size was small, indicating that marital status accounts for a modest share of the variance in educational attainment in this sample. </syntaxhighlight> '''The Interpretation:''' This write-up follows the same three-part discipline established in Chapters 13 and 14: report the overall test statistic, report the effect size, and be explicit about what the effect size implies for practical importance — never letting the p-value stand alone as if it were the whole story. '''Follow-Up Challenge:''' Write a comparable full write-up for Example 2's ATTEND/HAPPY result, including at least one specific pairwise comparison from its Tukey output. == References == <references/> {{BookCat}} lkx9vaz4t5vkxlv2hnkhytai18fd0uh Statistics for Sociologists/Chapter 16: Bivariate Regression, Correlation, and Effect Sizes 0 485157 4656601 2026-08-07T14:17:01Z Rcragun 41177 first draft 4656601 wikitext text/x-wiki = Chapter 16: Bivariate Regression, Correlation, and Effect Sizes = If sociology has a single workhorse statistical tool, it's the one in this chapter. Regression shows up in journal articles far more often than t-tests, chi-square tests, or ANOVA combined, for a simple reason: it answers a question sociologists ask constantly — given a predictor, how much of the outcome can we account for, and in which direction? This chapter builds the bivariate (two-variable) version. Go slowly. More students report feeling lost here than in any other chapter in this book, and that's a reasonable reaction to a genuinely dense idea, not a sign you're missing something everyone else finds obvious. == What Regression Does == '''Regression''' predicts a continuous outcome (the dependent variable, Chapter 4) from one or more predictors (independent variables). The bivariate case — one predictor, one outcome — is the foundation everything else in this chapter, and eventually multiple regression, builds on. == The Regression Equation == : <math>Y = a + bX + \varepsilon</math> * '''Y''' is the outcome you're predicting. * '''X''' is the predictor. * '''a''' (the intercept) is the predicted value of Y when X equals zero. * '''b''' (the slope) is the amount Y is predicted to change for every one-unit increase in X. * '''ε''' (epsilon, the residual) is everything the model doesn't explain — the gap between what the model predicts and what actually happened for a given respondent. The '''slope''' is the single most important number in this chapter, and it's worth memorizing its interpretation in exactly this form: "for every one-unit increase in X, Y is predicted to change by b units." Get comfortable saying that sentence out loud with your own variables plugged in. The '''intercept''' is sometimes meaningful and sometimes almost absurd, and checking which situation you're in is a habit worth building immediately. The intercept is the predicted value of Y when X is zero. This is sometimes meaningful (if someone could plausibly have zero years of education) and sometimes not (if someone could plausibly have zero age, they are not a GSS respondent — the survey only interviews adults, so an intercept describing "predicted income at age zero" is a mathematical artifact of extending a line back to a region with no real respondents in it, not a meaningful prediction about anyone). Always check whether X = 0 falls inside the range of your actual data before interpreting the intercept as though it describes something real. == Correlation: Measuring the Strength of a Linear Relationship == Before fitting an actual line, it's worth meeting the statistic that measures how tightly two continuous variables move together in the first place: '''Pearson's correlation coefficient''', ''r''.<ref>Pearson, K. (1896). Mathematical contributions to the theory of evolution. III. Regression, heredity, and panmixia. ''Philosophical Transactions of the Royal Society of London. Series A'', 187, 253–318.</ref> : <math>r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}}</math> ''r'' ranges from −1 to +1. The sign tells you the direction of the relationship (positive: as one variable goes up, so does the other; negative: as one goes up, the other tends to go down), and the magnitude tells you its strength, regardless of direction — an ''r'' of −0.6 and an ''r'' of +0.6 represent equally strong relationships, just pointed in opposite directions. An ''r'' of 0 means no linear relationship at all (though, importantly, it doesn't rule out a strong ''non''-linear one — correlation specifically measures straight-line association). <syntaxhighlight lang="r"> cor(gss$EDUC, gss$CONRINC, use = "complete.obs") cor.test(gss$EDUC, gss$CONRINC) </syntaxhighlight> <code>cor()</code> gives you the coefficient itself; <code>cor.test()</code> wraps it in a full hypothesis test (testing the null hypothesis that the true population correlation is zero) with a p-value and confidence interval, following the exact same testing logic as every other inferential procedure in this book since Chapter 13. Rough interpretation benchmarks track closely with Cohen's d's own logic from Chapter 13: around 0.1 is a small relationship, around 0.3 is medium, and 0.5 or above is large — guides, not laws, exactly as every other effect-size benchmark in this book has been. It would be professional malpractice for a statistics textbook to introduce correlation without the obligatory warning, so: '''correlation is not causation.''' Ice cream sales and drowning deaths are, across any given year, strongly positively correlated. Ice cream does not cause drowning (nor, to be fair, does drowning cause a craving for ice cream). Both rise and fall together because of a third variable doing the actual causal work: hot weather drives people toward both swimming pools and ice cream trucks simultaneously. A strong correlation tells you two variables move together; it never tells you why, on its own, and mistaking the two is one of the more common — and more avoidable — errors in published social science. == The Regression Equation, Revisited == Correlation tells you ''how strongly'' two variables move together. Regression takes the next step: it fits an actual line, with a specific slope and intercept, that lets you generate a predicted value of Y for any given value of X. The two are close mathematical relatives — in the bivariate case (one predictor, exactly like this chapter), ''r''² and R² (introduced shortly) are numerically identical — but regression gives you something correlation alone doesn't: a concrete, interpretable prediction equation. == Ordinary Least Squares == How does R decide where to draw the line? '''Ordinary Least Squares''' (OLS) finds the specific slope and intercept that minimize the sum of squared residuals — the total squared distance between every actual data point and the line's prediction for it: : <math>\text{minimize} \sum (Y_i - \hat{Y}_i)^2</math> where Ŷᵢ ("Y-hat") is the line's predicted value for respondent ''i'', and the difference between that prediction and the respondent's actual Y is the residual. Squaring, once again (Chapter 9, Chapter 14), keeps positive and negative errors from canceling out, and it has the added effect of penalizing large errors disproportionately more than small ones — a single wildly mispredicted respondent costs the model more, in this framework, than several respondents each mispredicted by a little. This book won't walk through the calculus that derives the OLS solution; R does that instantly, and the conceptual picture (find the line that leaves the least total squared distance to every point) is what matters for using and interpreting the result. == Running Regression in R == <syntaxhighlight lang="r"> model <- lm(CONRINC ~ EDUC, data = gss) summary(model) </syntaxhighlight> '''Reading the output:''' <code>summary(lm())</code> returns, for each predictor, an estimated coefficient (the slope, for <code>EDUC</code>), a standard error, a t-value, and a p-value — testing the null hypothesis that this particular slope is zero in the population. It also returns the intercept as its own row, with its own standard error and p-value, though the intercept's significance test is rarely the interesting part of the output. == Effect Size: R² == '''R²''' (R-squared) is regression's effect size: the proportion of variance in Y explained by X, ranging from 0 (the predictor explains nothing) to 1 (the predictor explains everything, which never actually happens with real social data). : <math>R^2 = 1 - \frac{SS_{residual}}{SS_{total}}</math> where SS_total is the total squared deviation of every Y value from its own mean (all the variation there is to explain), and SS_residual is what's left over after the model's predictions are subtracted out (the variation the model failed to explain). As promised above, in the bivariate case this is exactly the correlation coefficient squared: R² = ''r''². '''Adjusted R²''' applies a small penalty for the number of predictors in the model — irrelevant for a single-predictor bivariate model like this chapter's, but essential once you're comparing models with different numbers of predictors, which is exactly the situation multiple regression (briefly previewed at this chapter's end) puts you in. <syntaxhighlight lang="r"> summary(model)$r.squared summary(model)$adj.r.squared </syntaxhighlight> An R² of 0.15, for instance, means education accounts for about 15% of the variation in income in the sample — real and worth reporting, but leaving 85% of the variation explained by everything else: occupation, region, discrimination, luck, and dozens of other factors this bivariate model doesn't include. R² is, not coincidentally, closely related to eta-squared from Chapter 15 — both express "proportion of variance explained," just for different kinds of predictors (continuous here, categorical there). == Assumptions and Diagnostics == Regression rests on assumptions worth actually checking rather than assuming away: * '''Linearity''' — does a straight line actually describe the relationship? Check with a scatterplot before you trust the model at all. * '''Homoscedasticity''' — is the spread of residuals roughly constant across the full range of X, rather than fanning out or narrowing at one end? Check with a residual plot. * '''Normality of residuals''' — are the residuals themselves roughly normally distributed? Check with a Q-Q plot (Chapter 10). <syntaxhighlight lang="r"> plot(model) # produces four standard diagnostic plots, including residuals-vs-fitted and a Q-Q plot </syntaxhighlight> <code>plot()</code> called directly on an <code>lm()</code> object is one of R's more genuinely useful pieces of built-in convenience — four diagnostic plots from one line of code, no manual construction required. == Visualizing Regression == '''Base R:''' <syntaxhighlight lang="r"> plot(gss$EDUC, gss$CONRINC, xlab = "Years of Education", ylab = "Income (CONRINC)") abline(model, col = "red") </syntaxhighlight> '''ggplot2:''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = EDUC, y = CONRINC)) + geom_point(alpha = 0.3) + geom_smooth(method = "lm") + labs(title = "Income by Years of Education", x = "Years of Education", y = "Income (CONRINC)") </syntaxhighlight> <code>geom_smooth(method = "lm")</code> conveniently adds both the regression line and a shaded confidence band around it in a single layer — a nice visual complement to Chapter 12's confidence interval material, applied here to a whole predicted relationship rather than a single mean. <!-- FIGURE: A real scatterplot of CONRINC by EDUC from the 2010 GSS, with the OLS regression line and confidence band overlaid, plus a separate residual plot for the diagnostic discussion above. Author to generate. --> == Reading a Regression Table == Published sociology papers rarely show raw <code>summary(lm())</code> output — they show a formatted regression table, usually with coefficients, standard errors (often in parentheses beneath each coefficient), significance stars, and model fit statistics (R², N) at the bottom. Learning to translate between R's console output and a published table's format is its own small skill, worth practicing now rather than being surprised by it later when reading journal articles for a literature review. == A Note on Multiple Regression == Everything in this chapter generalizes to '''multiple regression''' — more than one predictor in the same model (<code>lm(CONRINC ~ EDUC + AGE + SEX, data = gss)</code>), which is how most published sociological regression analyses actually look, since a single predictor rarely tells the whole story. Multiple regression is beyond this book's scope, but you now have every conceptual piece you need to understand it once you encounter it: the equation just grows more terms, each with its own slope, each interpreted "holding the other predictors constant." That last phrase is doing a great deal of work, and it's exactly the kind of thing a follow-up course will unpack properly. {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Share your R script for any published regression analysis. A regression table printed in a journal article is a promise about what was found; the script that produced it is the only thing that turns that promise into something another researcher can actually check. Post it to OSF alongside your data (where licensing and privacy allow) and cite it in the paper itself — this is quickly becoming a baseline expectation in quantitative sociology, not an optional extra. }} == Chapter Summary == Pearson's ''r'' measures the strength and direction of a linear relationship between two continuous variables, computed with <code>cor()</code> and tested with <code>cor.test()</code> — and, as always, comes with the obligatory reminder that correlation is not causation. Bivariate regression takes the next step, predicting a continuous outcome from a single predictor via the equation Y = a + bX + ε, with the slope (b) — "for every one-unit increase in X, Y changes by b units" — as the most important number to interpret correctly, and the intercept (a) requiring a check of whether X = 0 is actually meaningful before you interpret it. R finds the OLS-best line via <code>lm()</code>, and <code>summary()</code> reports coefficients, standard errors, and significance tests for each. R², regression's effect size, expresses the proportion of variance in Y explained by X, connects directly to eta-squared from Chapter 15, and in the bivariate case is numerically identical to ''r''² — correlation and regression, quantifying the same underlying relationship from two angles. Diagnostics — linearity, homoscedasticity, normality of residuals — deserve an actual check via <code>plot(model)</code> rather than an assumption that they hold, and ggplot2's <code>geom_smooth(method = "lm")</code> visualizes both the fitted line and its uncertainty in one step. Multiple regression, beyond this book's scope, extends everything here to several predictors simultaneously and is where most published sociological regression work actually lives. == Practice Examples == === Example 1: Does Education Predict Income? === '''The Research Question:''' How much does education predict income, and how should the slope and intercept be interpreted? '''The Code:''' <syntaxhighlight lang="r"> model <- lm(CONRINC ~ EDUC, data = gss) summary(model) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -8420.5 2150.3 -3.92 9.2e-05 EDUC 3980.2 152.7 26.06 < 2e-16 Multiple R-squared: 0.252, Adjusted R-squared: 0.251 </syntaxhighlight> '''The Interpretation:''' For every additional year of education, predicted income increases by about $3,980, a highly significant relationship (p < .001). The intercept (−$8,420) is the model's predicted income for zero years of education — a mathematically necessary part of the line, but not a claim about any real respondent, since GSS adults with literally zero education are essentially nonexistent in the sample. Education accounts for about 25% of the variance in income (R² = 0.252) — a genuinely substantial share for a single predictor in social science, though still leaving three-quarters of the variation in income explained by factors outside this simple model. '''Follow-Up Challenge:''' Use the slope and intercept to predict the income of a respondent with 12 years of education, and separately, one with 20 years. How large is the gap between your two predictions, and does that gap feel intuitively reasonable to you? === Example 2: Scatterplot and Diagnostics === '''The Research Question:''' Does the education-income relationship actually look linear, and do the model's assumptions hold up? '''The Code:''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = EDUC, y = CONRINC)) + geom_point(alpha = 0.3) + geom_smooth(method = "lm") + labs(title = "Income by Education", x = "Years of Education", y = "Income") plot(model) # diagnostic plots </syntaxhighlight> '''The Output:''' A scatterplot with a fitted regression line and confidence band, plus four diagnostic plots (residuals vs. fitted, Q-Q plot of residuals, scale-location, residuals vs. leverage). '''The Interpretation:''' The scatterplot typically shows a genuine positive trend, but with substantial scatter around the line at every education level — consistent with the modest-but-real R² from Example 1. The residual plot commonly reveals a classic regression problem with income data specifically: '''heteroscedasticity''' — residual spread tends to fan outward at higher education (and higher predicted income) levels, since income variability itself grows among higher earners (recall Chapter 7 and Chapter 9's discussions of income's severe right-skew). This is worth naming honestly rather than ignoring; a more advanced course would address it with a log-transformed outcome or a different modeling approach, both beyond this book's scope but good to know exist. '''Follow-Up Challenge:''' Try re-running the model with <code>log(CONRINC)</code> as the outcome instead of raw <code>CONRINC</code> (you'll need to handle any zero or negative values first). Does the residual plot look more well-behaved afterward? === Example 3: Full Write-Up === '''The Research Question:''' How would the Example 1 result appear in a published sociology paper? '''The Code:''' (No new code — translating Example 1's output into prose.) '''The Output:''' <syntaxhighlight lang="text"> A bivariate OLS regression found that years of education significantly predicted income, b = 3980.2, SE = 152.7, t(2015) = 26.06, p < .001, R-squared = .252. Each additional year of education was associated with an estimated $3,980 increase in income. The model accounted for approximately 25% of the variance in income, indicating that while education is a substantial predictor, the majority of income variation in this sample remains unexplained by education alone. </syntaxhighlight> '''The Interpretation:''' Notice that this write-up, like every reporting template in this book since Chapter 13, refuses to let the significant p-value stand alone — R² is reported explicitly, and its practical meaning (75% of variance still unexplained) is spelled out in plain language rather than left for the reader to infer. '''Follow-Up Challenge:''' Rewrite this same result the way it might appear in a formatted regression table (coefficient, standard error in parentheses, significance stars, R² and N at the bottom) rather than as a sentence. Which format communicates more efficiently, and which communicates more completely? == References == <references/> cr6g24gnxgrpkckq2hgpbhdyyn8o89j 4656629 4656601 2026-08-07T15:02:10Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656629 wikitext text/x-wiki = Chapter 16: Bivariate Regression, Correlation, and Effect Sizes = If sociology has a single workhorse statistical tool, it's the one in this chapter. Regression shows up in journal articles far more often than t-tests, chi-square tests, or ANOVA combined, for a simple reason: it answers a question sociologists ask constantly — given a predictor, how much of the outcome can we account for, and in which direction? This chapter builds the bivariate (two-variable) version. Go slowly. More students report feeling lost here than in any other chapter in this book, and that's a reasonable reaction to a genuinely dense idea, not a sign you're missing something everyone else finds obvious. == What Regression Does == '''Regression''' predicts a continuous outcome (the dependent variable, Chapter 4) from one or more predictors (independent variables). The bivariate case — one predictor, one outcome — is the foundation everything else in this chapter, and eventually multiple regression, builds on. == The Regression Equation == : <math>Y = a + bX + \varepsilon</math> * '''Y''' is the outcome you're predicting. * '''X''' is the predictor. * '''a''' (the intercept) is the predicted value of Y when X equals zero. * '''b''' (the slope) is the amount Y is predicted to change for every one-unit increase in X. * '''ε''' (epsilon, the residual) is everything the model doesn't explain — the gap between what the model predicts and what actually happened for a given respondent. The '''slope''' is the single most important number in this chapter, and it's worth memorizing its interpretation in exactly this form: "for every one-unit increase in X, Y is predicted to change by b units." Get comfortable saying that sentence out loud with your own variables plugged in. The '''intercept''' is sometimes meaningful and sometimes almost absurd, and checking which situation you're in is a habit worth building immediately. The intercept is the predicted value of Y when X is zero. This is sometimes meaningful (if someone could plausibly have zero years of education) and sometimes not (if someone could plausibly have zero age, they are not a GSS respondent — the survey only interviews adults, so an intercept describing "predicted income at age zero" is a mathematical artifact of extending a line back to a region with no real respondents in it, not a meaningful prediction about anyone). Always check whether X = 0 falls inside the range of your actual data before interpreting the intercept as though it describes something real. == Correlation: Measuring the Strength of a Linear Relationship == Before fitting an actual line, it's worth meeting the statistic that measures how tightly two continuous variables move together in the first place: '''Pearson's correlation coefficient''', ''r''.<ref>Pearson, K. (1896). Mathematical contributions to the theory of evolution. III. Regression, heredity, and panmixia. ''Philosophical Transactions of the Royal Society of London. Series A'', 187, 253–318.</ref> : <math>r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}}</math> ''r'' ranges from −1 to +1. The sign tells you the direction of the relationship (positive: as one variable goes up, so does the other; negative: as one goes up, the other tends to go down), and the magnitude tells you its strength, regardless of direction — an ''r'' of −0.6 and an ''r'' of +0.6 represent equally strong relationships, just pointed in opposite directions. An ''r'' of 0 means no linear relationship at all (though, importantly, it doesn't rule out a strong ''non''-linear one — correlation specifically measures straight-line association). <syntaxhighlight lang="r"> cor(gss$EDUC, gss$CONRINC, use = "complete.obs") cor.test(gss$EDUC, gss$CONRINC) </syntaxhighlight> <code>cor()</code> gives you the coefficient itself; <code>cor.test()</code> wraps it in a full hypothesis test (testing the null hypothesis that the true population correlation is zero) with a p-value and confidence interval, following the exact same testing logic as every other inferential procedure in this book since Chapter 13. Rough interpretation benchmarks track closely with Cohen's d's own logic from Chapter 13: around 0.1 is a small relationship, around 0.3 is medium, and 0.5 or above is large — guides, not laws, exactly as every other effect-size benchmark in this book has been. It would be professional malpractice for a statistics textbook to introduce correlation without the obligatory warning, so: '''correlation is not causation.''' Ice cream sales and drowning deaths are, across any given year, strongly positively correlated. Ice cream does not cause drowning (nor, to be fair, does drowning cause a craving for ice cream). Both rise and fall together because of a third variable doing the actual causal work: hot weather drives people toward both swimming pools and ice cream trucks simultaneously. A strong correlation tells you two variables move together; it never tells you why, on its own, and mistaking the two is one of the more common — and more avoidable — errors in published social science. == The Regression Equation, Revisited == Correlation tells you ''how strongly'' two variables move together. Regression takes the next step: it fits an actual line, with a specific slope and intercept, that lets you generate a predicted value of Y for any given value of X. The two are close mathematical relatives — in the bivariate case (one predictor, exactly like this chapter), ''r''² and R² (introduced shortly) are numerically identical — but regression gives you something correlation alone doesn't: a concrete, interpretable prediction equation. == Ordinary Least Squares == How does R decide where to draw the line? '''Ordinary Least Squares''' (OLS) finds the specific slope and intercept that minimize the sum of squared residuals — the total squared distance between every actual data point and the line's prediction for it: : <math>\text{minimize} \sum (Y_i - \hat{Y}_i)^2</math> where Ŷᵢ ("Y-hat") is the line's predicted value for respondent ''i'', and the difference between that prediction and the respondent's actual Y is the residual. Squaring, once again (Chapter 9, Chapter 14), keeps positive and negative errors from canceling out, and it has the added effect of penalizing large errors disproportionately more than small ones — a single wildly mispredicted respondent costs the model more, in this framework, than several respondents each mispredicted by a little. This book won't walk through the calculus that derives the OLS solution; R does that instantly, and the conceptual picture (find the line that leaves the least total squared distance to every point) is what matters for using and interpreting the result. == Running Regression in R == <syntaxhighlight lang="r"> model <- lm(CONRINC ~ EDUC, data = gss) summary(model) </syntaxhighlight> '''Reading the output:''' <code>summary(lm())</code> returns, for each predictor, an estimated coefficient (the slope, for <code>EDUC</code>), a standard error, a t-value, and a p-value — testing the null hypothesis that this particular slope is zero in the population. It also returns the intercept as its own row, with its own standard error and p-value, though the intercept's significance test is rarely the interesting part of the output. == Effect Size: R² == '''R²''' (R-squared) is regression's effect size: the proportion of variance in Y explained by X, ranging from 0 (the predictor explains nothing) to 1 (the predictor explains everything, which never actually happens with real social data). : <math>R^2 = 1 - \frac{SS_{residual}}{SS_{total}}</math> where SS_total is the total squared deviation of every Y value from its own mean (all the variation there is to explain), and SS_residual is what's left over after the model's predictions are subtracted out (the variation the model failed to explain). As promised above, in the bivariate case this is exactly the correlation coefficient squared: R² = ''r''². '''Adjusted R²''' applies a small penalty for the number of predictors in the model — irrelevant for a single-predictor bivariate model like this chapter's, but essential once you're comparing models with different numbers of predictors, which is exactly the situation multiple regression (briefly previewed at this chapter's end) puts you in. <syntaxhighlight lang="r"> summary(model)$r.squared summary(model)$adj.r.squared </syntaxhighlight> An R² of 0.15, for instance, means education accounts for about 15% of the variation in income in the sample — real and worth reporting, but leaving 85% of the variation explained by everything else: occupation, region, discrimination, luck, and dozens of other factors this bivariate model doesn't include. R² is, not coincidentally, closely related to eta-squared from Chapter 15 — both express "proportion of variance explained," just for different kinds of predictors (continuous here, categorical there). == Assumptions and Diagnostics == Regression rests on assumptions worth actually checking rather than assuming away: * '''Linearity''' — does a straight line actually describe the relationship? Check with a scatterplot before you trust the model at all. * '''Homoscedasticity''' — is the spread of residuals roughly constant across the full range of X, rather than fanning out or narrowing at one end? Check with a residual plot. * '''Normality of residuals''' — are the residuals themselves roughly normally distributed? Check with a Q-Q plot (Chapter 10). <syntaxhighlight lang="r"> plot(model) # produces four standard diagnostic plots, including residuals-vs-fitted and a Q-Q plot </syntaxhighlight> <code>plot()</code> called directly on an <code>lm()</code> object is one of R's more genuinely useful pieces of built-in convenience — four diagnostic plots from one line of code, no manual construction required. == Visualizing Regression == '''Base R:''' <syntaxhighlight lang="r"> plot(gss$EDUC, gss$CONRINC, xlab = "Years of Education", ylab = "Income (CONRINC)") abline(model, col = "red") </syntaxhighlight> '''ggplot2:''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = EDUC, y = CONRINC)) + geom_point(alpha = 0.3) + geom_smooth(method = "lm") + labs(title = "Income by Years of Education", x = "Years of Education", y = "Income (CONRINC)") </syntaxhighlight> <code>geom_smooth(method = "lm")</code> conveniently adds both the regression line and a shaded confidence band around it in a single layer — a nice visual complement to Chapter 12's confidence interval material, applied here to a whole predicted relationship rather than a single mean. <!-- FIGURE: A real scatterplot of CONRINC by EDUC from the 2010 GSS, with the OLS regression line and confidence band overlaid, plus a separate residual plot for the diagnostic discussion above. Author to generate. --> == Reading a Regression Table == Published sociology papers rarely show raw <code>summary(lm())</code> output — they show a formatted regression table, usually with coefficients, standard errors (often in parentheses beneath each coefficient), significance stars, and model fit statistics (R², N) at the bottom. Learning to translate between R's console output and a published table's format is its own small skill, worth practicing now rather than being surprised by it later when reading journal articles for a literature review. == A Note on Multiple Regression == Everything in this chapter generalizes to '''multiple regression''' — more than one predictor in the same model (<code>lm(CONRINC ~ EDUC + AGE + SEX, data = gss)</code>), which is how most published sociological regression analyses actually look, since a single predictor rarely tells the whole story. Multiple regression is beyond this book's scope, but you now have every conceptual piece you need to understand it once you encounter it: the equation just grows more terms, each with its own slope, each interpreted "holding the other predictors constant." That last phrase is doing a great deal of work, and it's exactly the kind of thing a follow-up course will unpack properly. {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Share your R script for any published regression analysis. A regression table printed in a journal article is a promise about what was found; the script that produced it is the only thing that turns that promise into something another researcher can actually check. Post it to OSF alongside your data (where licensing and privacy allow) and cite it in the paper itself — this is quickly becoming a baseline expectation in quantitative sociology, not an optional extra. }} == Chapter Summary == Pearson's ''r'' measures the strength and direction of a linear relationship between two continuous variables, computed with <code>cor()</code> and tested with <code>cor.test()</code> — and, as always, comes with the obligatory reminder that correlation is not causation. Bivariate regression takes the next step, predicting a continuous outcome from a single predictor via the equation Y = a + bX + ε, with the slope (b) — "for every one-unit increase in X, Y changes by b units" — as the most important number to interpret correctly, and the intercept (a) requiring a check of whether X = 0 is actually meaningful before you interpret it. R finds the OLS-best line via <code>lm()</code>, and <code>summary()</code> reports coefficients, standard errors, and significance tests for each. R², regression's effect size, expresses the proportion of variance in Y explained by X, connects directly to eta-squared from Chapter 15, and in the bivariate case is numerically identical to ''r''² — correlation and regression, quantifying the same underlying relationship from two angles. Diagnostics — linearity, homoscedasticity, normality of residuals — deserve an actual check via <code>plot(model)</code> rather than an assumption that they hold, and ggplot2's <code>geom_smooth(method = "lm")</code> visualizes both the fitted line and its uncertainty in one step. Multiple regression, beyond this book's scope, extends everything here to several predictors simultaneously and is where most published sociological regression work actually lives. == Practice Examples == === Example 1: Does Education Predict Income? === '''The Research Question:''' How much does education predict income, and how should the slope and intercept be interpreted? '''The Code:''' <syntaxhighlight lang="r"> model <- lm(CONRINC ~ EDUC, data = gss) summary(model) </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -8420.5 2150.3 -3.92 9.2e-05 EDUC 3980.2 152.7 26.06 < 2e-16 Multiple R-squared: 0.252, Adjusted R-squared: 0.251 </syntaxhighlight> '''The Interpretation:''' For every additional year of education, predicted income increases by about $3,980, a highly significant relationship (p < .001). The intercept (−$8,420) is the model's predicted income for zero years of education — a mathematically necessary part of the line, but not a claim about any real respondent, since GSS adults with literally zero education are essentially nonexistent in the sample. Education accounts for about 25% of the variance in income (R² = 0.252) — a genuinely substantial share for a single predictor in social science, though still leaving three-quarters of the variation in income explained by factors outside this simple model. '''Follow-Up Challenge:''' Use the slope and intercept to predict the income of a respondent with 12 years of education, and separately, one with 20 years. How large is the gap between your two predictions, and does that gap feel intuitively reasonable to you? === Example 2: Scatterplot and Diagnostics === '''The Research Question:''' Does the education-income relationship actually look linear, and do the model's assumptions hold up? '''The Code:''' <syntaxhighlight lang="r"> library(ggplot2) ggplot(gss, aes(x = EDUC, y = CONRINC)) + geom_point(alpha = 0.3) + geom_smooth(method = "lm") + labs(title = "Income by Education", x = "Years of Education", y = "Income") plot(model) # diagnostic plots </syntaxhighlight> '''The Output:''' A scatterplot with a fitted regression line and confidence band, plus four diagnostic plots (residuals vs. fitted, Q-Q plot of residuals, scale-location, residuals vs. leverage). '''The Interpretation:''' The scatterplot typically shows a genuine positive trend, but with substantial scatter around the line at every education level — consistent with the modest-but-real R² from Example 1. The residual plot commonly reveals a classic regression problem with income data specifically: '''heteroscedasticity''' — residual spread tends to fan outward at higher education (and higher predicted income) levels, since income variability itself grows among higher earners (recall Chapter 7 and Chapter 9's discussions of income's severe right-skew). This is worth naming honestly rather than ignoring; a more advanced course would address it with a log-transformed outcome or a different modeling approach, both beyond this book's scope but good to know exist. '''Follow-Up Challenge:''' Try re-running the model with <code>log(CONRINC)</code> as the outcome instead of raw <code>CONRINC</code> (you'll need to handle any zero or negative values first). Does the residual plot look more well-behaved afterward? === Example 3: Full Write-Up === '''The Research Question:''' How would the Example 1 result appear in a published sociology paper? '''The Code:''' (No new code — translating Example 1's output into prose.) '''The Output:''' <syntaxhighlight lang="text"> A bivariate OLS regression found that years of education significantly predicted income, b = 3980.2, SE = 152.7, t(2015) = 26.06, p < .001, R-squared = .252. Each additional year of education was associated with an estimated $3,980 increase in income. The model accounted for approximately 25% of the variance in income, indicating that while education is a substantial predictor, the majority of income variation in this sample remains unexplained by education alone. </syntaxhighlight> '''The Interpretation:''' Notice that this write-up, like every reporting template in this book since Chapter 13, refuses to let the significant p-value stand alone — R² is reported explicitly, and its practical meaning (75% of variance still unexplained) is spelled out in plain language rather than left for the reader to infer. '''Follow-Up Challenge:''' Rewrite this same result the way it might appear in a formatted regression table (coefficient, standard error in parentheses, significance stars, R² and N at the bottom) rather than as a sentence. Which format communicates more efficiently, and which communicates more completely? == References == <references/> {{BookCat}} om46vvuv34qaynu0cqrrxo2q37a7ccy Statistics for Sociologists/Chapter 17: An Introduction to Bayesian Thinking 0 485158 4656602 2026-08-07T14:17:25Z Rcragun 41177 first draft 4656602 wikitext text/x-wiki = Chapter 17: An Introduction to Bayesian Thinking = Everything in this book from Chapter 11 onward has followed one particular philosophy of statistics, without ever quite naming it as a choice. This chapter names it, and introduces the alternative. No new math machinery to speak of — just a genuinely different way of thinking about what probability even means, and one accessible R package for trying it out on a question you've already answered the other way. == Two Philosophies of Statistics == The '''frequentist''' approach — everything through Chapter 16 — treats probability as long-run frequency: the probability of an event is the proportion of times it would occur across infinitely many repetitions. Parameters (the true population mean, the true slope) are treated as fixed, unknown constants, and the data are treated as random — which is why a frequentist confidence interval's correct interpretation (Chapter 12) is so awkwardly indirect: it's a statement about the reliability of the method across repeated sampling, not a direct probability statement about the parameter itself. The '''Bayesian''' approach flips this around. Probability represents a '''degree of belief''', which can attach directly to a parameter. Data are treated as fixed (you observed what you observed); the parameter is treated as uncertain, and probability describes exactly how uncertain. This isn't just a technical rearrangement — it changes what kinds of questions you're allowed to ask directly. A Bayesian is entitled to say "there's an 80% probability the true effect is positive." A frequentist, strictly, is not; a frequentist can only talk about how often a method would succeed across repetitions, never assign a direct probability to a specific fixed parameter. == The Bayesian Update: Prior + Data → Posterior == The core Bayesian move is genuinely intuitive once you see it stated plainly, because it's how humans actually reason when they're thinking carefully: start with a '''prior''' belief, encounter new evidence, and update to a '''posterior''' belief that blends the two. Bayesians update their beliefs when confronted with new evidence. This makes them both principled statisticians and very unusual people. '''Bayes' Theorem''' is the formal engine behind this update — this book states it conceptually and stops there, since a full derivation belongs in a dedicated Bayesian statistics course rather than an introductory chapter: : Posterior probability ∝ Prior probability × Likelihood of the observed data In words: your updated belief is proportional to how plausible you thought something was beforehand, adjusted by how well the new data actually fit that possibility. A concrete example: before looking at any GSS data, what do you believe about the relationship between education and income? Probably something like "more education tends to predict more income, though not perfectly, and the relationship is likely moderate rather than either trivial or overwhelming" — a genuinely informative prior belief, built from general knowledge of the world, well before touching a dataset. After seeing Chapter 16's regression result (a clear, positive, moderately strong relationship, R² around 0.25), a Bayesian would ''update'' that prior belief toward greater confidence in something like the observed pattern — not discard the prior entirely, and not ignore the data either, but blend the two according to how strong each one is. The prior/posterior update is a natural fit for sociological thinking generally — sociologists already believe, as a matter of basic disciplinary common sense, that context shapes interpretation. Bayesian inference just formalizes that instinct mathematically. == Bayesian t-Tests With the BayesFactor Package == <syntaxhighlight lang="r"> library(BayesFactor) ttestBF(formula = EDUC ~ SEX, data = as.data.frame(gss)) </syntaxhighlight> The <code>BayesFactor</code> package<ref>Morey, R. D., & Rouder, J. N. ''BayesFactor: Computation of Bayes Factors for Common Designs''. R package. https://richarddmorey.github.io/BayesFactor/</ref> does the heavy computational lifting here. This asks essentially the same question as Chapter 13's independent-samples t-test, but returns a different kind of answer: a '''Bayes Factor'''<ref>Kass, R. E., & Raftery, A. E. (1995). Bayes factors. ''Journal of the American Statistical Association'', 90(430), 773–795.</ref> (BF) rather than a p-value. A Bayes Factor expresses how much more likely the observed data are under the alternative hypothesis (H₁: there's a real difference) compared to the null hypothesis (H₀: there's no difference). A BF of 5 means the data are five times more likely under H₁ than under H₀ — direct evidence ''for'' one hypothesis relative to the other, which is a meaningfully different kind of statement than a p-value's "how surprising would this be if H₀ were exactly true," and notably, a Bayes Factor can provide genuine evidence ''for'' the null, something a p-value structurally cannot do (a large p-value only ever means "not enough evidence to reject the null," never "evidence the null is true"). Rough interpretation benchmarks, widely (if informally) used<ref>Lee, M. D., & Wagenmakers, E.-J. (2014). ''Bayesian Cognitive Modeling: A Practical Course''. Cambridge University Press. (Adapting the classification scale originally proposed by Jeffreys, H. (1961). ''Theory of Probability'' (3rd ed.). Oxford University Press.)</ref>: {| class="wikitable" |- ! Bayes Factor !! Strength of Evidence |- | 1–3 || Barely worth mentioning |- | 3–10 || Moderate evidence |- | 10–30 || Strong evidence |- | 30–100 || Very strong evidence |- | >100 || Extreme evidence |} (And, symmetrically, a BF between 1/3 and 1 is weak evidence ''for'' the null; below 1/10, moderate evidence for the null; and so on in the other direction.) == Why Bayesian Methods Are Gaining Ground == Bayesian methods are attracting more attention across the social sciences for a few genuine reasons: they're honest about uncertainty in a direct, interpretable way; they update naturally as new evidence accumulates, which maps well onto how a research literature is supposed to actually work over time; and they don't force a binary significant/not-significant decision the way conventional null-hypothesis testing does, offering instead a continuous measure of evidential strength. They come with real limitations too. '''Prior choice matters''' — a badly chosen or overly opinionated prior can meaningfully distort a Bayesian analysis, and defending your choice of prior is a genuine, sometimes contentious, part of doing Bayesian work honestly. And Bayesian methods can be considerably more '''computationally intensive''' for complex models than their frequentist equivalents, though the simple Bayesian t-test shown here is not one of the cases where that matters. I'll be honest about my own position as the author here: I learned Bayesian statistics in the process of writing this chapter. You can too. This isn't a field that requires a separate PhD to engage with at the level this book operates on — it requires a willingness to think about probability a little differently than you've been trained to for the last sixteen chapters, and a decent R package to handle the computation once you understand what you're asking it to do. == Chapter Summary == Frequentist statistics (everything through Chapter 16) treats probability as long-run frequency and parameters as fixed unknowns; Bayesian statistics treats probability as degree of belief and allows that belief to attach directly to a parameter, updating a prior belief into a posterior belief as new data arrive. The <code>BayesFactor</code> package's <code>ttestBF()</code> function runs a Bayesian alternative to Chapter 13's t-test, returning a Bayes Factor — a direct measure of how much more likely the data are under one hypothesis versus the other, interpretable via rough benchmarks and capable, unlike a p-value, of providing genuine evidence for the null. Bayesian methods are gaining traction for their honesty about uncertainty and their natural fit with how evidence should accumulate over a research career, though prior selection and, for complex models, computational cost remain real considerations. == Practice Examples == === Example 1: Bayesian t-Test for Sex Differences in Education === '''The Research Question:''' How does a Bayesian answer to Chapter 13's education-by-sex question compare to the frequentist p-value already obtained there? '''The Code:''' <syntaxhighlight lang="r"> library(BayesFactor) bf <- ttestBF(formula = EDUC ~ SEX, data = as.data.frame(gss)) bf </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Bayes factor analysis -------------- [1] Alt., r=0.707 : 0.62 ±0% Against denominator: Null, mu1-mu2 = 0 --- Bayes factor type: BFindepSample, JZS </syntaxhighlight> '''The Interpretation:''' A Bayes Factor of about 0.62 means the data are actually somewhat ''more'' likely under the null hypothesis (no difference) than under the alternative — weak evidence favoring no meaningful sex difference in education, which lines up closely with Chapter 13's frequentist result: a non-significant p-value (.156) and a negligible Cohen's d (0.06). Frequentist and Bayesian approaches don't always agree this cleanly, but when they do, it's a reassuring form of convergent evidence — two different philosophies of inference, applied to the same data, telling a consistent story. '''Follow-Up Challenge:''' Compare this BF to Chapter 13's exact p-value (.156) side by side. Do you find the Bayes Factor or the p-value more intuitively informative as a reader? Try to articulate specifically why. === Example 2: Interpreting Three Different Bayes Factors === '''The Research Question:''' What does the strength of evidence actually look like across a range of possible Bayes Factor results? '''The Code:''' (No new code — a conceptual interpretation exercise using the benchmark table above.) '''The Output:''' Three hypothetical Bayes Factors to interpret: BF = 45, BF = 2.1, and BF = 0.15. '''The Interpretation:''' A BF of 45 falls in the "very strong evidence" range — the data are 45 times more likely under the alternative hypothesis than the null, about as convincing as evidence gets in an applied social science context. A BF of 2.1 is barely worth mentioning on its own — the data are only about twice as likely under the alternative, evidence weak enough that a careful researcher would want more data before drawing any real conclusion. A BF of 0.15 flips the direction entirely: since 1/0.15 ≈ 6.7, this is moderate evidence '''for''' the null hypothesis — a meaningfully different, and more informative, conclusion than a frequentist "failed to reject the null," which can never distinguish "genuine evidence for no effect" from "just not enough data to tell." '''Follow-Up Challenge:''' For each of the three Bayes Factors above, write one sentence describing what you would tell a colleague about the evidence — the way you'd actually explain it out loud, not just the technical classification. '''Follow-Up Challenge (chapter-level):''' Find one published sociology paper that uses Bayesian methods (a search for "Bayes factor" or "Bayesian" alongside a topic you're interested in, in Google Scholar, will turn up a growing number). What does the paper's author say they gain from the Bayesian approach that a conventional analysis wouldn't have offered? Does their justification feel convincing to you? == References == <references/> 863dxdeok7cfx8w1bh15yuy29zakxzz 4656628 4656602 2026-08-07T15:02:06Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656628 wikitext text/x-wiki = Chapter 17: An Introduction to Bayesian Thinking = Everything in this book from Chapter 11 onward has followed one particular philosophy of statistics, without ever quite naming it as a choice. This chapter names it, and introduces the alternative. No new math machinery to speak of — just a genuinely different way of thinking about what probability even means, and one accessible R package for trying it out on a question you've already answered the other way. == Two Philosophies of Statistics == The '''frequentist''' approach — everything through Chapter 16 — treats probability as long-run frequency: the probability of an event is the proportion of times it would occur across infinitely many repetitions. Parameters (the true population mean, the true slope) are treated as fixed, unknown constants, and the data are treated as random — which is why a frequentist confidence interval's correct interpretation (Chapter 12) is so awkwardly indirect: it's a statement about the reliability of the method across repeated sampling, not a direct probability statement about the parameter itself. The '''Bayesian''' approach flips this around. Probability represents a '''degree of belief''', which can attach directly to a parameter. Data are treated as fixed (you observed what you observed); the parameter is treated as uncertain, and probability describes exactly how uncertain. This isn't just a technical rearrangement — it changes what kinds of questions you're allowed to ask directly. A Bayesian is entitled to say "there's an 80% probability the true effect is positive." A frequentist, strictly, is not; a frequentist can only talk about how often a method would succeed across repetitions, never assign a direct probability to a specific fixed parameter. == The Bayesian Update: Prior + Data → Posterior == The core Bayesian move is genuinely intuitive once you see it stated plainly, because it's how humans actually reason when they're thinking carefully: start with a '''prior''' belief, encounter new evidence, and update to a '''posterior''' belief that blends the two. Bayesians update their beliefs when confronted with new evidence. This makes them both principled statisticians and very unusual people. '''Bayes' Theorem''' is the formal engine behind this update — this book states it conceptually and stops there, since a full derivation belongs in a dedicated Bayesian statistics course rather than an introductory chapter: : Posterior probability ∝ Prior probability × Likelihood of the observed data In words: your updated belief is proportional to how plausible you thought something was beforehand, adjusted by how well the new data actually fit that possibility. A concrete example: before looking at any GSS data, what do you believe about the relationship between education and income? Probably something like "more education tends to predict more income, though not perfectly, and the relationship is likely moderate rather than either trivial or overwhelming" — a genuinely informative prior belief, built from general knowledge of the world, well before touching a dataset. After seeing Chapter 16's regression result (a clear, positive, moderately strong relationship, R² around 0.25), a Bayesian would ''update'' that prior belief toward greater confidence in something like the observed pattern — not discard the prior entirely, and not ignore the data either, but blend the two according to how strong each one is. The prior/posterior update is a natural fit for sociological thinking generally — sociologists already believe, as a matter of basic disciplinary common sense, that context shapes interpretation. Bayesian inference just formalizes that instinct mathematically. == Bayesian t-Tests With the BayesFactor Package == <syntaxhighlight lang="r"> library(BayesFactor) ttestBF(formula = EDUC ~ SEX, data = as.data.frame(gss)) </syntaxhighlight> The <code>BayesFactor</code> package<ref>Morey, R. D., & Rouder, J. N. ''BayesFactor: Computation of Bayes Factors for Common Designs''. R package. https://richarddmorey.github.io/BayesFactor/</ref> does the heavy computational lifting here. This asks essentially the same question as Chapter 13's independent-samples t-test, but returns a different kind of answer: a '''Bayes Factor'''<ref>Kass, R. E., & Raftery, A. E. (1995). Bayes factors. ''Journal of the American Statistical Association'', 90(430), 773–795.</ref> (BF) rather than a p-value. A Bayes Factor expresses how much more likely the observed data are under the alternative hypothesis (H₁: there's a real difference) compared to the null hypothesis (H₀: there's no difference). A BF of 5 means the data are five times more likely under H₁ than under H₀ — direct evidence ''for'' one hypothesis relative to the other, which is a meaningfully different kind of statement than a p-value's "how surprising would this be if H₀ were exactly true," and notably, a Bayes Factor can provide genuine evidence ''for'' the null, something a p-value structurally cannot do (a large p-value only ever means "not enough evidence to reject the null," never "evidence the null is true"). Rough interpretation benchmarks, widely (if informally) used<ref>Lee, M. D., & Wagenmakers, E.-J. (2014). ''Bayesian Cognitive Modeling: A Practical Course''. Cambridge University Press. (Adapting the classification scale originally proposed by Jeffreys, H. (1961). ''Theory of Probability'' (3rd ed.). Oxford University Press.)</ref>: {| class="wikitable" |- ! Bayes Factor !! Strength of Evidence |- | 1–3 || Barely worth mentioning |- | 3–10 || Moderate evidence |- | 10–30 || Strong evidence |- | 30–100 || Very strong evidence |- | >100 || Extreme evidence |} (And, symmetrically, a BF between 1/3 and 1 is weak evidence ''for'' the null; below 1/10, moderate evidence for the null; and so on in the other direction.) == Why Bayesian Methods Are Gaining Ground == Bayesian methods are attracting more attention across the social sciences for a few genuine reasons: they're honest about uncertainty in a direct, interpretable way; they update naturally as new evidence accumulates, which maps well onto how a research literature is supposed to actually work over time; and they don't force a binary significant/not-significant decision the way conventional null-hypothesis testing does, offering instead a continuous measure of evidential strength. They come with real limitations too. '''Prior choice matters''' — a badly chosen or overly opinionated prior can meaningfully distort a Bayesian analysis, and defending your choice of prior is a genuine, sometimes contentious, part of doing Bayesian work honestly. And Bayesian methods can be considerably more '''computationally intensive''' for complex models than their frequentist equivalents, though the simple Bayesian t-test shown here is not one of the cases where that matters. I'll be honest about my own position as the author here: I learned Bayesian statistics in the process of writing this chapter. You can too. This isn't a field that requires a separate PhD to engage with at the level this book operates on — it requires a willingness to think about probability a little differently than you've been trained to for the last sixteen chapters, and a decent R package to handle the computation once you understand what you're asking it to do. == Chapter Summary == Frequentist statistics (everything through Chapter 16) treats probability as long-run frequency and parameters as fixed unknowns; Bayesian statistics treats probability as degree of belief and allows that belief to attach directly to a parameter, updating a prior belief into a posterior belief as new data arrive. The <code>BayesFactor</code> package's <code>ttestBF()</code> function runs a Bayesian alternative to Chapter 13's t-test, returning a Bayes Factor — a direct measure of how much more likely the data are under one hypothesis versus the other, interpretable via rough benchmarks and capable, unlike a p-value, of providing genuine evidence for the null. Bayesian methods are gaining traction for their honesty about uncertainty and their natural fit with how evidence should accumulate over a research career, though prior selection and, for complex models, computational cost remain real considerations. == Practice Examples == === Example 1: Bayesian t-Test for Sex Differences in Education === '''The Research Question:''' How does a Bayesian answer to Chapter 13's education-by-sex question compare to the frequentist p-value already obtained there? '''The Code:''' <syntaxhighlight lang="r"> library(BayesFactor) bf <- ttestBF(formula = EDUC ~ SEX, data = as.data.frame(gss)) bf </syntaxhighlight> '''The Output:''' <syntaxhighlight lang="r"> Bayes factor analysis -------------- [1] Alt., r=0.707 : 0.62 ±0% Against denominator: Null, mu1-mu2 = 0 --- Bayes factor type: BFindepSample, JZS </syntaxhighlight> '''The Interpretation:''' A Bayes Factor of about 0.62 means the data are actually somewhat ''more'' likely under the null hypothesis (no difference) than under the alternative — weak evidence favoring no meaningful sex difference in education, which lines up closely with Chapter 13's frequentist result: a non-significant p-value (.156) and a negligible Cohen's d (0.06). Frequentist and Bayesian approaches don't always agree this cleanly, but when they do, it's a reassuring form of convergent evidence — two different philosophies of inference, applied to the same data, telling a consistent story. '''Follow-Up Challenge:''' Compare this BF to Chapter 13's exact p-value (.156) side by side. Do you find the Bayes Factor or the p-value more intuitively informative as a reader? Try to articulate specifically why. === Example 2: Interpreting Three Different Bayes Factors === '''The Research Question:''' What does the strength of evidence actually look like across a range of possible Bayes Factor results? '''The Code:''' (No new code — a conceptual interpretation exercise using the benchmark table above.) '''The Output:''' Three hypothetical Bayes Factors to interpret: BF = 45, BF = 2.1, and BF = 0.15. '''The Interpretation:''' A BF of 45 falls in the "very strong evidence" range — the data are 45 times more likely under the alternative hypothesis than the null, about as convincing as evidence gets in an applied social science context. A BF of 2.1 is barely worth mentioning on its own — the data are only about twice as likely under the alternative, evidence weak enough that a careful researcher would want more data before drawing any real conclusion. A BF of 0.15 flips the direction entirely: since 1/0.15 ≈ 6.7, this is moderate evidence '''for''' the null hypothesis — a meaningfully different, and more informative, conclusion than a frequentist "failed to reject the null," which can never distinguish "genuine evidence for no effect" from "just not enough data to tell." '''Follow-Up Challenge:''' For each of the three Bayes Factors above, write one sentence describing what you would tell a colleague about the evidence — the way you'd actually explain it out loud, not just the technical classification. '''Follow-Up Challenge (chapter-level):''' Find one published sociology paper that uses Bayesian methods (a search for "Bayes factor" or "Bayesian" alongside a topic you're interested in, in Google Scholar, will turn up a growing number). What does the paper's author say they gain from the Bayesian approach that a conventional analysis wouldn't have offered? Does their justification feel convincing to you? == References == <references/> {{BookCat}} dizjb4fsrfgnswbxv4sb6rltc3dwf22 Statistics for Sociologists/Chapter 18: Putting It All Together - Replicating Sociological Research 0 485159 4656603 2026-08-07T14:18:01Z Rcragun 41177 first draft 4656603 wikitext text/x-wiki = Chapter 18: Putting It All Together — Replicating Sociological Research = Seventeen chapters ago, this book opened with an uncomfortable fact: a large share of published findings across the social and behavioral sciences — sociology included, by name, not just psychology's problem to solve — don't hold up when someone else checks them. Every skill since then has been building toward the ability to do the checking yourself. This capstone chapter asks you to actually do it: find a real, published, GSS-based sociological finding, and see whether it holds up under your own hands. This is not busywork tacked onto the end of a syllabus. It is, quite possibly, the single most professionally useful thing this book has taught you. == Why Replication Matters, Revisited == Chapter 1 introduced the replication crisis through the 2015 Open Science Collaboration project (psychology)<ref>Open Science Collaboration. (2015). Estimating the reproducibility of psychological science. ''Science'', 349(6251), aac4716.</ref> and the 2026 Tyner et al. study (business, economics, education, political science, psychology, ''and'' sociology, replicating at 51.1% — statistically indistinguishable from psychology's 49.0%).<ref>Tyner, A. H. et al. (2026). Investigating the replicability of the social and behavioural sciences. ''Nature'', 652, 143–150.</ref> Both numbers are worth having in your head again right now, at the end of this book, because this chapter is where that abstract statistic becomes a concrete, personal exercise: somewhere between one in three and one in two published quantitative findings in your own field, tested rigorously, fails to replicate. You are about to find out, firsthand, what that actually looks like from the inside. It's worth being precise about two related but distinct ideas this book has used somewhat loosely up to now: * '''Replication''' — rerunning the same methods on the ''same'' data, checking whether you get the same result. This is a check on computational and analytical correctness: did the original researcher's code do what they said it did? * '''Reproduction''' — rerunning the same methods on ''new'' data, checking whether the finding generalizes beyond the original sample. This is a check on whether the underlying claim about the world is actually true, not just whether the original arithmetic was correct. Both matter, and this chapter's capstone project will primarily involve the first — since you'll be working with the same GSS 2010 data the original researchers most likely used, or a closely related wave — while thinking carefully about what the second would require. '''Replication is a scientific norm, not an insult.''' Attempting to replicate someone's work is not an accusation of dishonesty; it's the ordinary, expected functioning of a healthy discipline. Treat every replication attempt in this chapter — including any that fail — in that spirit. == p-Hacking and Researcher Degrees of Freedom == Some researchers, when faced with a non-significant result, try a different analysis. Then another. Then another. This is called "exploring the data" by optimists and "p-hacking" by everyone else. '''P-hacking''' refers to any of a family of practices where a researcher tries multiple analytical approaches and reports only the one that produced a significant result — without disclosing the others that didn't. It's rarely outright fraud; more often it's an accumulation of small, individually reasonable-feeling decisions ("researcher degrees of freedom") that, in combination, dramatically inflate the real false-positive rate beyond the nominal α = 0.05 you think you're operating under.<ref>Simmons, J. P., Nelson, L. D., & Simonsohn, U. (2011). False-positive psychology: Undisclosed flexibility in data collection and analysis allows presenting anything as significant. ''Psychological Science'', 22(11), 1359–1366.</ref> A brief, non-exhaustive taxonomy — not to teach you to do these things, but so you recognize them, in your own work and in what you read: * '''Optional stopping''' — collecting data, checking for significance, and continuing to collect more data only if the result isn't significant yet, stopping as soon as it is. * '''HARKing'''<ref>Kerr, N. L. (1998). HARKing: Hypothesizing after the results are known. ''Personality and Social Psychology Review'', 2(3), 196–217.</ref> ("Hypothesizing After Results are Known") — presenting a hypothesis discovered by exploring the data as though it had been predicted all along. * '''Selective outcome reporting''' — measuring several outcome variables, and reporting results only for the ones that turned out significant. * '''Flexible outlier handling''' — trying several different rules for excluding outliers until one produces significance. * '''Undisclosed covariate fishing''' — trying many different combinations of control variables in a regression until one combination yields a significant result on the variable of interest. Every one of these individually might feel like ordinary, defensible data analysis in the moment. Collectively, and left undisclosed, they're how a field ends up with a replication rate near 50% despite every individual researcher believing they did careful, honest work. The fix isn't paranoia about your own judgment — it's transparency: pre-registration (Chapter 13), reporting effect sizes honestly regardless of significance (every chapter since Chapter 1), and sharing your actual analysis script (every Open Science Corner in this book) so someone else can see exactly which choices you made and why. == Finding Papers With Open Data == Three practical starting points for locating a published, GSS-based finding to replicate: * '''Google Scholar''', searching a substantive topic you're interested in plus "General Social Survey" — this remains the single fastest way to find candidate papers. * '''OSF''' (osf.io) and '''Dataverse''' (dataverse.org), both of which host shared data and code from published studies directly — a paper with materials posted to either is usually the easiest kind to attempt a genuine replication of, since the original analytical choices are visible rather than reconstructed from a methods section. * '''Journal data availability statements''' — many journals now require authors to state where their data and code can be obtained; this statement, usually near a paper's methods section or in its supplementary materials, is worth checking before you assume you'll need to build an extract from scratch. == The Replication Workflow == # '''Read the paper.''' What is the research question? Which GSS variables are used? What analyses were run? Take real notes — you'll need them at every subsequent step. # '''Download the data.''' The GSS Data Explorer (Chapter 3) or your course-provided extract, matching as closely as possible the wave(s) and variables the original paper used. # '''Clean and recode.''' Match the paper's sample restrictions and variable definitions as closely as the methods section allows (Chapters 5 and 6) — this step alone often surfaces ambiguities the original paper didn't fully specify. # '''Run the analyses.''' Reproduce the paper's statistical tests using the tools from Chapters 8 through 17, as applicable. # '''Compare.''' Did you get the same results? Same direction, same approximate magnitude, same statistical significance? Note discrepancies precisely rather than vaguely. # '''Evaluate.''' Are the original conclusions actually supported by the analysis? Were effect sizes reported? Was the study adequately powered (Chapter 11)? Would you have reached the same substantive conclusion the authors did? == A Worked Example: Replicating a GSS-Based Finding == To make this concrete, here's a full walkthrough of a realistic (illustrative, not an actual published citation) replication exercise: a hypothetical paper claims that '''years of education significantly predicts income, and that this relationship remains substantial after accounting for age.''' '''Step 1–2: Read and download.''' The paper reports a bivariate regression (b ≈ $3,900 per year of education, R² ≈ .25) and states the analytic sample was GSS respondents aged 25 and older, to exclude respondents still likely to be enrolled in school. '''Step 3: Clean and recode, matching the paper's sample restriction.''' <syntaxhighlight lang="r"> library(haven) library(dplyr) gss <- read_sav("gss2010.sav") gss_replication <- gss %>% filter(AGE >= 25) %>% filter(!is.na(CONRINC), !is.na(EDUC), !is.na(AGE)) nrow(gss_replication) </syntaxhighlight> '''Step 4: Run the analyses — the original bivariate model, plus the age-adjusted comparison the paper claims.''' <syntaxhighlight lang="r"> model_simple <- lm(CONRINC ~ EDUC, data = gss_replication) summary(model_simple) model_adjusted <- lm(CONRINC ~ EDUC + AGE, data = gss_replication) summary(model_adjusted) </syntaxhighlight> '''Step 5: Compare.''' <syntaxhighlight lang="r"> Original paper: b(EDUC) = 3900, R-squared = .25 Your replication: b(EDUC) = 3980, R-squared = .252 (bivariate model) b(EDUC) = 3810, R-squared = .268 (age-adjusted model) </syntaxhighlight> '''Step 6: Evaluate.''' The replication is close, though not exact — the slope and R² both land within a reasonable range of the original figures, and the direction and approximate magnitude of the relationship hold up, including after adjusting for age as the paper claimed. Minor numerical differences like this are normal and expected, even in a "successful" replication: different sample restrictions (exact age cutoffs, how missing data was handled), slightly different GSS extracts, or rounding in the original paper's reported numbers can all produce small discrepancies without indicating anything is wrong. A good replication report says so explicitly, rather than either overstating a perfect match or treating small differences as a failure. <!-- FIGURE: A side-by-side comparison table or plot showing the "original" vs. "replicated" coefficients from this worked example, modeling the kind of comparison table students should build for their own capstone projects. Author to generate, or replace with a real published paper's actual reported statistics for full accuracy. --> == What to Do When You Can't Perfectly Replicate == You often won't get an exact match, and that's normal, not a failure on your part. Common, entirely legitimate reasons include: a different GSS wave or extract than the original authors used, ambiguity in the original paper's methods section about exactly how a variable was recoded, missing data handled differently, or — occasionally, and this is fine to say plainly in your write-up — the original finding may simply not hold up as strongly as reported. Per Chapter 1 and this chapter's opening, that outcome is a known, expected feature of the current published literature, not a sign you did something wrong. Document your process, be precise about where and how your results diverge, and resist the temptation to quietly adjust your own analysis until it matches the paper — that would be p-hacking in service of someone else's original p-hacking, and this book has spent an entire chapter (13) plus most of this one explaining why that's not the goal. {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Share your replication script on OSF, exactly as you've been asked to do with every analysis since Chapter 5. This is the single most direct, personal way to practice the professional habit this entire book has been building toward: someone else — a classmate, a future employer, your own future self in three years — should be able to open your project, read your script, and understand precisely what you did and why, without having to ask you. }} == Chapter Summary == Replication and reproduction are related but distinct checks — same data versus new data — and both matter to a healthy discipline; attempting either is a normal scientific practice, not an accusation. P-hacking, in its many quiet forms (optional stopping, HARKing, selective outcome reporting, and more), is a major contributor to the roughly 50% replication rate Chapter 1 and this chapter both cite, and transparency (pre-registration, honest effect-size reporting, shared scripts) is the field's best available defense against it. A real replication project follows a clear workflow: read, download, clean, analyze, compare, evaluate — and an imperfect match is normal, expected, and worth reporting honestly rather than quietly smoothed over. Every statistical skill in this book — from Chapter 2's first script to Chapter 16's regression diagnostics — exists in service of exactly this kind of careful, honest, checkable work. == The Capstone Project Guide == This chapter's practice ''is'' the capstone project. Use this section as your project guide. '''Finding a paper.''' Choose a published, quantitative sociology (or closely related) article that uses GSS data and reports a specific, replicable statistical claim — a mean, a correlation, a t-test, a chi-square result, a regression coefficient. Prefer a paper using a GSS wave reasonably close to 2010, given this book's data, and prefer a paper whose methods section is specific enough to actually follow (vague methods sections are a legitimate, worth-flagging finding in their own right, but make for a harder capstone project). '''What to submit.''' At minimum: (1) a full citation and brief summary of the original paper's claim; (2) your annotated R script, following every good-practice habit from this book (comments explaining your decisions, base R or dplyr as appropriate, saved intermediate files where useful); (3) a comparison table or figure, original versus replicated results, in the style of the worked example above; (4) a written evaluation — did it replicate, and what do you make of that. '''How to write up your results.''' Structure your write-up the way this book has modeled every inferential result since Chapter 13: state the original claim, state your replicated result with full statistics (test statistic, p-value, effect size — never omit the effect size), and interpret the comparison honestly, including any discrepancies and your best explanation for them. '''When you can't perfectly replicate.''' See the section above. Report it precisely, explain your best guess at why, and resist the urge to make it "work." '''A closing note, and the end of this book.''' You now have every tool this project needs — R and RStudio (Chapter 2), the GSS itself (Chapter 3), data cleaning and recoding (Chapters 5–6), description (Chapters 7–10), and inference (Chapters 11–17). The field you're entering has spent the last decade and a half doing something genuinely admirable: publicly, uncomfortably, and repeatedly checking its own work, and building better habits as a result. The numbers in Chapter 1 were not flattering. The response to them — pre-registration, open data, shared code, the entire open science movement this book has woven through every chapter — is real, is working, gradually, and is still being built by the people who will read this book next. That's you. Good luck out there, and show your work. == References == <references/> drcb9v9qdz7avofnhxnn6xkp4aaw6vd 4656627 4656603 2026-08-07T15:02:02Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656627 wikitext text/x-wiki = Chapter 18: Putting It All Together — Replicating Sociological Research = Seventeen chapters ago, this book opened with an uncomfortable fact: a large share of published findings across the social and behavioral sciences — sociology included, by name, not just psychology's problem to solve — don't hold up when someone else checks them. Every skill since then has been building toward the ability to do the checking yourself. This capstone chapter asks you to actually do it: find a real, published, GSS-based sociological finding, and see whether it holds up under your own hands. This is not busywork tacked onto the end of a syllabus. It is, quite possibly, the single most professionally useful thing this book has taught you. == Why Replication Matters, Revisited == Chapter 1 introduced the replication crisis through the 2015 Open Science Collaboration project (psychology)<ref>Open Science Collaboration. (2015). Estimating the reproducibility of psychological science. ''Science'', 349(6251), aac4716.</ref> and the 2026 Tyner et al. study (business, economics, education, political science, psychology, ''and'' sociology, replicating at 51.1% — statistically indistinguishable from psychology's 49.0%).<ref>Tyner, A. H. et al. (2026). Investigating the replicability of the social and behavioural sciences. ''Nature'', 652, 143–150.</ref> Both numbers are worth having in your head again right now, at the end of this book, because this chapter is where that abstract statistic becomes a concrete, personal exercise: somewhere between one in three and one in two published quantitative findings in your own field, tested rigorously, fails to replicate. You are about to find out, firsthand, what that actually looks like from the inside. It's worth being precise about two related but distinct ideas this book has used somewhat loosely up to now: * '''Replication''' — rerunning the same methods on the ''same'' data, checking whether you get the same result. This is a check on computational and analytical correctness: did the original researcher's code do what they said it did? * '''Reproduction''' — rerunning the same methods on ''new'' data, checking whether the finding generalizes beyond the original sample. This is a check on whether the underlying claim about the world is actually true, not just whether the original arithmetic was correct. Both matter, and this chapter's capstone project will primarily involve the first — since you'll be working with the same GSS 2010 data the original researchers most likely used, or a closely related wave — while thinking carefully about what the second would require. '''Replication is a scientific norm, not an insult.''' Attempting to replicate someone's work is not an accusation of dishonesty; it's the ordinary, expected functioning of a healthy discipline. Treat every replication attempt in this chapter — including any that fail — in that spirit. == p-Hacking and Researcher Degrees of Freedom == Some researchers, when faced with a non-significant result, try a different analysis. Then another. Then another. This is called "exploring the data" by optimists and "p-hacking" by everyone else. '''P-hacking''' refers to any of a family of practices where a researcher tries multiple analytical approaches and reports only the one that produced a significant result — without disclosing the others that didn't. It's rarely outright fraud; more often it's an accumulation of small, individually reasonable-feeling decisions ("researcher degrees of freedom") that, in combination, dramatically inflate the real false-positive rate beyond the nominal α = 0.05 you think you're operating under.<ref>Simmons, J. P., Nelson, L. D., & Simonsohn, U. (2011). False-positive psychology: Undisclosed flexibility in data collection and analysis allows presenting anything as significant. ''Psychological Science'', 22(11), 1359–1366.</ref> A brief, non-exhaustive taxonomy — not to teach you to do these things, but so you recognize them, in your own work and in what you read: * '''Optional stopping''' — collecting data, checking for significance, and continuing to collect more data only if the result isn't significant yet, stopping as soon as it is. * '''HARKing'''<ref>Kerr, N. L. (1998). HARKing: Hypothesizing after the results are known. ''Personality and Social Psychology Review'', 2(3), 196–217.</ref> ("Hypothesizing After Results are Known") — presenting a hypothesis discovered by exploring the data as though it had been predicted all along. * '''Selective outcome reporting''' — measuring several outcome variables, and reporting results only for the ones that turned out significant. * '''Flexible outlier handling''' — trying several different rules for excluding outliers until one produces significance. * '''Undisclosed covariate fishing''' — trying many different combinations of control variables in a regression until one combination yields a significant result on the variable of interest. Every one of these individually might feel like ordinary, defensible data analysis in the moment. Collectively, and left undisclosed, they're how a field ends up with a replication rate near 50% despite every individual researcher believing they did careful, honest work. The fix isn't paranoia about your own judgment — it's transparency: pre-registration (Chapter 13), reporting effect sizes honestly regardless of significance (every chapter since Chapter 1), and sharing your actual analysis script (every Open Science Corner in this book) so someone else can see exactly which choices you made and why. == Finding Papers With Open Data == Three practical starting points for locating a published, GSS-based finding to replicate: * '''Google Scholar''', searching a substantive topic you're interested in plus "General Social Survey" — this remains the single fastest way to find candidate papers. * '''OSF''' (osf.io) and '''Dataverse''' (dataverse.org), both of which host shared data and code from published studies directly — a paper with materials posted to either is usually the easiest kind to attempt a genuine replication of, since the original analytical choices are visible rather than reconstructed from a methods section. * '''Journal data availability statements''' — many journals now require authors to state where their data and code can be obtained; this statement, usually near a paper's methods section or in its supplementary materials, is worth checking before you assume you'll need to build an extract from scratch. == The Replication Workflow == # '''Read the paper.''' What is the research question? Which GSS variables are used? What analyses were run? Take real notes — you'll need them at every subsequent step. # '''Download the data.''' The GSS Data Explorer (Chapter 3) or your course-provided extract, matching as closely as possible the wave(s) and variables the original paper used. # '''Clean and recode.''' Match the paper's sample restrictions and variable definitions as closely as the methods section allows (Chapters 5 and 6) — this step alone often surfaces ambiguities the original paper didn't fully specify. # '''Run the analyses.''' Reproduce the paper's statistical tests using the tools from Chapters 8 through 17, as applicable. # '''Compare.''' Did you get the same results? Same direction, same approximate magnitude, same statistical significance? Note discrepancies precisely rather than vaguely. # '''Evaluate.''' Are the original conclusions actually supported by the analysis? Were effect sizes reported? Was the study adequately powered (Chapter 11)? Would you have reached the same substantive conclusion the authors did? == A Worked Example: Replicating a GSS-Based Finding == To make this concrete, here's a full walkthrough of a realistic (illustrative, not an actual published citation) replication exercise: a hypothetical paper claims that '''years of education significantly predicts income, and that this relationship remains substantial after accounting for age.''' '''Step 1–2: Read and download.''' The paper reports a bivariate regression (b ≈ $3,900 per year of education, R² ≈ .25) and states the analytic sample was GSS respondents aged 25 and older, to exclude respondents still likely to be enrolled in school. '''Step 3: Clean and recode, matching the paper's sample restriction.''' <syntaxhighlight lang="r"> library(haven) library(dplyr) gss <- read_sav("gss2010.sav") gss_replication <- gss %>% filter(AGE >= 25) %>% filter(!is.na(CONRINC), !is.na(EDUC), !is.na(AGE)) nrow(gss_replication) </syntaxhighlight> '''Step 4: Run the analyses — the original bivariate model, plus the age-adjusted comparison the paper claims.''' <syntaxhighlight lang="r"> model_simple <- lm(CONRINC ~ EDUC, data = gss_replication) summary(model_simple) model_adjusted <- lm(CONRINC ~ EDUC + AGE, data = gss_replication) summary(model_adjusted) </syntaxhighlight> '''Step 5: Compare.''' <syntaxhighlight lang="r"> Original paper: b(EDUC) = 3900, R-squared = .25 Your replication: b(EDUC) = 3980, R-squared = .252 (bivariate model) b(EDUC) = 3810, R-squared = .268 (age-adjusted model) </syntaxhighlight> '''Step 6: Evaluate.''' The replication is close, though not exact — the slope and R² both land within a reasonable range of the original figures, and the direction and approximate magnitude of the relationship hold up, including after adjusting for age as the paper claimed. Minor numerical differences like this are normal and expected, even in a "successful" replication: different sample restrictions (exact age cutoffs, how missing data was handled), slightly different GSS extracts, or rounding in the original paper's reported numbers can all produce small discrepancies without indicating anything is wrong. A good replication report says so explicitly, rather than either overstating a perfect match or treating small differences as a failure. <!-- FIGURE: A side-by-side comparison table or plot showing the "original" vs. "replicated" coefficients from this worked example, modeling the kind of comparison table students should build for their own capstone projects. Author to generate, or replace with a real published paper's actual reported statistics for full accuracy. --> == What to Do When You Can't Perfectly Replicate == You often won't get an exact match, and that's normal, not a failure on your part. Common, entirely legitimate reasons include: a different GSS wave or extract than the original authors used, ambiguity in the original paper's methods section about exactly how a variable was recoded, missing data handled differently, or — occasionally, and this is fine to say plainly in your write-up — the original finding may simply not hold up as strongly as reported. Per Chapter 1 and this chapter's opening, that outcome is a known, expected feature of the current published literature, not a sign you did something wrong. Document your process, be precise about where and how your results diverge, and resist the temptation to quietly adjust your own analysis until it matches the paper — that would be p-hacking in service of someone else's original p-hacking, and this book has spent an entire chapter (13) plus most of this one explaining why that's not the goal. {{Colored box | title = Open Science Corner | background-title-color=#355C7D | title-color=#FFFFFF | background-content-color=#F8B195 | content = Share your replication script on OSF, exactly as you've been asked to do with every analysis since Chapter 5. This is the single most direct, personal way to practice the professional habit this entire book has been building toward: someone else — a classmate, a future employer, your own future self in three years — should be able to open your project, read your script, and understand precisely what you did and why, without having to ask you. }} == Chapter Summary == Replication and reproduction are related but distinct checks — same data versus new data — and both matter to a healthy discipline; attempting either is a normal scientific practice, not an accusation. P-hacking, in its many quiet forms (optional stopping, HARKing, selective outcome reporting, and more), is a major contributor to the roughly 50% replication rate Chapter 1 and this chapter both cite, and transparency (pre-registration, honest effect-size reporting, shared scripts) is the field's best available defense against it. A real replication project follows a clear workflow: read, download, clean, analyze, compare, evaluate — and an imperfect match is normal, expected, and worth reporting honestly rather than quietly smoothed over. Every statistical skill in this book — from Chapter 2's first script to Chapter 16's regression diagnostics — exists in service of exactly this kind of careful, honest, checkable work. == The Capstone Project Guide == This chapter's practice ''is'' the capstone project. Use this section as your project guide. '''Finding a paper.''' Choose a published, quantitative sociology (or closely related) article that uses GSS data and reports a specific, replicable statistical claim — a mean, a correlation, a t-test, a chi-square result, a regression coefficient. Prefer a paper using a GSS wave reasonably close to 2010, given this book's data, and prefer a paper whose methods section is specific enough to actually follow (vague methods sections are a legitimate, worth-flagging finding in their own right, but make for a harder capstone project). '''What to submit.''' At minimum: (1) a full citation and brief summary of the original paper's claim; (2) your annotated R script, following every good-practice habit from this book (comments explaining your decisions, base R or dplyr as appropriate, saved intermediate files where useful); (3) a comparison table or figure, original versus replicated results, in the style of the worked example above; (4) a written evaluation — did it replicate, and what do you make of that. '''How to write up your results.''' Structure your write-up the way this book has modeled every inferential result since Chapter 13: state the original claim, state your replicated result with full statistics (test statistic, p-value, effect size — never omit the effect size), and interpret the comparison honestly, including any discrepancies and your best explanation for them. '''When you can't perfectly replicate.''' See the section above. Report it precisely, explain your best guess at why, and resist the urge to make it "work." '''A closing note, and the end of this book.''' You now have every tool this project needs — R and RStudio (Chapter 2), the GSS itself (Chapter 3), data cleaning and recoding (Chapters 5–6), description (Chapters 7–10), and inference (Chapters 11–17). The field you're entering has spent the last decade and a half doing something genuinely admirable: publicly, uncomfortably, and repeatedly checking its own work, and building better habits as a result. The numbers in Chapter 1 were not flattering. The response to them — pre-registration, open data, shared code, the entire open science movement this book has woven through every chapter — is real, is working, gradually, and is still being built by the people who will read this book next. That's you. Good luck out there, and show your work. == References == <references/> {{BookCat}} 5tcfr4yal4oyn26qnigohizswsap0ue Statistics for Sociologists/Printable version 0 485160 4656604 2026-08-07T14:18:59Z Rcragun 41177 first draft 4656604 wikitext text/x-wiki {{printable}} rfox2umbwbdol14wau7rnobacus9ozy 4656626 4656604 2026-08-07T15:01:57Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656626 wikitext text/x-wiki {{printable}} {{BookCat}} 8hyfvvlufiqbh03eujexjuudmq762no General Literary Chinese from Scratch/A Golden Cup and the Fall of a Dynasty with Yan Fu 0 485161 4656605 2026-08-07T14:23:35Z Shira the Mogul 3560559 boilerplate 4656605 wikitext text/x-wiki Comment to be written. == Text == === 鞏金甌·嚴復 === [[File:Gǒng Jīn'ōu.ogg]] <poem> 鞏金甌,承天幬,民物欣鳧藻,喜同袍。 清時幸遭,真熙皞,帝國蒼穹保。 天高高,海滔滔。 </poem> ==References== * 《鞏金甌·嚴復》https://zh.wikisource.org/wiki/%E9%9E%8F%E9%87%91%E7%94%8C {{BookCat}} r1mf6ukk47p9h7xlostr5zu01ckdzno General Literary Chinese from Scratch/On a Journey with Sadula 0 485162 4656606 2026-08-07T14:27:36Z Shira the Mogul 3560559 boilerplate 4656606 wikitext text/x-wiki [[File:Portrait of Sadula from a modern reprint of Sikuquanshu (18th cent.) edition of Yanmenji (Collected poems of Sadula)14th cent..jpg|thumb|200px|薩都剌]] Comment to be written. ==Background== Sadula was a naturalised Mongol scholar and poet during the Yuan dynasty. == Text == === 無題·薩都剌 === <poem> 為客三年海上洲,故鄉何處瘴雲稠。 數千里外蠻人域,十八灘頭過客舟。 時有山禽呼姓字,或從海鳥作朋儔。 故人珂珮周旋處,紫殿風清十二樓。 </poem> ==References== * 《無題·薩都剌》https://zh.wikisource.org/wiki/%E7%84%A1%E9%A1%8C_(%E8%96%A9%E9%83%BD%E5%89%8C) {{BookCat}} ipxwbvil9pa707l4uc1lf4e0peu268k General Literary Chinese from Scratch/Visiting a Temple with Yu Xuanji 0 485163 4656613 2026-08-07T14:38:51Z Shira the Mogul 3560559 boilerplate 4656613 wikitext text/x-wiki [[File:《元機詩意圖》之魚玄機像.jpg|thumb|200px|魚玄機]] Comment to be written. == Text == === 遊崇真觀南樓覩新及第題名處·魚玄機 === <poem> 雲峰滿目放春晴,歷歷銀鈎指下生。 自恨羅衣掩詩句,擧頭空羨榜中名。 </poem> ==References== * Yu, X. (2024). 根老藏魚窟:魚玄機 [Hiding in caverns formed from old roots: The collected poems of Yu Xuanji] (L. Klein, Trans.). Oxford University Press. {{BookCat}} iq38nfodgvuz62yz84lzzwzahaex34e General Literary Chinese from Scratch/An Unmarried Life with Heo Nansŏrhŏn 0 485164 4656615 2026-08-07T14:42:57Z Shira the Mogul 3560559 boilerplate 4656615 wikitext text/x-wiki Comment to be written. == Text == === 貧女吟·許楚姬 === <poem> 豈是乏容色。工鍼復工織。 少小長寒門。良媒不相識。 又 夜久織未休。戛戛鳴寒機。 機中一匹練。終作阿誰衣。 又 手把金翦刀。夜寒十指直。 爲人作嫁衣。年年還獨宿。 </poem> ==References== * 《蘭雪軒詩集·許楚姬》https://zh.wikisource.org/wiki/%E8%98%AD%E9%9B%AA%E8%BB%92%E8%A9%A9%E9%9B%86 {{BookCat}} 65b83sr23g5c04csp2gfo30nzu3t637 General Literary Chinese from Scratch/Qingtan with Xie Daoyun 0 485165 4656618 2026-08-07T14:48:56Z Shira the Mogul 3560559 boilerplate 4656618 wikitext text/x-wiki [[File:Xie Daoyun.jpg|thumb|200px|謝道韞]] Comment to be written. == Text == === 泰山吟·謝道韞 === <poem> 峩峩東嶽高,秀極衝青天。 巖中間虛宇,寂寞幽以玄。 非工復非匠,雲構發自然。 器象爾何物,遂令我屢遷。 逝將宅斯宇,可以盡天年。 </poem> === 擬嵇中散詠松詩·謝道韞 === <poem> 遙望山上松,隆冬不能凋。 願想遊不憩,瞻彼萬仞條。 騰躍未能升,頓足俟王喬。 時哉不我與,大運所飄遙。 </poem> ==References== * 《泰山吟·謝道韞》https://zh.wikisource.org/wiki/%E6%B3%B0%E5%B1%B1%E5%90%9F * 《擬嵇中散詠松詩·謝道韞》https://zh.wikisource.org/zh-hant/%E6%8B%9F%E5%B5%87%E4%B8%AD%E6%95%A3%E5%92%8F%E6%9D%BE%E8%AF%97 {{BookCat}} qy029larqg4eqpyczx7po2czha8d21a General Literary Chinese from Scratch/Laozi Explains the Dao 0 485166 4656619 2026-08-07T14:52:21Z Shira the Mogul 3560559 boilerplate 4656619 wikitext text/x-wiki [[File:Zhang Lu-Laozi Riding an Ox.jpg|thumb|200px|老子]] Comment to be written. == Text == === 道德經·老子 === <blockquote> 道可道,非常道。名可名,非常名。無名天地之始;有名萬物之母。故常無欲,以觀其妙;常有欲,以觀其徼。此兩者,同出而異名,同謂之玄。玄之又玄,衆妙之門。 </blockquote> ==References== * 《道德經·老子》https://ctext.org/dao-de-jing {{BookCat}} 651r0wsubb548vtgk86w9wu16ir2bvz General Literary Chinese from Scratch/Master Incapable and the Poisonous Bird 0 485167 4656622 2026-08-07T14:55:52Z Shira the Mogul 3560559 boilerplate 4656622 wikitext text/x-wiki [[File:Zhen sancai tuhui.jpg|thumb|200px|鴆]] Comment to be written. ==Text== ===無能子·鴆說=== <blockquote> 鴆與蛇相遇,鴆前而啄之。 蛇謂曰:「世人皆毒子矣。毒者,惡名也。子所以有惡名者,以食我也。子不食我則無毒,不毒則惡名亡矣。」 鴆笑曰:「汝豈不毒於世人哉?指我為毒,是欺也。汝豈毒於世人者,有心嚙人也。吾怨汝之嚙人,所以食汝示刑也。世人審吾之能刑汝,故畜吾以防汝。又審汝之毒染吾毛羽肢體,故用殺人。吾之毒,汝之毒也。吾疾惡而蒙其名爾。然殺人者,人也。猶人持兵而殺人也,兵罪乎,人罪乎?則非吾之毒也,明矣。世人所以畜吾而不畜汝又明矣。吾無心毒人,而疾惡得名,為人所用,吾所為能後其身也,後身而甘惡名,非惡名矣。汝以有心之毒,盱睢於草莽之間,伺人以自快。今遇我,天也,而欲詭辯茍免耶?」 蛇不能答。鴆食之。 夫昆蟲不可以有心,況人乎? </blockquote> ==References== * Meyer, J. de (Ed.). (2023). Master incapable: A medieval Daoist on the liberation of the mind. Oxford University Press. {{BookCat}} pn88y4w2rnmew61bpul8mrr48y82h0g General Literary Chinese from Scratch/The Twilight of Ryukyu with Shō Ten 0 485168 4656624 2026-08-07T14:58:15Z Shira the Mogul 3560559 boilerplate 4656624 wikitext text/x-wiki [[File:Marquis Sho Ten.JPG|thumb|200px|尚典]] Comment to be written. ==Text== ===神田酒樓街燈·尚典=== <poem> 酒樓今秋設芳筵, 一望街燈燦燦連。 烟氣引來通柱上, 光爭星月照神田。 </poem> ==Reference== * 《神田酒樓街燈·尚典》https://zh.wikisource.org/wiki/%E7%A5%9E%E7%94%B0%E9%85%92%E6%A8%93%E8%A1%97%E7%87%88 {{BookCat}} pjxo4o0w76jgn6q8z9x33k7vcjv144u General Literary Chinese from Scratch/A Bilingual Stele of the Khitans 0 485169 4656636 2026-08-07T15:02:37Z Shira the Mogul 3560559 boilerplate 4656636 wikitext text/x-wiki Comment to be written. ==Background== The ''Record of the Younger Brother of the Emperor of the Great Jin Dynasty'' (1134), recorded by Huang Yingqi, is a rare example of a Literary Chinese bilingual text, in this case being written in Khitan and then translated into Literary Chinese. == Text == [[File:Da Jin huang di dutong jinglüe langjun xingji 大金皇弟都統經略郎君行記.jpg|thumb|200px|Rubbing of the inscription.]] === 大金皇弟都統經略郎君行記·黃應期 === <poem> 大金 皇弟都統經略郎君嚮㠯疆場無事,獵於梁山之陽,至唐乾陵,殿廡頹然,一無所睹,爰命有司鳩工修飾。今復謁陵下,繪像一新,回廊四起,不勝欣懌,與醴陽太守酣飲而歸。時天會十二年歲次甲寅仲冬十有四日。尚書職方郎中黃應期,宥州刺史王圭從行,奉命題。 右譯前言。 </poem> ==References== * 《大金皇弟都統經略郎君行記》 https://wikisource.org/wiki/%E5%A4%A7%E9%87%91%E7%9A%87%E5%BC%9F%E9%83%BD%E7%B5%B1%E7%B6%93%E7%95%A5%E9%83%8E%E5%90%9B%E8%A1%8C%E8%A8%98 {{BookCat}} qb4nj9x4jjdx0iv9q7jg88p1s3keacb General Literary Chinese from Scratch/Đỗ Pháp Thuận and the Southern Winds 0 485170 4656647 2026-08-07T15:09:54Z Shira the Mogul 3560559 boilerplate 4656647 wikitext text/x-wiki Comment to be written. ==Background== Đỗ Pháp Thuận was a Zen Buddhist master who made some of the earliest recorded poems in Vietnam during the Early Lý dynasty. == Text == === 國祚·杜法順 === <poem> 國祚如藤絡,南天理太平。 無為居殿閣,處處息力兵。 </poem> ==References== * Yan, Y. (2023). 越南汉诗选 [Anthology of Vietnamese Sinitic Poetry] (1st ed, Vols 1–2). 江西教育出版社 [Jiangxi Education Press]. {{BookCat}} 6p5dpqvfqmb4uwnhsjl8jt5bllmxtzk General Literary Chinese from Scratch/Amassing Words with the Kangxi Emperor 0 485171 4656648 2026-08-07T15:14:05Z Shira the Mogul 3560559 boilerplate 4656648 wikitext text/x-wiki [[File:1827 Kangxi Chinese Dictionary Frontispiece.jpg|thumb|200px|康熙字典]] Comment to be written. ==Text== ===康熙字典序=== <blockquote> 易傳曰:『上古結繩而治,後世聖人易之以書契。百官以治,萬民以察。』周官外史掌達書名於四方,保氏養國子,教以六書而考,文列于三重,蓋以其爲萬事百物之統紀而足以助流政教也。古文篆隸隨世遞變,至漢許氏始有說文。然重義而略於音,故世謂漢儒識文字而不識子母,江左之儒識四聲而不識七音。七音之傳肇自西域,以三十六字爲母,從爲四聲,橫爲七音,而後天下之聲總於是焉。嘗考管子之書所載,五方之民其聲之清濁高下,各象其川原泉壤淺深廣狹而生,故于五音必有所偏得,則能全備七音者鮮矣。此歷代相傳取音者,所以不能較若畫一也。自說文以后,字書善者於梁則玉篇,於唐則廣韻,於宋則集韻,於金則五音集韻,於元則韻會,於明則洪武正韻,皆流通當世衣被後學。其傳而未甚顯者,尚數十百家。當其編輯皆自謂毫髮無憾,而後儒推論輒多同異,或所收之字繁省失中,或所引之書濫疎無準,或字有數義而不詳,或音有數切而不備,曾無善兼美,具可奉爲典常而不易者。朕每念經傳至博,音義繁賾。據一人之見,守一家之說未必能會通罔闕也。爰命儒臣,悉取舊籍,次第排纂,切音解義,一本說文、玉篇,兼用廣韻、集韻、韻會、正韻,其餘字書一音一義可採者,靡有遺逸。至諸書引證未備者,則自經史百子以及漢晉唐宋元明以來詩人文士所述,莫不旁羅博證,使有依據。然後古今形體之辨,方言聲氣之殊,部分班列,開卷了然,無一義之不詳,一音之不備矣。凡五閱嵗而其書始成,命曰字典,於以昭同文之治。俾承學稽古者得以備知文字之源流,而官府吏民亦有所遵守焉。是爲序。康熙五十五年閏三月十九日。 </blockquote> ==References== * 《康熙字典》https://zh.wikisource.org/wiki/%E5%BA%B7%E7%86%99%E5%AD%97%E5%85%B8 {{BookCat}} mp0dpelxjb3k4dtbuha0zs82j2l2zlx General Literary Chinese from Scratch/A fu with Yi Kyubo 0 485172 4656653 2026-08-07T15:29:40Z Shira the Mogul 3560559 boilerplate 4656653 wikitext text/x-wiki Comment to be written. ==Text== ===放蟬賦·李奎報=== <poem> 彼黠者蛛,厥類繁滋。孰賦爾以機巧,養丸腹於網絲。有蟬見絓,其聲最悲。我不忍聞,放之使飛。 傍有人兮誰氏子,仍詰子以致辭。 「惟兹二物,等蟲之微。蛛於子何損,蟬於子何裨?惟蟬之活,乃蛛之飢。此雖德君,彼必寃之,孰謂子智?胡放此爲?」 予初矉額而不答。俄吐一言以釋疑。 「蛛之性貪,蟬之質淸。規飽之意難盈,吸露之腸何營?以貪污而逼淸,所不忍於吾情。何吐緒之至纎?雖離婁猶不容晴。矧兹蟲之不慧,豈覘視之能精?將飛過而忽罥,趐拍拍以愈嬰。彼營營之青蠅,紛逐臭而慕腥,蝶貪芳以輕狂,隨風上下以不停,雖見罹而何尤?原厥咎本乎有求。獨汝與物而無競,胡爲遭此拘囚?解爾之纏縛,囑汝以綢繆。『遡喬林而好去。擇美蔭之清幽,移不可屢兮。有此網蟲之窺窬,居不可久兮。螗蜋在後以爾謀,愼爾去就。然後無尤。』」 </poem> ==References== * 《放蟬賦·李奎報》https://zh.wikisource.org/wiki/%E6%94%BE%E8%9F%AC%E8%B3%A6 * Han, D. (2022). 朝鲜汉诗选 [Anthology of Korean Sinitic Poetry] (1st ed). 江西教育出版社 [Jiangxi Education Press]. {{BookCat}} gufype9wrsfwgie7j4wllm107h0sq2z General Literary Chinese from Scratch/Feigned Surrender with Ŭlchi Mundŏk 0 485173 4656656 2026-08-07T15:33:12Z Shira the Mogul 3560559 boilerplate 4656656 wikitext text/x-wiki [[File:초등대한역사 제2편 10.jpg|thumb|200px|乙支文德]] Comment to be written. ==Text== ===乙支文德漢詩=== <poem> 神策究天文,妙算窮地理。 戰勝功旣高,知足願云止。 </poem> ==References== * Han, D. (2022). 朝鲜汉诗选 [Anthology of Korean Sinitic Poetry] (1st ed). 江西教育出版社 [Jiangxi Education Press]. * Kim, Pusik (1145). "을지문덕이 우중문에게 오언시를 보내다(612년 06월)", 삼국사기 ["Eulji Mundeok sends a 5-letter verse to Yu Zhongwen (June, 612 AD)", Samguk Sagi] (in Literary Chinese and Korean (Hanja script)). Book 44. Via National Institute of Korean History. {{BookCat}} tenkldor0oi26gmkg8s619v6hgbnovc General Literary Chinese from Scratch/An Elegy to the Empress with Choe Ja 0 485174 4656658 2026-08-07T15:34:38Z Shira the Mogul 3560559 boilerplate 4656658 wikitext text/x-wiki Comment to be written. ==Text== ===元德大后輓詞·崔滋(최자)=== <poem> 乾極曾客配,坤儀正體元。 枕前朝聖主,帳底見曾孫。 陰慘俄沉月,屋悲便沒軒。 三韓千古淚,七十九年恩。 </poem> ==References== * Han, D. (2022). 朝鲜汉诗选 [Anthology of Korean Sinitic Poetry] (1st ed). 江西教育出版社 [Jiangxi Education Press]. {{BookCat}} hjzangxri9y1g9sav054y0mp307mh49 General Literary Chinese from Scratch/Buddhism in Battle Standards 0 485175 4656661 2026-08-07T15:42:21Z Shira the Mogul 3560559 This is important - Buddhism is not necessarily about not harming people. 4656661 wikitext text/x-wiki [[File:Motonari-mouri.jpg|thumb|200px|毛利元就]] Comment to be written. ==Text== [[File:Mori-Gunori.jpg|thumb|200px]] ===毛利元就軍幟=== <blockquote> 頂禮正八幡大菩薩<br> 南無九萬八千軍神二萬八百四天童子十<br> 皈命摩利支尊天王 </blockquote> ==References== * 公益財団法人毛利報公会 毛利博物館「毛利元就軍幟」 {{BookCat}} 3r61byosisfelnqpfp2thlicrbdhg1y Scratch Virtual Machine/Blocksbox 0 485176 4656664 2026-08-07T17:23:41Z Some helpful person 3510188 Created page with "{{Navbox with collapsible groups |name={{subst:PAGENAME}} |title=Scratch blocks |bodyclass=hlist |state=uncollapsed |basestyle=background:#BFBFBF; |group1=Core |group1style=background:#f9A83A; |list1={{Navbox|child |group1=[[../Motion|Motion]] |group1style=background:#80B5FF; |list1= * [[../Motion#movesteps|move () steps]] * [[../Motion#turnright|turn {{Abbr|⟳|clockwise, right}} () degrees]] * [[../Motion#turnleft|turn {{Abbr|⟲|counterclockwise, left}} () degrees]]..." 4656664 wikitext text/x-wiki {{Navbox with collapsible groups |name=Scratch Virtual Machine/Blocks/Navbox |title=Scratch blocks |bodyclass=hlist |state=uncollapsed |basestyle=background:#BFBFBF; |group1=Core |group1style=background:#f9A83A; |list1={{Navbox|child |group1=[[../Motion|Motion]] |group1style=background:#80B5FF; |list1= * [[../Motion#movesteps|move () steps]] * [[../Motion#turnright|turn {{Abbr|⟳|clockwise, right}} () degrees]] * [[../Motion#turnleft|turn {{Abbr|⟲|counterclockwise, left}} () degrees]] * [[../Motion#goto|go to ()]] * [[../Motion#gotoxy|go to x: () y: ()]] * [[../Motion#glideto|glide () secs to ()]] * [[../Motion#glidesecstoxy|glide () secs to x: () y: ()]] * [[../Motion#pointindirection|point in direction ()]] * [[../Motion#pointtowards|point towards ()]] * [[../Motion#changexby|change x by ()]] * [[../Motion#setx|set x to ()]] * [[../Motion#changeyby|change y by ()]] * [[../Motion#sety|set y to ()]] * [[../Motion#ifonedgebounce|if on edge, bounce]] * [[../Motion#setrotationstyle|set rotation style ()]] * [[../Motion#xposition|x position]] * [[../Motion#yposition|y position]] * [[../Motion#direction|direction]] * Hidden ** [[../Motion#scroll_right|scroll right ()]] ** [[../Motion#scroll_up|scroll up ()]] ** [[../Motion#align_scene|align scene ()]] ** [[../Motion#xscroll|x scroll]] ** [[../Motion#yscroll|y scroll]] |group2=[[../Looks|Looks]] |group2style=background:#CCB3FF; |list2= * [[../Looks#sayforsecs|say () for () seconds]] * [[../Looks#say|say ()]] * [[../Looks#thinkforsecs|think () for () seconds]] * [[../Looks#think|think ()]] * [[../Looks#switchcostumeto|switch costume to ()]] * [[../Looks#nextcostume|next costume]] * [[../Looks#switchbackdropto|switch backdrop to ()]] * [[../Looks#nextbackdrop|next backdrop]] * [[../Looks#changesizeby|change size by ()]] * [[../Looks#setsizeto|set size to ()%]] * [[../Looks#changeeffectby|change () effect by ()]] * [[../Looks#seteffectto|set () effect to ()]] * [[../Looks#cleargraphiceffects|clear graphic effects]] * [[../Looks#show|show]] * [[../Looks#hide|hide]] * [[../Looks#gotofrontback|go to () layer]] * [[../Looks#goforwardbackwardlayers|go () () layers]] * [[../Looks#costumenumbername|costume ()]] * [[../Looks#backdropnumbername|backdrop ()]] * [[../Looks#size|size]] * Hidden ** [[../Looks#hideallsprites|hide all sprites]] ** [[../Looks#changestretchby|change stretch by ()]] ** [[../Looks#setstretchto|set stretch to ()%]] |group3=[[../Sound|Sound]] |group3style=background:#E19DE1; |list3= * [[../Sound#playuntildone|play sound () until done]] * [[../Sound#play|start sound ()]] * [[../Sound#stopallsounds|stop all sounds]] * [[../Sound#changeeffectby|change () effect by ()]] * [[../Sound#seteffectto|set () effect to ()]] * [[../Sound#cleareffects|clear sound effects]] * [[../Sound#changevolumeby|change volume by ()]] * [[../Sound#setvolumeto|set volume to ()%]] * [[../Sound#volume|volume]] |group4=[[../Events|Events]] |group4style=background:#FFD966; |list4= * [[../Events#whenflagclicked|when green flag clicked]] * [[../Events#whenkeypressed|when () key pressed]] * [[../Events#whenthisspriteclicked|when this sprite clicked]] ** [[../Events#whenstageclicked|when stage clicked]] * [[../Events#whenbackdropswitchesto|when backdrop switches to ()]] * [[../Events#whengreaterthan|when () > ()]] * [[../Events#whenbroadcastreceived|when I receive ()]] * [[../Events#broadcast|broadcast ()]] * [[../Events#broadcastandwait|broadcast () and wait]] * Hidden ** [[../Events#whentouchingobject|when this sprite touches ()]] |group5=[[../Control|Control]] |group5style=background:#FFBE4C; |list5={{em dash}} |group6=[[../Sensing|Sensing]] |group6style=background:#85C4E0; |list6={{em dash}} |group7=[[../Operators|Operators]] |group7style=background:#7ECE7E; |list7={{em dash}} |group8=[[../Data|Data]] |group8style=background:#FFA54C; |list8={{em dash}} |group9=[[../Procedures|Procedures]] |group9style=background:#FF99AA; |list9={{em dash}} |group10=[[../Core Example|CoreExample]] |group10style=background:#13ECAF; |list10= * [[../CoreExample#exampleOpcode|example block]] * [[../CoreExample#exampleWithInlineImage|block with image ⟳ inline]] |group11=[[../Other|Other]] |group11style=background:#BFBFBF; |list11={{em dash}} }} |group2=Extension |group2style=background:#13ECAF; |list2=TODO |group3=Modification |group3style=background:#FF4C4C;color:white; |list3=TODO }} <noinclude>{{BookCat}}</noinclude> ew8xd35sxkqf53gdg2ix2j0v1g5vmh9 4656668 4656664 2026-08-07T17:36:05Z Some helpful person 3510188 4656668 wikitext text/x-wiki {{Navbox with collapsible groups |title=Scratch blocks |bodyclass=hlist |state={{{1|{{{state|uncollapsed}}}}}} |basestyle=background:#BFBFBF; |group1=Core |group1style=background:#f9A83A; |list1={{Navbox|child |group1={{Anchor|motion|motion_}}[[../Motion|Motion]] |group1style=background:#80B5FF; |list1= * [[../Motion#movesteps|move () steps]] * [[../Motion#turnright|turn {{Abbr|⟳|clockwise, right}} () degrees]] * [[../Motion#turnleft|turn {{Abbr|⟲|counterclockwise, left}} () degrees]] * [[../Motion#goto|go to ()]] * [[../Motion#gotoxy|go to x: () y: ()]] * [[../Motion#glideto|glide () secs to ()]] * [[../Motion#glidesecstoxy|glide () secs to x: () y: ()]] * [[../Motion#pointindirection|point in direction ()]] * [[../Motion#pointtowards|point towards ()]] * [[../Motion#changexby|change x by ()]] * [[../Motion#setx|set x to ()]] * [[../Motion#changeyby|change y by ()]] * [[../Motion#sety|set y to ()]] * [[../Motion#ifonedgebounce|if on edge, bounce]] * [[../Motion#setrotationstyle|set rotation style ()]] * [[../Motion#xposition|x position]] * [[../Motion#yposition|y position]] * [[../Motion#direction|direction]] * Hidden ** [[../Motion#scroll_right|scroll right ()]] ** [[../Motion#scroll_up|scroll up ()]] ** [[../Motion#align_scene|align scene ()]] ** [[../Motion#xscroll|x scroll]] ** [[../Motion#yscroll|y scroll]] |group2={{Anchor|looks|looks_}}[[../Looks|Looks]] |group2style=background:#CCB3FF; |list2= * [[../Looks#sayforsecs|say () for () seconds]] * [[../Looks#say|say ()]] * [[../Looks#thinkforsecs|think () for () seconds]] * [[../Looks#think|think ()]] * [[../Looks#switchcostumeto|switch costume to ()]] * [[../Looks#nextcostume|next costume]] * [[../Looks#switchbackdropto|switch backdrop to ()]] * [[../Looks#nextbackdrop|next backdrop]] * [[../Looks#changesizeby|change size by ()]] * [[../Looks#setsizeto|set size to ()%]] * [[../Looks#changeeffectby|change () effect by ()]] * [[../Looks#seteffectto|set () effect to ()]] * [[../Looks#cleargraphiceffects|clear graphic effects]] * [[../Looks#show|show]] * [[../Looks#hide|hide]] * [[../Looks#gotofrontback|go to () layer]] * [[../Looks#goforwardbackwardlayers|go () () layers]] * [[../Looks#costumenumbername|costume ()]] * [[../Looks#backdropnumbername|backdrop ()]] * [[../Looks#size|size]] * Hidden ** [[../Looks#hideallsprites|hide all sprites]] ** [[../Looks#changestretchby|change stretch by ()]] ** [[../Looks#setstretchto|set stretch to ()%]] |group3={{Anchor|sound|sound_}}[[../Sound|Sound]] |group3style=background:#E19DE1; |list3= * [[../Sound#playuntildone|play sound () until done]] * [[../Sound#play|start sound ()]] * [[../Sound#stopallsounds|stop all sounds]] * [[../Sound#changeeffectby|change () effect by ()]] * [[../Sound#seteffectto|set () effect to ()]] * [[../Sound#cleareffects|clear sound effects]] * [[../Sound#changevolumeby|change volume by ()]] * [[../Sound#setvolumeto|set volume to ()%]] * [[../Sound#volume|volume]] |group4={{Anchor|events|events_}}[[../Events|Events]] |group4style=background:#FFD966; |list4= * [[../Events#whenflagclicked|when green flag clicked]] * [[../Events#whenkeypressed|when () key pressed]] * [[../Events#whenthisspriteclicked|when this sprite clicked]] ** [[../Events#whenstageclicked|when stage clicked]] * [[../Events#whenbackdropswitchesto|when backdrop switches to ()]] * [[../Events#whengreaterthan|when () > ()]] * [[../Events#whenbroadcastreceived|when I receive ()]] * [[../Events#broadcast|broadcast ()]] * [[../Events#broadcastandwait|broadcast () and wait]] * Hidden ** [[../Events#whentouchingobject|when this sprite touches ()]] |group5={{Anchor|control|control_}}[[../Control|Control]] |group5style=background:#FFBE4C; |list5={{em dash}} |group6={{Anchor|sensing|sensing_}}[[../Sensing|Sensing]] |group6style=background:#85C4E0; |list6={{em dash}} |group7={{Anchor|operators|operators_}}[[../Operators|Operators]] |group7style=background:#7ECE7E; |list7={{em dash}} |group8={{Anchor|data|data_}}[[../Data|Data]] |group8style=background:#FFA54C; |list8={{em dash}} |group9={{Anchor|procedures|procedures_}}[[../Procedures|Procedures]] |group9style=background:#FF99AA; |list9={{em dash}} |group10={{Anchor|coreExample|coreExample_}}[[../Core Example|CoreExample]] |group10style=background:#13ECAF; |list10= * [[../CoreExample#exampleOpcode|example block]] * [[../CoreExample#exampleWithInlineImage|block with image ⟳ inline]] |group11=[[../Other|Other]] |group11style=background:#BFBFBF; |list11={{em dash}} }} |group2=Extension |group2style=background:#13ECAF; |list2=TODO |group3=Modification |group3style=background:#FF4C4C;color:white; |list3=TODO }} <noinclude>{{BookCat}}</noinclude> c90l34lyt2fxc2nfmu7xp76uwp0onw9 4656669 4656668 2026-08-07T17:42:32Z Some helpful person 3510188 fix 4656669 wikitext text/x-wiki {{Navbox with collapsible groups |title=Scratch blocks |bodyclass=hlist |state={{{1|{{{state|uncollapsed}}}}}} |basestyle=background:#BFBFBF; |group1=Core |group1style=background:#f9A83A; |list1={{Navbox|child |state={{{1|{{{state|uncollapsed}}}}}} |group1={{Anchor|motion|motion_}}[[../Motion|Motion]] |group1style=background:#80B5FF; |list1= * [[../Motion#movesteps|move () steps]] * [[../Motion#turnright|turn {{Abbr|⟳|clockwise, right}} () degrees]] * [[../Motion#turnleft|turn {{Abbr|⟲|counterclockwise, left}} () degrees]] * [[../Motion#goto|go to ()]] * [[../Motion#gotoxy|go to x: () y: ()]] * [[../Motion#glideto|glide () secs to ()]] * [[../Motion#glidesecstoxy|glide () secs to x: () y: ()]] * [[../Motion#pointindirection|point in direction ()]] * [[../Motion#pointtowards|point towards ()]] * [[../Motion#changexby|change x by ()]] * [[../Motion#setx|set x to ()]] * [[../Motion#changeyby|change y by ()]] * [[../Motion#sety|set y to ()]] * [[../Motion#ifonedgebounce|if on edge, bounce]] * [[../Motion#setrotationstyle|set rotation style ()]] * [[../Motion#xposition|x position]] * [[../Motion#yposition|y position]] * [[../Motion#direction|direction]] * Hidden ** [[../Motion#scroll_right|scroll right ()]] ** [[../Motion#scroll_up|scroll up ()]] ** [[../Motion#align_scene|align scene ()]] ** [[../Motion#xscroll|x scroll]] ** [[../Motion#yscroll|y scroll]] |group2={{Anchor|looks|looks_}}[[../Looks|Looks]] |group2style=background:#CCB3FF; |list2= * [[../Looks#sayforsecs|say () for () seconds]] * [[../Looks#say|say ()]] * [[../Looks#thinkforsecs|think () for () seconds]] * [[../Looks#think|think ()]] * [[../Looks#switchcostumeto|switch costume to ()]] * [[../Looks#nextcostume|next costume]] * [[../Looks#switchbackdropto|switch backdrop to ()]] * [[../Looks#nextbackdrop|next backdrop]] * [[../Looks#changesizeby|change size by ()]] * [[../Looks#setsizeto|set size to ()%]] * [[../Looks#changeeffectby|change () effect by ()]] * [[../Looks#seteffectto|set () effect to ()]] * [[../Looks#cleargraphiceffects|clear graphic effects]] * [[../Looks#show|show]] * [[../Looks#hide|hide]] * [[../Looks#gotofrontback|go to () layer]] * [[../Looks#goforwardbackwardlayers|go () () layers]] * [[../Looks#costumenumbername|costume ()]] * [[../Looks#backdropnumbername|backdrop ()]] * [[../Looks#size|size]] * Hidden ** [[../Looks#hideallsprites|hide all sprites]] ** [[../Looks#changestretchby|change stretch by ()]] ** [[../Looks#setstretchto|set stretch to ()%]] |group3={{Anchor|sound|sound_}}[[../Sound|Sound]] |group3style=background:#E19DE1; |list3= * [[../Sound#playuntildone|play sound () until done]] * [[../Sound#play|start sound ()]] * [[../Sound#stopallsounds|stop all sounds]] * [[../Sound#changeeffectby|change () effect by ()]] * [[../Sound#seteffectto|set () effect to ()]] * [[../Sound#cleareffects|clear sound effects]] * [[../Sound#changevolumeby|change volume by ()]] * [[../Sound#setvolumeto|set volume to ()%]] * [[../Sound#volume|volume]] |group4={{Anchor|events|events_}}[[../Events|Events]] |group4style=background:#FFD966; |list4= * [[../Events#whenflagclicked|when green flag clicked]] * [[../Events#whenkeypressed|when () key pressed]] * [[../Events#whenthisspriteclicked|when this sprite clicked]] ** [[../Events#whenstageclicked|when stage clicked]] * [[../Events#whenbackdropswitchesto|when backdrop switches to ()]] * [[../Events#whengreaterthan|when () > ()]] * [[../Events#whenbroadcastreceived|when I receive ()]] * [[../Events#broadcast|broadcast ()]] * [[../Events#broadcastandwait|broadcast () and wait]] * Hidden ** [[../Events#whentouchingobject|when this sprite touches ()]] |group5={{Anchor|control|control_}}[[../Control|Control]] |group5style=background:#FFBE4C; |list5={{em dash}} |group6={{Anchor|sensing|sensing_}}[[../Sensing|Sensing]] |group6style=background:#85C4E0; |list6={{em dash}} |group7={{Anchor|operators|operators_}}[[../Operators|Operators]] |group7style=background:#7ECE7E; |list7={{em dash}} |group8={{Anchor|data|data_}}[[../Data|Data]] |group8style=background:#FFA54C; |list8={{em dash}} |group9={{Anchor|procedures|procedures_}}[[../Procedures|Procedures]] |group9style=background:#FF99AA; |list9={{em dash}} |group10={{Anchor|coreExample|coreExample_}}[[../Core Example|CoreExample]] |group10style=background:#13ECAF; |list10= * [[../CoreExample#exampleOpcode|example block]] * [[../CoreExample#exampleWithInlineImage|block with image ⟳ inline]] |group11=[[../Other|Other]] |group11style=background:#BFBFBF; |list11={{em dash}} }} |group2=Extension |group2style=background:#13ECAF; |list2={{Navbox|child |state={{{1|{{{state|uncollapsed}}}}}} |list1=TODO }} |group3=Modification |group3style=background:#FF4C4C;color:white; |list3={{Navbox|child |state={{{1|{{{state|uncollapsed}}}}}} |list1=TODO }} }} <noinclude>{{BookCat}}</noinclude> t256lafbu8z8mm8adzxtwkyduuswex2 4656671 4656669 2026-08-07T17:55:55Z Some helpful person 3510188 fix x2 4656671 wikitext text/x-wiki {{Navbox with collapsible groups |title=Scratch blocks |bodyclass=hlist |selected={{{1|}}} |state={{{state<includeonly>|uncollapsed</includeonly>}}} |basestyle=background:#BFBFBF; |abbr1=core |group1=Core |group1style=background:#f9A83A; |state1={{{state<includeonly>|collapsed</includeonly>}}} |list1={{Navbox|child |group1={{Anchor|motion|motion_}}[[../Motion|Motion]] |group1style=background:#80B5FF; |list1= * [[../Motion#movesteps|move () steps]] * [[../Motion#turnright|turn {{Abbr|⟳|clockwise, right}} () degrees]] * [[../Motion#turnleft|turn {{Abbr|⟲|counterclockwise, left}} () degrees]] * [[../Motion#goto|go to ()]] * [[../Motion#gotoxy|go to x: () y: ()]] * [[../Motion#glideto|glide () secs to ()]] * [[../Motion#glidesecstoxy|glide () secs to x: () y: ()]] * [[../Motion#pointindirection|point in direction ()]] * [[../Motion#pointtowards|point towards ()]] * [[../Motion#changexby|change x by ()]] * [[../Motion#setx|set x to ()]] * [[../Motion#changeyby|change y by ()]] * [[../Motion#sety|set y to ()]] * [[../Motion#ifonedgebounce|if on edge, bounce]] * [[../Motion#setrotationstyle|set rotation style ()]] * [[../Motion#xposition|x position]] * [[../Motion#yposition|y position]] * [[../Motion#direction|direction]] * Hidden ** [[../Motion#scroll_right|scroll right ()]] ** [[../Motion#scroll_up|scroll up ()]] ** [[../Motion#align_scene|align scene ()]] ** [[../Motion#xscroll|x scroll]] ** [[../Motion#yscroll|y scroll]] |abbr2=extension |group2={{Anchor|looks|looks_}}[[../Looks|Looks]] |group2style=background:#CCB3FF; |list2= * [[../Looks#sayforsecs|say () for () seconds]] * [[../Looks#say|say ()]] * [[../Looks#thinkforsecs|think () for () seconds]] * [[../Looks#think|think ()]] * [[../Looks#switchcostumeto|switch costume to ()]] * [[../Looks#nextcostume|next costume]] * [[../Looks#switchbackdropto|switch backdrop to ()]] * [[../Looks#nextbackdrop|next backdrop]] * [[../Looks#changesizeby|change size by ()]] * [[../Looks#setsizeto|set size to ()%]] * [[../Looks#changeeffectby|change () effect by ()]] * [[../Looks#seteffectto|set () effect to ()]] * [[../Looks#cleargraphiceffects|clear graphic effects]] * [[../Looks#show|show]] * [[../Looks#hide|hide]] * [[../Looks#gotofrontback|go to () layer]] * [[../Looks#goforwardbackwardlayers|go () () layers]] * [[../Looks#costumenumbername|costume ()]] * [[../Looks#backdropnumbername|backdrop ()]] * [[../Looks#size|size]] * Hidden ** [[../Looks#hideallsprites|hide all sprites]] ** [[../Looks#changestretchby|change stretch by ()]] ** [[../Looks#setstretchto|set stretch to ()%]] |abbr3=mod |group3={{Anchor|sound|sound_}}[[../Sound|Sound]] |group3style=background:#E19DE1; |list3= * [[../Sound#playuntildone|play sound () until done]] * [[../Sound#play|start sound ()]] * [[../Sound#stopallsounds|stop all sounds]] * [[../Sound#changeeffectby|change () effect by ()]] * [[../Sound#seteffectto|set () effect to ()]] * [[../Sound#cleareffects|clear sound effects]] * [[../Sound#changevolumeby|change volume by ()]] * [[../Sound#setvolumeto|set volume to ()%]] * [[../Sound#volume|volume]] |group4={{Anchor|events|events_}}[[../Events|Events]] |group4style=background:#FFD966; |list4= * [[../Events#whenflagclicked|when green flag clicked]] * [[../Events#whenkeypressed|when () key pressed]] * [[../Events#whenthisspriteclicked|when this sprite clicked]] ** [[../Events#whenstageclicked|when stage clicked]] * [[../Events#whenbackdropswitchesto|when backdrop switches to ()]] * [[../Events#whengreaterthan|when () > ()]] * [[../Events#whenbroadcastreceived|when I receive ()]] * [[../Events#broadcast|broadcast ()]] * [[../Events#broadcastandwait|broadcast () and wait]] * Hidden ** [[../Events#whentouchingobject|when this sprite touches ()]] |group5={{Anchor|control|control_}}[[../Control|Control]] |group5style=background:#FFBE4C; |list5={{em dash}} |group6={{Anchor|sensing|sensing_}}[[../Sensing|Sensing]] |group6style=background:#85C4E0; |list6={{em dash}} |group7={{Anchor|operators|operators_}}[[../Operators|Operators]] |group7style=background:#7ECE7E; |list7={{em dash}} |group8={{Anchor|data|data_}}[[../Data|Data]] |group8style=background:#FFA54C; |list8={{em dash}} |group9={{Anchor|procedures|procedures_}}[[../Procedures|Procedures]] |group9style=background:#FF99AA; |list9={{em dash}} |group10={{Anchor|coreExample|coreExample_}}[[../Core Example|CoreExample]] |group10style=background:#13ECAF; |list10= * [[../CoreExample#exampleOpcode|example block]] * [[../CoreExample#exampleWithInlineImage|block with image ⟳ inline]] |group11=[[../Other|Other]] |group11style=background:#BFBFBF; |list11={{em dash}} }} |group2=Extension |group2style=background:#13ECAF; |state2={{{state<includeonly>|collapsed</includeonly>}}} |list2={{Navbox|child |list1=TODO }} |group3=Modification |group3style=background:#FF4C4C;color:white; |state3={{{state<includeonly>|collapsed</includeonly>}}} |list3={{Navbox|child |list1=TODO }} }} <noinclude>{{BookCat}}</noinclude> ioh0ii9aw45grk05oljb5bo0p7gguat 4656673 4656671 2026-08-07T18:02:37Z Some helpful person 3510188 Some helpful person moved page [[Scratch Virtual Machine/Blocks/Navbox]] to [[Scratch Virtual Machine/Blocksbox]]: to make the template happy 4656671 wikitext text/x-wiki {{Navbox with collapsible groups |title=Scratch blocks |bodyclass=hlist |selected={{{1|}}} |state={{{state<includeonly>|uncollapsed</includeonly>}}} |basestyle=background:#BFBFBF; |abbr1=core |group1=Core |group1style=background:#f9A83A; |state1={{{state<includeonly>|collapsed</includeonly>}}} |list1={{Navbox|child |group1={{Anchor|motion|motion_}}[[../Motion|Motion]] |group1style=background:#80B5FF; |list1= * [[../Motion#movesteps|move () steps]] * [[../Motion#turnright|turn {{Abbr|⟳|clockwise, right}} () degrees]] * [[../Motion#turnleft|turn {{Abbr|⟲|counterclockwise, left}} () degrees]] * [[../Motion#goto|go to ()]] * [[../Motion#gotoxy|go to x: () y: ()]] * [[../Motion#glideto|glide () secs to ()]] * [[../Motion#glidesecstoxy|glide () secs to x: () y: ()]] * [[../Motion#pointindirection|point in direction ()]] * [[../Motion#pointtowards|point towards ()]] * [[../Motion#changexby|change x by ()]] * [[../Motion#setx|set x to ()]] * [[../Motion#changeyby|change y by ()]] * [[../Motion#sety|set y to ()]] * [[../Motion#ifonedgebounce|if on edge, bounce]] * [[../Motion#setrotationstyle|set rotation style ()]] * [[../Motion#xposition|x position]] * [[../Motion#yposition|y position]] * [[../Motion#direction|direction]] * Hidden ** [[../Motion#scroll_right|scroll right ()]] ** [[../Motion#scroll_up|scroll up ()]] ** [[../Motion#align_scene|align scene ()]] ** [[../Motion#xscroll|x scroll]] ** [[../Motion#yscroll|y scroll]] |abbr2=extension |group2={{Anchor|looks|looks_}}[[../Looks|Looks]] |group2style=background:#CCB3FF; |list2= * [[../Looks#sayforsecs|say () for () seconds]] * [[../Looks#say|say ()]] * [[../Looks#thinkforsecs|think () for () seconds]] * [[../Looks#think|think ()]] * [[../Looks#switchcostumeto|switch costume to ()]] * [[../Looks#nextcostume|next costume]] * [[../Looks#switchbackdropto|switch backdrop to ()]] * [[../Looks#nextbackdrop|next backdrop]] * [[../Looks#changesizeby|change size by ()]] * [[../Looks#setsizeto|set size to ()%]] * [[../Looks#changeeffectby|change () effect by ()]] * [[../Looks#seteffectto|set () effect to ()]] * [[../Looks#cleargraphiceffects|clear graphic effects]] * [[../Looks#show|show]] * [[../Looks#hide|hide]] * [[../Looks#gotofrontback|go to () layer]] * [[../Looks#goforwardbackwardlayers|go () () layers]] * [[../Looks#costumenumbername|costume ()]] * [[../Looks#backdropnumbername|backdrop ()]] * [[../Looks#size|size]] * Hidden ** [[../Looks#hideallsprites|hide all sprites]] ** [[../Looks#changestretchby|change stretch by ()]] ** [[../Looks#setstretchto|set stretch to ()%]] |abbr3=mod |group3={{Anchor|sound|sound_}}[[../Sound|Sound]] |group3style=background:#E19DE1; |list3= * [[../Sound#playuntildone|play sound () until done]] * [[../Sound#play|start sound ()]] * [[../Sound#stopallsounds|stop all sounds]] * [[../Sound#changeeffectby|change () effect by ()]] * [[../Sound#seteffectto|set () effect to ()]] * [[../Sound#cleareffects|clear sound effects]] * [[../Sound#changevolumeby|change volume by ()]] * [[../Sound#setvolumeto|set volume to ()%]] * [[../Sound#volume|volume]] |group4={{Anchor|events|events_}}[[../Events|Events]] |group4style=background:#FFD966; |list4= * [[../Events#whenflagclicked|when green flag clicked]] * [[../Events#whenkeypressed|when () key pressed]] * [[../Events#whenthisspriteclicked|when this sprite clicked]] ** [[../Events#whenstageclicked|when stage clicked]] * [[../Events#whenbackdropswitchesto|when backdrop switches to ()]] * [[../Events#whengreaterthan|when () > ()]] * [[../Events#whenbroadcastreceived|when I receive ()]] * [[../Events#broadcast|broadcast ()]] * [[../Events#broadcastandwait|broadcast () and wait]] * Hidden ** [[../Events#whentouchingobject|when this sprite touches ()]] |group5={{Anchor|control|control_}}[[../Control|Control]] |group5style=background:#FFBE4C; |list5={{em dash}} |group6={{Anchor|sensing|sensing_}}[[../Sensing|Sensing]] |group6style=background:#85C4E0; |list6={{em dash}} |group7={{Anchor|operators|operators_}}[[../Operators|Operators]] |group7style=background:#7ECE7E; |list7={{em dash}} |group8={{Anchor|data|data_}}[[../Data|Data]] |group8style=background:#FFA54C; |list8={{em dash}} |group9={{Anchor|procedures|procedures_}}[[../Procedures|Procedures]] |group9style=background:#FF99AA; |list9={{em dash}} |group10={{Anchor|coreExample|coreExample_}}[[../Core Example|CoreExample]] |group10style=background:#13ECAF; |list10= * [[../CoreExample#exampleOpcode|example block]] * [[../CoreExample#exampleWithInlineImage|block with image ⟳ inline]] |group11=[[../Other|Other]] |group11style=background:#BFBFBF; |list11={{em dash}} }} |group2=Extension |group2style=background:#13ECAF; |state2={{{state<includeonly>|collapsed</includeonly>}}} |list2={{Navbox|child |list1=TODO }} |group3=Modification |group3style=background:#FF4C4C;color:white; |state3={{{state<includeonly>|collapsed</includeonly>}}} |list3={{Navbox|child |list1=TODO }} }} <noinclude>{{BookCat}}</noinclude> ioh0ii9aw45grk05oljb5bo0p7gguat 4656675 4656673 2026-08-07T18:10:10Z Some helpful person 3510188 fix x3 4656675 wikitext text/x-wiki {{Navbox with collapsible groups |title=Scratch blocks |bodyclass=hlist |selected={{{1|}}} |state={{{state<includeonly>|uncollapsed</includeonly>}}} |basestyle=background:#BFBFBF; |abbr1=core |group1=Core |group1style=background:#f9A83A; |state1={{{state<includeonly>|collapsed</includeonly>}}} |list1={{Navbox|child |group1={{Anchor|motion|motion_}}[[Scratch Virtual Machine/Blocks/Motion|Motion]] |group1style=background:#80B5FF; |list1= * [[Scratch Virtual Machine/Blocks/Motion#movesteps|move () steps]] * [[Scratch Virtual Machine/Blocks/Motion#turnright|turn {{Abbr|⟳|clockwise, right}} () degrees]] * [[Scratch Virtual Machine/Blocks/Motion#turnleft|turn {{Abbr|⟲|counterclockwise, left}} () degrees]] * [[Scratch Virtual Machine/Blocks/Motion#goto|go to ()]] * [[Scratch Virtual Machine/Blocks/Motion#gotoxy|go to x: () y: ()]] * [[Scratch Virtual Machine/Blocks/Motion#glideto|glide () secs to ()]] * [[Scratch Virtual Machine/Blocks/Motion#glidesecstoxy|glide () secs to x: () y: ()]] * [[Scratch Virtual Machine/Blocks/Motion#pointindirection|point in direction ()]] * [[Scratch Virtual Machine/Blocks/Motion#pointtowards|point towards ()]] * [[Scratch Virtual Machine/Blocks/Motion#changexby|change x by ()]] * [[Scratch Virtual Machine/Blocks/Motion#setx|set x to ()]] * [[Scratch Virtual Machine/Blocks/Motion#changeyby|change y by ()]] * [[Scratch Virtual Machine/Blocks/Motion#sety|set y to ()]] * [[Scratch Virtual Machine/Blocks/Motion#ifonedgebounce|if on edge, bounce]] * [[Scratch Virtual Machine/Blocks/Motion#setrotationstyle|set rotation style ()]] * [[Scratch Virtual Machine/Blocks/Motion#xposition|x position]] * [[Scratch Virtual Machine/Blocks/Motion#yposition|y position]] * [[Scratch Virtual Machine/Blocks/Motion#direction|direction]] * Hidden ** [[Scratch Virtual Machine/Blocks/Motion#scroll_right|scroll right ()]] ** [[Scratch Virtual Machine/Blocks/Motion#scroll_up|scroll up ()]] ** [[Scratch Virtual Machine/Blocks/Motion#align_scene|align scene ()]] ** [[Scratch Virtual Machine/Blocks/Motion#xscroll|x scroll]] ** [[Scratch Virtual Machine/Blocks/Motion#yscroll|y scroll]] |abbr2=extension |group2={{Anchor|looks|looks_}}[[Scratch Virtual Machine/Blocks/Looks|Looks]] |group2style=background:#CCB3FF; |list2= * [[Scratch Virtual Machine/Blocks/Looks#sayforsecs|say () for () seconds]] * [[Scratch Virtual Machine/Blocks/Looks#say|say ()]] * [[Scratch Virtual Machine/Blocks/Looks#thinkforsecs|think () for () seconds]] * [[Scratch Virtual Machine/Blocks/Looks#think|think ()]] * [[Scratch Virtual Machine/Blocks/Looks#switchcostumeto|switch costume to ()]] * [[Scratch Virtual Machine/Blocks/Looks#nextcostume|next costume]] * [[Scratch Virtual Machine/Blocks/Looks#switchbackdropto|switch backdrop to ()]] * [[Scratch Virtual Machine/Blocks/Looks#nextbackdrop|next backdrop]] * [[Scratch Virtual Machine/Blocks/Looks#changesizeby|change size by ()]] * [[Scratch Virtual Machine/Blocks/Looks#setsizeto|set size to ()%]] * [[Scratch Virtual Machine/Blocks/Looks#changeeffectby|change () effect by ()]] * [[Scratch Virtual Machine/Blocks/Looks#seteffectto|set () effect to ()]] * [[Scratch Virtual Machine/Blocks/Looks#cleargraphiceffects|clear graphic effects]] * [[Scratch Virtual Machine/Blocks/Looks#show|show]] * [[Scratch Virtual Machine/Blocks/Looks#hide|hide]] * [[Scratch Virtual Machine/Blocks/Looks#gotofrontback|go to () layer]] * [[Scratch Virtual Machine/Blocks/Looks#goforwardbackwardlayers|go () () layers]] * [[Scratch Virtual Machine/Blocks/Looks#costumenumbername|costume ()]] * [[Scratch Virtual Machine/Blocks/Looks#backdropnumbername|backdrop ()]] * [[Scratch Virtual Machine/Blocks/Looks#size|size]] * Hidden ** [[Scratch Virtual Machine/Blocks/Looks#hideallsprites|hide all sprites]] ** [[Scratch Virtual Machine/Blocks/Looks#changestretchby|change stretch by ()]] ** [[Scratch Virtual Machine/Blocks/Looks#setstretchto|set stretch to ()%]] |abbr3=mod |group3={{Anchor|sound|sound_}}[[Scratch Virtual Machine/Blocks/Sound|Sound]] |group3style=background:#E19DE1; |list3= * [[Scratch Virtual Machine/Blocks/Sound#playuntildone|play sound () until done]] * [[Scratch Virtual Machine/Blocks/Sound#play|start sound ()]] * [[Scratch Virtual Machine/Blocks/Sound#stopallsounds|stop all sounds]] * [[Scratch Virtual Machine/Blocks/Sound#changeeffectby|change () effect by ()]] * [[Scratch Virtual Machine/Blocks/Sound#seteffectto|set () effect to ()]] * [[Scratch Virtual Machine/Blocks/Sound#cleareffects|clear sound effects]] * [[Scratch Virtual Machine/Blocks/Sound#changevolumeby|change volume by ()]] * [[Scratch Virtual Machine/Blocks/Sound#setvolumeto|set volume to ()%]] * [[Scratch Virtual Machine/Blocks/Sound#volume|volume]] |group4={{Anchor|events|events_}}[[Scratch Virtual Machine/Blocks/Events|Events]] |group4style=background:#FFD966; |list4= * [[Scratch Virtual Machine/Blocks/Events#whenflagclicked|when green flag clicked]] * [[Scratch Virtual Machine/Blocks/Events#whenkeypressed|when () key pressed]] * [[Scratch Virtual Machine/Blocks/Events#whenthisspriteclicked|when this sprite clicked]] ** [[Scratch Virtual Machine/Blocks/Events#whenstageclicked|when stage clicked]] * [[Scratch Virtual Machine/Blocks/Events#whenbackdropswitchesto|when backdrop switches to ()]] * [[Scratch Virtual Machine/Blocks/Events#whengreaterthan|when () > ()]] * [[Scratch Virtual Machine/Blocks/Events#whenbroadcastreceived|when I receive ()]] * [[Scratch Virtual Machine/Blocks/Events#broadcast|broadcast ()]] * [[Scratch Virtual Machine/Blocks/Events#broadcastandwait|broadcast () and wait]] * Hidden ** [[Scratch Virtual Machine/Blocks/Events#whentouchingobject|when this sprite touches ()]] |group5={{Anchor|control|control_}}[[Scratch Virtual Machine/Blocks/Control|Control]] |group5style=background:#FFBE4C; |list5={{em dash}} |group6={{Anchor|sensing|sensing_}}[[Scratch Virtual Machine/Blocks/Sensing|Sensing]] |group6style=background:#85C4E0; |list6={{em dash}} |group7={{Anchor|operators|operators_}}[[Scratch Virtual Machine/Blocks/Operators|Operators]] |group7style=background:#7ECE7E; |list7={{em dash}} |group8={{Anchor|data|data_}}[[Scratch Virtual Machine/Blocks/Data|Data]] |group8style=background:#FFA54C; |list8={{em dash}} |group9={{Anchor|procedures|procedures_}}[[Scratch Virtual Machine/Blocks/Procedures|Procedures]] |group9style=background:#FF99AA; |list9={{em dash}} |group10={{Anchor|coreExample|coreExample_}}[[Scratch Virtual Machine/Blocks/Core Example|CoreExample]] |group10style=background:#13ECAF; |list10= * [[Scratch Virtual Machine/Blocks/CoreExample#exampleOpcode|example block]] * [[Scratch Virtual Machine/Blocks/CoreExample#exampleWithInlineImage|block with image ⟳ inline]] |group11=[[Scratch Virtual Machine/Blocks/Other|Other]] |group11style=background:#BFBFBF; |list11={{em dash}} }} |group2=Extension |group2style=background:#13ECAF; |state2={{{state<includeonly>|collapsed</includeonly>}}} |list2={{Navbox|child |list1=TODO }} |group3=Modification |group3style=background:#FF4C4C;color:white; |state3={{{state<includeonly>|collapsed</includeonly>}}} |list3={{Navbox|child |list1=TODO }} }} <noinclude>{{BookCat}}</noinclude> lfom1fcpr5i0twutak389rcmpj9009m 4656680 4656675 2026-08-07T18:43:45Z Some helpful person 3510188 typo 4656680 wikitext text/x-wiki {{Navbox with collapsible groups |title=Scratch blocks |bodyclass=hlist |selected={{{1|}}} |state={{{state<includeonly>|uncollapsed</includeonly>}}} |basestyle=background:#BFBFBF; |abbr1=core |group1=Core |group1style=background:#f9A83A; |state1={{{state<includeonly>|collapsed</includeonly>}}} |list1={{Navbox|child |group1={{Anchor|motion|motion_}}[[Scratch Virtual Machine/Blocks/Motion|Motion]] |group1style=background:#80B5FF; |list1= * [[Scratch Virtual Machine/Blocks/Motion#movesteps|move () steps]] * [[Scratch Virtual Machine/Blocks/Motion#turnright|turn {{Abbr|⟳|clockwise, right}} () degrees]] * [[Scratch Virtual Machine/Blocks/Motion#turnleft|turn {{Abbr|⟲|counterclockwise, left}} () degrees]] * [[Scratch Virtual Machine/Blocks/Motion#goto|go to ()]] * [[Scratch Virtual Machine/Blocks/Motion#gotoxy|go to x: () y: ()]] * [[Scratch Virtual Machine/Blocks/Motion#glideto|glide () secs to ()]] * [[Scratch Virtual Machine/Blocks/Motion#glidesecstoxy|glide () secs to x: () y: ()]] * [[Scratch Virtual Machine/Blocks/Motion#pointindirection|point in direction ()]] * [[Scratch Virtual Machine/Blocks/Motion#pointtowards|point towards ()]] * [[Scratch Virtual Machine/Blocks/Motion#changexby|change x by ()]] * [[Scratch Virtual Machine/Blocks/Motion#setx|set x to ()]] * [[Scratch Virtual Machine/Blocks/Motion#changeyby|change y by ()]] * [[Scratch Virtual Machine/Blocks/Motion#sety|set y to ()]] * [[Scratch Virtual Machine/Blocks/Motion#ifonedgebounce|if on edge, bounce]] * [[Scratch Virtual Machine/Blocks/Motion#setrotationstyle|set rotation style ()]] * [[Scratch Virtual Machine/Blocks/Motion#xposition|x position]] * [[Scratch Virtual Machine/Blocks/Motion#yposition|y position]] * [[Scratch Virtual Machine/Blocks/Motion#direction|direction]] * Hidden ** [[Scratch Virtual Machine/Blocks/Motion#scroll_right|scroll right ()]] ** [[Scratch Virtual Machine/Blocks/Motion#scroll_up|scroll up ()]] ** [[Scratch Virtual Machine/Blocks/Motion#align_scene|align scene ()]] ** [[Scratch Virtual Machine/Blocks/Motion#xscroll|x scroll]] ** [[Scratch Virtual Machine/Blocks/Motion#yscroll|y scroll]] |abbr2=extension |group2={{Anchor|looks|looks_}}[[Scratch Virtual Machine/Blocks/Looks|Looks]] |group2style=background:#CCB3FF; |list2= * [[Scratch Virtual Machine/Blocks/Looks#sayforsecs|say () for () seconds]] * [[Scratch Virtual Machine/Blocks/Looks#say|say ()]] * [[Scratch Virtual Machine/Blocks/Looks#thinkforsecs|think () for () seconds]] * [[Scratch Virtual Machine/Blocks/Looks#think|think ()]] * [[Scratch Virtual Machine/Blocks/Looks#switchcostumeto|switch costume to ()]] * [[Scratch Virtual Machine/Blocks/Looks#nextcostume|next costume]] * [[Scratch Virtual Machine/Blocks/Looks#switchbackdropto|switch backdrop to ()]] * [[Scratch Virtual Machine/Blocks/Looks#nextbackdrop|next backdrop]] * [[Scratch Virtual Machine/Blocks/Looks#changesizeby|change size by ()]] * [[Scratch Virtual Machine/Blocks/Looks#setsizeto|set size to ()%]] * [[Scratch Virtual Machine/Blocks/Looks#changeeffectby|change () effect by ()]] * [[Scratch Virtual Machine/Blocks/Looks#seteffectto|set () effect to ()]] * [[Scratch Virtual Machine/Blocks/Looks#cleargraphiceffects|clear graphic effects]] * [[Scratch Virtual Machine/Blocks/Looks#show|show]] * [[Scratch Virtual Machine/Blocks/Looks#hide|hide]] * [[Scratch Virtual Machine/Blocks/Looks#gotofrontback|go to () layer]] * [[Scratch Virtual Machine/Blocks/Looks#goforwardbackwardlayers|go () () layers]] * [[Scratch Virtual Machine/Blocks/Looks#costumenumbername|costume ()]] * [[Scratch Virtual Machine/Blocks/Looks#backdropnumbername|backdrop ()]] * [[Scratch Virtual Machine/Blocks/Looks#size|size]] * Hidden ** [[Scratch Virtual Machine/Blocks/Looks#hideallsprites|hide all sprites]] ** [[Scratch Virtual Machine/Blocks/Looks#changestretchby|change stretch by ()]] ** [[Scratch Virtual Machine/Blocks/Looks#setstretchto|set stretch to ()%]] |abbr3=mod |group3={{Anchor|sound|sound_}}[[Scratch Virtual Machine/Blocks/Sound|Sound]] |group3style=background:#E19DE1; |list3= * [[Scratch Virtual Machine/Blocks/Sound#playuntildone|play sound () until done]] * [[Scratch Virtual Machine/Blocks/Sound#play|start sound ()]] * [[Scratch Virtual Machine/Blocks/Sound#stopallsounds|stop all sounds]] * [[Scratch Virtual Machine/Blocks/Sound#changeeffectby|change () effect by ()]] * [[Scratch Virtual Machine/Blocks/Sound#seteffectto|set () effect to ()]] * [[Scratch Virtual Machine/Blocks/Sound#cleareffects|clear sound effects]] * [[Scratch Virtual Machine/Blocks/Sound#changevolumeby|change volume by ()]] * [[Scratch Virtual Machine/Blocks/Sound#setvolumeto|set volume to ()%]] * [[Scratch Virtual Machine/Blocks/Sound#volume|volume]] |group4={{Anchor|events|events_}}[[Scratch Virtual Machine/Blocks/Events|Events]] |group4style=background:#FFD966; |list4= * [[Scratch Virtual Machine/Blocks/Events#whenflagclicked|when green flag clicked]] * [[Scratch Virtual Machine/Blocks/Events#whenkeypressed|when () key pressed]] * [[Scratch Virtual Machine/Blocks/Events#whenthisspriteclicked|when this sprite clicked]] ** [[Scratch Virtual Machine/Blocks/Events#whenstageclicked|when stage clicked]] * [[Scratch Virtual Machine/Blocks/Events#whenbackdropswitchesto|when backdrop switches to ()]] * [[Scratch Virtual Machine/Blocks/Events#whengreaterthan|when () > ()]] * [[Scratch Virtual Machine/Blocks/Events#whenbroadcastreceived|when I receive ()]] * [[Scratch Virtual Machine/Blocks/Events#broadcast|broadcast ()]] * [[Scratch Virtual Machine/Blocks/Events#broadcastandwait|broadcast () and wait]] * Hidden ** [[Scratch Virtual Machine/Blocks/Events#whentouchingobject|when this sprite touches ()]] |group5={{Anchor|control|control_}}[[Scratch Virtual Machine/Blocks/Control|Control]] |group5style=background:#FFBE4C; |list5={{em dash}} |group6={{Anchor|sensing|sensing_}}[[Scratch Virtual Machine/Blocks/Sensing|Sensing]] |group6style=background:#85C4E0; |list6={{em dash}} |group7={{Anchor|operators|operators_}}[[Scratch Virtual Machine/Blocks/Operators|Operators]] |group7style=background:#7ECE7E; |list7={{em dash}} |group8={{Anchor|data|data_}}[[Scratch Virtual Machine/Blocks/Data|Data]] |group8style=background:#FFA54C; |list8={{em dash}} |group9={{Anchor|procedures|procedures_}}[[Scratch Virtual Machine/Blocks/Procedures|Procedures]] |group9style=background:#FF99AA; |list9={{em dash}} |group10={{Anchor|coreExample|coreExample_}}[[Scratch Virtual Machine/Blocks/CoreExample|CoreExample]] |group10style=background:#13ECAF; |list10= * [[Scratch Virtual Machine/Blocks/CoreExample#exampleOpcode|example block]] * [[Scratch Virtual Machine/Blocks/CoreExample#exampleWithInlineImage|block with image ⟳ inline]] |group11=[[Scratch Virtual Machine/Blocks/Other|Other]] |group11style=background:#BFBFBF; |list11={{em dash}} }} |group2=Extension |group2style=background:#13ECAF; |state2={{{state<includeonly>|collapsed</includeonly>}}} |list2={{Navbox|child |list1=TODO }} |group3=Modification |group3style=background:#FF4C4C;color:white; |state3={{{state<includeonly>|collapsed</includeonly>}}} |list3={{Navbox|child |list1=TODO }} }} <noinclude>{{BookCat}}</noinclude> i3x116qan58m791zus1o1sy2jou4w4a Scratch Virtual Machine/Blocks/Navbox 0 485177 4656674 2026-08-07T18:02:38Z Some helpful person 3510188 Some helpful person moved page [[Scratch Virtual Machine/Blocks/Navbox]] to [[Scratch Virtual Machine/Blocksbox]]: to make the template happy 4656674 wikitext text/x-wiki #REDIRECT [[Scratch Virtual Machine/Blocksbox]] pu5oa8yuw4v0hpu70hm0pfs6fyv0lbo Scratch Virtual Machine/Blocks/CoreExample 0 485178 4656681 2026-08-07T18:47:07Z Some helpful person 3510188 Created page with "These are example blocks used in the Scratch 3.0 VM for testing purposes and are not visible in the block palette. ==example block== Reports the string <code>Stage</code>. * If the stage exists (as it always should), reports the stage's name, which should always be the string <code>Stage</code>. * Otherwise, reports the string <code>no stage yet</code>. <syntaxhighlight lang=py> coreExample_exampleOpcode(): if stage exists return stage.name # i.e. "Stage" else..." 4656681 wikitext text/x-wiki These are example blocks used in the Scratch 3.0 VM for testing purposes and are not visible in the block palette. ==example block== Reports the string <code>Stage</code>. * If the stage exists (as it always should), reports the stage's name, which should always be the string <code>Stage</code>. * Otherwise, reports the string <code>no stage yet</code>. <syntaxhighlight lang=py> coreExample_exampleOpcode(): if stage exists return stage.name # i.e. "Stage" else return "no stage yet" </syntaxhighlight> ==block with image ⟳ inline== Does nothing. * Does nothing in style. <syntaxhighlight> coreExample_exampleWithInlineImage(): (do nothing) </syntaxhighlight> {{../../Blocksbox|core}} {{BookCat}} md91bafyumh0jpnjjkepchz6wpy3hx8 4656682 4656681 2026-08-07T18:48:45Z Some helpful person 3510188 4656682 wikitext text/x-wiki These are example blocks used in the Scratch 3.0 VM for testing purposes and are not visible in the block palette. ==<span class="anchor" id="coreExample_exampleOpcode"></span><span class="anchor" id="exampleOpcode"></span>example block== Reports the string <code>Stage</code>. * If the stage exists (as it always should), reports the stage's name, which should always be the string <code>Stage</code>. * Otherwise, reports the string <code>no stage yet</code>. <syntaxhighlight lang=py> coreExample_exampleOpcode(): if stage exists return stage.name # i.e. "Stage" else return "no stage yet" </syntaxhighlight> ==<span class="anchor" id="coreExample_exampleWithInlineImage"></span><span class="anchor" id="exampleWithInlineImage"></span>block with image ⟳ inline== Does nothing. * Does nothing in style. <syntaxhighlight> coreExample_exampleWithInlineImage(): (do nothing) </syntaxhighlight> {{../../Blocksbox|core}} {{BookCat}} gyxe6llflq7q8u5yrlm59riu9wcpzbd 4656684 4656682 2026-08-07T18:51:40Z Some helpful person 3510188 ref 4656684 wikitext text/x-wiki These are example blocks used in the Scratch 3.0 VM for testing purposes and are not visible in the block palette.<ref>{{Cite web |title=scratch3_core_example.js |url=https://github.com/scratchfoundation/scratch-editor/blob/6fd95da6340916c2693452e012b52fbd13f19c50/packages/scratch-vm/src/blocks/scratch3_core_example.js |access-date=2026-08-07 |publisher=[[:w:Scratch Foundation|Scratch Foundation]] |language=en |via=[[:w:GitHub|GitHub]]}}</ref> ==<span class="anchor" id="coreExample_exampleOpcode"></span><span class="anchor" id="exampleOpcode"></span>example block== Reports the string <code>Stage</code>. * If the stage exists (as it always should), reports the stage's name, which should always be the string <code>Stage</code>. * Otherwise, reports the string <code>no stage yet</code>. <syntaxhighlight lang=py> coreExample_exampleOpcode(): if stage exists return stage.name # i.e. "Stage" else return "no stage yet" </syntaxhighlight> ==<span class="anchor" id="coreExample_exampleWithInlineImage"></span><span class="anchor" id="exampleWithInlineImage"></span>block with image ⟳ inline== Does nothing. * Does nothing in style. <syntaxhighlight> coreExample_exampleWithInlineImage(): (do nothing) </syntaxhighlight> {{../../Blocksbox|core}} ==References== {{BookCat}} gif89xwmam3kx30ond1dbs3m6g8jweb 4656685 4656684 2026-08-07T18:53:40Z Some helpful person 3510188 fix 4656685 wikitext text/x-wiki These are example blocks used in the Scratch 3.0 VM for testing purposes and are not visible in the block palette.<ref>{{Cite web |title=scratch3_core_example.js |url=https://github.com/scratchfoundation/scratch-editor/blob/6fd95da6340916c2693452e012b52fbd13f19c50/packages/scratch-vm/src/blocks/scratch3_core_example.js |access-date=2026-08-07 |publisher=[[:w:Scratch Foundation|Scratch Foundation]] |language=en |via=[[:w:GitHub|GitHub]]}}</ref> ==<span class="anchor" id="coreExample_exampleOpcode"></span><span class="anchor" id="exampleOpcode"></span>example block== Reports the string <code>Stage</code>. * If the stage exists (as it always should), reports the stage's name, which should always be the string <code>Stage</code>. * Otherwise, reports the string <code>no stage yet</code>. <syntaxhighlight lang=py> coreExample_exampleOpcode(): if stage exists return stage.name # i.e. "Stage" else return "no stage yet" </syntaxhighlight> ==<span class="anchor" id="coreExample_exampleWithInlineImage"></span><span class="anchor" id="exampleWithInlineImage"></span>block with image ⟳ inline== Does nothing. * Does nothing in style. <syntaxhighlight> coreExample_exampleWithInlineImage(): (do nothing) </syntaxhighlight> ==References== <references /> {{../../Blocksbox|core}} {{BookCat}} mmp6mhmakd3b3paf7jus4jxo1zyce90 General Literary Chinese from Scratch/Zhuang poetry with Li Bi 0 485179 4656687 2026-08-07T19:02:57Z Shira the Mogul 3560559 boilerplate 4656687 wikitext text/x-wiki Comment to be written. ==Background== Li Bi was a Ming dynasty minister from Guangxi. == Text == === 前题·李璧 === <poem> 僊人佩得鏌鋣還,誤落飛泉第一灣。 三尺精靈化龍去,空留萬丈鏌鋣山。 </poem> ==References== * 《钦定古今图书集成·方舆汇编·职方典·思恩府部藝文二》卷1422 {{BookCat}} 0d8yrxwxegxieog96ufdnopawyt3s4t 4656688 4656687 2026-08-07T19:04:43Z Shira the Mogul 3560559 4656688 wikitext text/x-wiki Comment to be written. ==Background== Li Bi was a Ming dynasty minister from Guangxi. == Text == === 前题·李璧 === <poem> 僊人佩得鏌鋣還,誤落飛泉第一灣。 三尺精靈化龍去,空留萬丈鏌鋣山。 </poem> ==References== * 《钦定古今图书集成·方舆汇编·职方典·思恩府部藝文二》卷1422 https://zh.wikisource.org/wiki/%E6%AC%BD%E5%AE%9A%E5%8F%A4%E4%BB%8A%E5%9C%96%E6%9B%B8%E9%9B%86%E6%88%90/%E6%96%B9%E8%BC%BF%E5%BD%99%E7%B7%A8/%E8%81%B7%E6%96%B9%E5%85%B8/%E7%AC%AC1422%E5%8D%B7 {{BookCat}} drnq7669zyma3p5jrz08ey4dlwvqq7w General Literary Chinese from Scratch/The Beauty of Wuyuan with Fang Ju 0 485180 4656689 2026-08-07T19:07:31Z Shira the Mogul 3560559 boilerplate 4656689 wikitext text/x-wiki Comment to be written. ==Background== Wuyuan 武缘 was a region in the Tang dynasty Nanjin Prefecture in the modern-day Guangxi Autonomous Region of China, known for its natural beauty. == Text == === 布雍泉·方矩 === <poem> 汨汨流泉號布雍,等閒平地起蛟龍。 石竅尚藏雲雨氣,江心猶映甲鱗蹤。 波光石翠驚飛鳥,水冷潭深阻釣翁。 回首舒眸斜照裏,碧崖丹霧一般同。 </poem> ==References== * 《钦定古今图书集成·方舆汇编·职方典》卷1419 https://zh.wikisource.org/wiki/%E6%AC%BD%E5%AE%9A%E5%8F%A4%E4%BB%8A%E5%9C%96%E6%9B%B8%E9%9B%86%E6%88%90/%E6%96%B9%E8%BC%BF%E5%BD%99%E7%B7%A8/%E8%81%B7%E6%96%B9%E5%85%B8/%E7%AC%AC1422%E5%8D%B7 {{BookCat}} 17ei5aw4od4csoccdq2xk9cl5r2j28p 4656691 4656689 2026-08-07T19:10:20Z Shira the Mogul 3560559 4656691 wikitext text/x-wiki Comment to be written. ==Background== Wuyuan 武缘 was a region in the Tang dynasty Nanjin Prefecture in the modern-day Guangxi Autonomous Region of China, known for its natural beauty. == Text == === 布雍泉·方矩 === <poem> 汨汨流泉號布雍,等閒平地起蛟龍。 石竅尚藏雲雨氣,江心猶映甲鱗蹤。 波光石翠驚飛鳥,水冷潭深阻釣翁。 回首舒眸斜照裏,碧崖丹霧一般同。 </poem> === 刘新翰·游灵水 === <poem> 绕壑寻幽胜,凭高俯碧湍。 一溪吞野绿,半壁落江寒。 漶漫龙津宇,荒凉元武坛。 郑公遗韵在,调古和诚难。 </poem> ==References== * 《钦定古今图书集成·方舆汇编·职方典》卷1419 https://zh.wikisource.org/wiki/%E6%AC%BD%E5%AE%9A%E5%8F%A4%E4%BB%8A%E5%9C%96%E6%9B%B8%E9%9B%86%E6%88%90/%E6%96%B9%E8%BC%BF%E5%BD%99%E7%B7%A8/%E8%81%B7%E6%96%B9%E5%85%B8/%E7%AC%AC1422%E5%8D%B7 * 廖善维. 2024. 《峤西诗钞》:民族文学交融的瑰宝. 中国民族报. https://www.gxu.edu.cn/info/1004/36046.htm {{BookCat}} tky8kctxa4idvsu9ydky8t9wfn12sah General Literary Chinese from Scratch/Who Deserves a Biography? 0 485181 4656698 2026-08-07T20:09:52Z Shira the Mogul 3560559 boilerplate with a banger 4656698 wikitext text/x-wiki Comment to be written. In past lessons, you have read biographies and histories written across many centuries. But who, exactly, decides what people deserve a biography, and how should a historian decide what kind of person somebody was? We shall look at Zhuang scholar Zheng Xianfu, who wrote an essay on this exact topic! ==Text== ===補學軒文集駢體卷一·史傳論·鄭獻甫=== <blockquote> 隨舉一事而爲傳,始於左氏;包舉一生而爲傳,始於史公。班、范以來,相承不易,宋、元而後,增出尤多。人表旣亡,家傳斯作。説者謂傳屬史官,不槪凡人;又謂傳屬後事,不及存者。攷之於古,異乎所聞。相如之傳,皆其自爲;鄧禹之傳,亦有所本。公卿如盧坦撰者李華,文學如子昂撰者藏用;節操如李紳撰者,亞之;貞烈如竇女撰者,杜牧。家傳何害,惟史傳當正耳。何者?後人史法,皆祖史公。然如剌客第廿六,列李斯之前,丐奴第五十,附李廣之後。東夷、西夷或裂爲四;循吏酷吏,必分爲二風尚特異,名目繁興。逮乎班、范繼作,或爲增删,或爲分并,自我作,故亦因時制宜也。而其中乃有不必襲而襲,又有不必增而增者。夫循吏猶之名臣,酷吏猶之姦臣耳。史公旁羅千古,橫覽一朝,循吏不過五人,皆非當代酷吏;錄至十人,乃多名卿。意謂風行之令,上以爲能;火烈之威,下必有甚,特以紀羅鉗吉網之肇端耳。後世不知其意,率備其名。董宣之殺主奴,賢令也,而范史以爲酷;王宏之發婦袖,惡政也,而晉史謂之良。顛倒是非,混淆賢否矣。若夫游俠侫幸,滑稽貨殖,此前世之偶見者也。黨錮、藩鎮,道學、流賊,此後世之迭出者也。而或慕漢廷之栖有,耻平原之獨無。南朝、北朝,并列恩倖,元史、明史亦出理學,則殊不知儒林之外有文苑,獨行之後有逸民,揆以正名,已爲多事。而况旣列孝義,又列節義,旣出死節,又出死事,如後之紛然雜見者乎?愚以爲某爲忠良,某爲姦佞,某有學行,某有文藝,其人果落落不凡耶?專傳可也;其人第碌碌無異耶,不傳可也。且傳之體,因一時而立一號,苦於無所附麗也;卽數人而分數名,便於有所出入也。學雖分而老、韓可以合;人雖衆,而孟、荀爲之宗。據事直書,隨人曲肖,誰毁誰譽,不爲成言,孰是孰非,自昭公論,其爲體不較潔,其爲情不較順乎?嗟乎!世皆尚名,事不求實。正統霸統以拘帝號,漢學宋學以判儒宗。遂使親弑共主之兇人,博極群書之文士,旁行圖上,亦列朱三;守缺場中,不收歐九。去者莫辨,來者難誣,愚故不禁感慨係之矣。 </blockquote> ==References== * 《補學軒文集駢體卷一·史傳論·鄭獻甫》Available at: https://www.shidianguji.com/zh/book/CADAL02026025/chapter/1lmo4orcftrmb 5tvde1enst2i10k59jwk9w21akubqp5 4656725 4656698 2026-08-08T02:24:22Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656725 wikitext text/x-wiki Comment to be written. In past lessons, you have read biographies and histories written across many centuries. But who, exactly, decides what people deserve a biography, and how should a historian decide what kind of person somebody was? We shall look at Zhuang scholar Zheng Xianfu, who wrote an essay on this exact topic! ==Text== ===補學軒文集駢體卷一·史傳論·鄭獻甫=== <blockquote> 隨舉一事而爲傳,始於左氏;包舉一生而爲傳,始於史公。班、范以來,相承不易,宋、元而後,增出尤多。人表旣亡,家傳斯作。説者謂傳屬史官,不槪凡人;又謂傳屬後事,不及存者。攷之於古,異乎所聞。相如之傳,皆其自爲;鄧禹之傳,亦有所本。公卿如盧坦撰者李華,文學如子昂撰者藏用;節操如李紳撰者,亞之;貞烈如竇女撰者,杜牧。家傳何害,惟史傳當正耳。何者?後人史法,皆祖史公。然如剌客第廿六,列李斯之前,丐奴第五十,附李廣之後。東夷、西夷或裂爲四;循吏酷吏,必分爲二風尚特異,名目繁興。逮乎班、范繼作,或爲增删,或爲分并,自我作,故亦因時制宜也。而其中乃有不必襲而襲,又有不必增而增者。夫循吏猶之名臣,酷吏猶之姦臣耳。史公旁羅千古,橫覽一朝,循吏不過五人,皆非當代酷吏;錄至十人,乃多名卿。意謂風行之令,上以爲能;火烈之威,下必有甚,特以紀羅鉗吉網之肇端耳。後世不知其意,率備其名。董宣之殺主奴,賢令也,而范史以爲酷;王宏之發婦袖,惡政也,而晉史謂之良。顛倒是非,混淆賢否矣。若夫游俠侫幸,滑稽貨殖,此前世之偶見者也。黨錮、藩鎮,道學、流賊,此後世之迭出者也。而或慕漢廷之栖有,耻平原之獨無。南朝、北朝,并列恩倖,元史、明史亦出理學,則殊不知儒林之外有文苑,獨行之後有逸民,揆以正名,已爲多事。而况旣列孝義,又列節義,旣出死節,又出死事,如後之紛然雜見者乎?愚以爲某爲忠良,某爲姦佞,某有學行,某有文藝,其人果落落不凡耶?專傳可也;其人第碌碌無異耶,不傳可也。且傳之體,因一時而立一號,苦於無所附麗也;卽數人而分數名,便於有所出入也。學雖分而老、韓可以合;人雖衆,而孟、荀爲之宗。據事直書,隨人曲肖,誰毁誰譽,不爲成言,孰是孰非,自昭公論,其爲體不較潔,其爲情不較順乎?嗟乎!世皆尚名,事不求實。正統霸統以拘帝號,漢學宋學以判儒宗。遂使親弑共主之兇人,博極群書之文士,旁行圖上,亦列朱三;守缺場中,不收歐九。去者莫辨,來者難誣,愚故不禁感慨係之矣。 </blockquote> ==References== * 《補學軒文集駢體卷一·史傳論·鄭獻甫》Available at: https://www.shidianguji.com/zh/book/CADAL02026025/chapter/1lmo4orcftrmb {{BookCat}} 1fgacoocplzno8ahbgb3wl171quwxux General Literary Chinese from Scratch/Disaster and Society with Wei Fenghua 0 485182 4656699 2026-08-07T20:25:06Z Shira the Mogul 3560559 boilerplate 4656699 wikitext text/x-wiki Comment to be written. ==Text== ===賓陽即目書感·韋豐華=== In 1865, when Wei went to Binyang 賓陽 for an examination, he encountered an area ravaged by warfare and drought. He then wrote this poem: <poem> 蒿目愁如織,鮮民不忍看。 啼飢悲載道,濟變思無端。 此輩雖爲命,伊誰正在官? 偏隅兵燹後,何計救凋殘。 </poem> ===廖江竹枝詞十七首·韋豐華,其十六=== <poem> 灰劫鄉村不盡凋,還將故事飾蕭條。 熙熙繪出升平象,中澤哀鴻恨亦消。 </poem> ===廖江竹枝詞十七首·韋豐華,其十七=== <poem> 紅粉平看一任人,江干分外有陽春。 蘭卿太守曾多事,諭禁花歌枉費神。 </poem> Why do you think Wei wrote this after what he saw and recorded before? ==References== * 《賓陽即目書感·韋豐華》in 《今是山房吟草》 * 〔清〕韋豐華,《韋豐華集》,《廣西歷代文獻集成》,廣西師範大學出版社,2012-12-01,2冊,ISBN 9787549527373. oe1ynj7k6v2082ytdhar0vxgws9iz4j 4656724 4656699 2026-08-08T02:24:18Z MathXplore 3097823 Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]] 4656724 wikitext text/x-wiki Comment to be written. ==Text== ===賓陽即目書感·韋豐華=== In 1865, when Wei went to Binyang 賓陽 for an examination, he encountered an area ravaged by warfare and drought. He then wrote this poem: <poem> 蒿目愁如織,鮮民不忍看。 啼飢悲載道,濟變思無端。 此輩雖爲命,伊誰正在官? 偏隅兵燹後,何計救凋殘。 </poem> ===廖江竹枝詞十七首·韋豐華,其十六=== <poem> 灰劫鄉村不盡凋,還將故事飾蕭條。 熙熙繪出升平象,中澤哀鴻恨亦消。 </poem> ===廖江竹枝詞十七首·韋豐華,其十七=== <poem> 紅粉平看一任人,江干分外有陽春。 蘭卿太守曾多事,諭禁花歌枉費神。 </poem> Why do you think Wei wrote this after what he saw and recorded before? ==References== * 《賓陽即目書感·韋豐華》in 《今是山房吟草》 * 〔清〕韋豐華,《韋豐華集》,《廣西歷代文獻集成》,廣西師範大學出版社,2012-12-01,2冊,ISBN 9787549527373. {{BookCat}} jwfkj39p0poo05ynj7knoj1szg9b1sn User:Jonas Grote/vector.css 2 485183 4656702 2026-08-07T20:33:41Z Itti 96004 Itti moved page [[User:Jonas Grote/vector.css]] to [[User:Emma Grote/vector.css]]: Automatically moved page while renaming the user "[[Special:CentralAuth/Jonas Grote|Jonas Grote]]" to "[[Special:CentralAuth/Emma Grote|Emma Grote]]" 4656702 css text/css /* #REDIRECT */@import url(//en.wikibooks.org/w/index.php?title=User:Emma_Grote/vector.css&action=raw&ctype=text/css); a28p1fxv5d68fi9vcnba28uugf63rf9 Scratch Virtual Machine/Blockdoc 0 485184 4656708 2026-08-07T21:19:25Z Some helpful person 3510188 Created page with "=={{subst:Anchor|{{{opcode|{{{1|wikiExample}}}_{{{2|exampleOpcode}}}|{{{2|exampleOpcode}}}}}}}} {{{3|example block}}}== <small>'''type:''' {{{4|command}}} block<br>'''inputs:''' {{{5|(none)}}}</small> {{{6|Does nothing.}}} {{{7|* Does nothing in style.}}} {{syntaxhighlight|lang=py| {{{opcode|{{{1|wikiExample}}}_{{{2|exampleOpcode}}}}}}({{{5|}}}): {{{8|(do nothing)}}} }}" 4656708 wikitext text/x-wiki ==<span class="anchor" id="{{{opcode|{{{1|wikiExample}}}_{{{2|exampleOpcode}}}|{{{2|exampleOpcode}}}}}}"></span> {{{3|example block}}}== <small>'''type:''' {{{4|command}}} block<br>'''inputs:''' {{{5|(none)}}}</small> {{{6|Does nothing.}}} {{{7|* Does nothing in style.}}} {{syntaxhighlight|lang=py| {{{opcode|{{{1|wikiExample}}}_{{{2|exampleOpcode}}}}}}({{{5|}}}): {{{8|(do nothing)}}} }} fmqirrqemelkhuamqywepqtyybwotoh 4656709 4656708 2026-08-07T21:19:45Z Some helpful person 3510188 4656709 wikitext text/x-wiki ==<span class="anchor" id="{{{opcode|{{{1|wikiExample}}}_{{{2|exampleOpcode}}}|{{{2|exampleOpcode}}}}}}"></span> {{{3|example block}}}== <small>'''type:''' {{{4|command}}} block<br>'''inputs:''' {{{5|(none)}}}</small> {{{6|Does nothing.}}} {{{7|* Does nothing in style.}}} {{syntaxhighlight|lang=py| {{{opcode|{{{1|wikiExample}}}_{{{2|exampleOpcode}}}}}}({{{5|}}}): {{{8|(do nothing)}}} }} <noinclude>{{BookCat}}</noinclude> 09o7rixvrmzri53gmbat0knxj9so08q 4656710 4656709 2026-08-07T21:20:57Z Some helpful person 3510188 4656710 wikitext text/x-wiki ==<span class="anchor" id="{{{opcode|{{{1|wikiExample}}}_{{{2|exampleOpcode}}}|{{{2|exampleOpcode}}}}}}"></span> {{{3|example block}}}== <small>'''opcode:''' <code>{{{opcode|{{{1|wikiExample}}}_{{{2|exampleOpcode}}}}}}</code><br>'''type:''' {{{4|command}}} block<br>'''inputs:''' {{{5|(none)}}}</small> {{{6|Does nothing.}}} {{{7|* Does nothing in style.}}} {{syntaxhighlight|lang=py| {{{opcode|{{{1|wikiExample}}}_{{{2|exampleOpcode}}}}}}({{{5|}}}): {{{8|(do nothing)}}} }} <noinclude>{{BookCat}}</noinclude> s14mrbqt9elozzvna9iscqmvkyuzrcb 4656727 4656710 2026-08-08T03:23:13Z Some helpful person 3510188 fix anchors 4656727 wikitext text/x-wiki ==<span class="anchor" id="{{{opcode|{{{1|wikiExample}}}_{{{2|exampleOpcode}}}}}}"></span><span class="anchor" id="{{{2|{{{opcode|exampleOpcode}}}}}}"></span> {{{3|example block}}}== <small>'''opcode:''' <code>{{{opcode|{{{1|wikiExample}}}_{{{2|exampleOpcode}}}}}}</code><br>'''type:''' {{{4|command}}} block<br>'''inputs:''' {{{5|(none)}}}</small> {{{6|Does nothing.}}} {{{7|* Does nothing in style.}}} {{syntaxhighlight|lang=py| {{{opcode|{{{1|wikiExample}}}_{{{2|exampleOpcode}}}}}}({{{5|}}}): {{{8|(do nothing)}}} }} <noinclude>{{BookCat}}</noinclude> 18uorc0pytrlyrqa0ghwf4ukw0r4oae Wikibooks:Reading room/Archives/2026/June 4 485185 4656735 2026-08-08T08:10:35Z ArchiverBot 1227662 Bot: Archiving 1 thread from [[Wikibooks:Reading room/General]] 4656735 wikitext text/x-wiki {{talk archive}} == Template:Printable testing == Is there any way to use Template:Printable so that it creates a printable version of a ''different'' page? I've been wanting to see what it looks like without having to create a subpage. <span style="color:#FF0000">[[User:User97104|User]]</span><span style="color:#FF0000">[[User talk:User97104|97104]] </span><span style="color:#FF0000">[[Special:Contributions/User97104|(fixes)]]</span> 23:59, 8 June 2026 (UTC) tmmuvrc4xvtbz2gtwrfzuif3yzvrcnz User:Sisterian/sandbox 2 485186 4656738 2026-08-08T08:29:36Z Sisterian 3123918 Created a Wikibooks userpage. 4656738 wikitext text/x-wiki '''Sisterian''' as known on Wikipedia is a Ugandan social entrepreneur and website designer based in Kira Municipality, Uganda. He has a passion for social enterpreneurship and community development in health and education. h7gkvo079chfvaxopmjlb7haz6ewsnv