Units
Translation components API.
See the Weblate's Web API documentation for detailed description of the API.
GET /api/translations/freebsd-doc/boooks_arch-handbook/fa/units/?format=api&page=3
https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/units/?format=api&page=4", "previous": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/units/?format=api&page=2", "results": [ { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "So far we have gone through the following sequence:" ], "previous_source": "", "target": [ "" ], "id_hash": 8398050994771347565, "content_hash": 8398050994771347565, "location": "book.translate.xml:952", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 103, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 9, "source_unit": "https://translate-dev.freebsd.org/api/units/102249/?format=api", "priority": 100, "id": 201078, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=f48bdee28cf6486d", "url": "https://translate-dev.freebsd.org/api/units/201078/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:28.975432Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "The <acronym>BIOS</acronym> did some early hardware initialization, including the <acronym>POST</acronym>. The <acronym>MBR</acronym> (<filename>boot0</filename>) was loaded from absolute disk sector one to address <literal>0x7c00</literal>. Execution control was passed to that location." ], "previous_source": "", "target": [ "" ], "id_hash": 370855164581522016, "content_hash": 370855164581522016, "location": "book.translate.xml:956", "context": "", "note": "(itstool) path: listitem/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 104, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 30, "source_unit": "https://translate-dev.freebsd.org/api/units/102250/?format=api", "priority": 100, "id": 201079, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=85258aceac002a60", "url": "https://translate-dev.freebsd.org/api/units/201079/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:28.986272Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "<filename>boot0</filename> relocated itself to the location it was linked to execute (<literal>0x600</literal>), followed by a jump to continue execution at the appropriate place. Finally, <filename>boot0</filename> loaded the first disk sector from the FreeBSD slice to address <literal>0x7c00</literal>. Execution control was passed to that location." ], "previous_source": "", "target": [ "" ], "id_hash": -3344737101880628681, "content_hash": -3344737101880628681, "location": "book.translate.xml:965", "context": "", "note": "(itstool) path: listitem/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 105, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 44, "source_unit": "https://translate-dev.freebsd.org/api/units/102251/?format=api", "priority": 100, "id": 201080, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=51951b53b755ea37", "url": "https://translate-dev.freebsd.org/api/units/201080/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:28.998732Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "There is a file <filename>/boot/boot1</filename>, but it is not the written to the beginning of the FreeBSD slice. Instead, it is concatenated with <filename>boot2</filename> to form <filename>boot</filename>, which <emphasis>is</emphasis> written to the beginning of the FreeBSD slice and read at boot time." ], "previous_source": "", "target": [ "" ], "id_hash": 6293098321505140683, "content_hash": 6293098321505140683, "location": "book.translate.xml:989", "context": "", "note": "(itstool) path: footnote/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 106, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 42, "source_unit": "https://translate-dev.freebsd.org/api/units/102252/?format=api", "priority": 100, "id": 201081, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=d7559394c5ebbfcb", "url": "https://translate-dev.freebsd.org/api/units/201081/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.007776Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "<filename>boot1</filename> is the next step in the boot-loading sequence. It is the first of three boot stages. Note that we have been dealing exclusively with disk sectors. Indeed, the <acronym>BIOS</acronym> loads the absolute first sector, while <filename>boot0</filename> loads the first sector of the FreeBSD slice. Both loads are to address <literal>0x7c00</literal>. We can conceptually think of these disk sectors as containing the files <filename>boot0</filename> and <filename>boot1</filename>, respectively, but in reality this is not entirely true for <filename>boot1</filename>. Strictly speaking, unlike <filename>boot0</filename>, <filename>boot1</filename> is not part of the boot blocks <_:footnote-1/>. Instead, a single, full-blown file, <filename>boot</filename> (<filename>/boot/boot</filename>), is what ultimately is written to disk. This file is a combination of <filename>boot1</filename>, <filename>boot2</filename> and the <literal>Boot Extender</literal> (or <acronym>BTX</acronym>). This single file is greater in size than a single sector (greater than 512 bytes). Fortunately, <filename>boot1</filename> occupies <emphasis>exactly</emphasis> the first 512 bytes of this single file, so when <filename>boot0</filename> loads the first sector of the FreeBSD slice (512 bytes), it is actually loading <filename>boot1</filename> and transferring control to it." ], "previous_source": "", "target": [ "" ], "id_hash": -8377209143269380500, "content_hash": -8377209143269380500, "location": "book.translate.xml:975", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 107, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 168, "source_unit": "https://translate-dev.freebsd.org/api/units/102253/?format=api", "priority": 100, "id": 201082, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=0bbe2cab26462e6c", "url": "https://translate-dev.freebsd.org/api/units/201082/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.018453Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "The main task of <filename>boot1</filename> is to load the next boot stage. This next stage is somewhat more complex. It is composed of a server called the <quote>Boot Extender</quote>, or <acronym>BTX</acronym>, and a client, called <filename>boot2</filename>. As we will see, the last boot stage, <filename>loader</filename>, is also a client of the <acronym>BTX</acronym> server." ], "previous_source": "", "target": [ "" ], "id_hash": 8487644768197878083, "content_hash": 8487644768197878083, "location": "book.translate.xml:1009", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 108, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 53, "source_unit": "https://translate-dev.freebsd.org/api/units/102254/?format=api", "priority": 100, "id": 201083, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=f5ca2bf27c232143", "url": "https://translate-dev.freebsd.org/api/units/201083/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.027226Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Let us now look in detail at what exactly is done by <filename>boot1</filename>, starting like we did for <filename>boot0</filename>, at its entry point:" ], "previous_source": "", "target": [ "" ], "id_hash": -9110961298920602387, "content_hash": -9110961298920602387, "location": "book.translate.xml:1017", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 109, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 23, "source_unit": "https://translate-dev.freebsd.org/api/units/102255/?format=api", "priority": 100, "id": 201084, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=018f5cf8778184ed", "url": "https://translate-dev.freebsd.org/api/units/201084/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.037682Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "<filename>sys/boot/i386/boot2/boot1.S</filename>" ], "previous_source": "", "target": [ "" ], "id_hash": 4963965183127907205, "content_hash": 4963965183127907205, "location": "book.translate.xml:1022, book.translate.xml:1033, book.translate.xml:1073, book.translate.xml:1118, book.translate.xml:1153, book.translate.xml:1180, book.translate.xml:1209, book.translate.xml:1316", "context": "", "note": "(itstool) path: figure/title", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 110, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/102256/?format=api", "priority": 100, "id": 201085, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=c4e38c08a9beeb85", "url": "https://translate-dev.freebsd.org/api/units/201085/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.047063Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "start:\n\tjmp main" ], "previous_source": "", "target": [ "" ], "id_hash": -2933928848880139714, "content_hash": -2933928848880139714, "location": "book.translate.xml:1024", "context": "", "note": "(itstool) path: figure/programlisting", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 111, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 3, "source_unit": "https://translate-dev.freebsd.org/api/units/102257/?format=api", "priority": 100, "id": 201086, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=57489741ae3a823e", "url": "https://translate-dev.freebsd.org/api/units/201086/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.056802Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "The entry point at <literal>start</literal> simply jumps past a special data area to the label <literal>main</literal>, which in turn looks like this:" ], "previous_source": "", "target": [ "" ], "id_hash": 4507621407725888329, "content_hash": 4507621407725888329, "location": "book.translate.xml:1028", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 112, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 22, "source_unit": "https://translate-dev.freebsd.org/api/units/102258/?format=api", "priority": 100, "id": 201087, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=be8e49c9b572a349", "url": "https://translate-dev.freebsd.org/api/units/201087/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.082774Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "main:\n cld\t\t\t# String ops inc\n xor %cx,%cx\t\t# Zero\n mov %cx,%es\t\t# Address\n mov %cx,%ds\t\t# data\n mov %cx,%ss\t\t# Set up\n mov $start,%sp\t\t# stack\n mov %sp,%si\t\t# Source\n mov $0x700,%di\t\t# Destination\n incb %ch\t\t\t# Word count\n rep\t\t\t# Copy\n movsw\t\t\t# code" ], "previous_source": "", "target": [ "" ], "id_hash": 1612367318754928793, "content_hash": 1612367318754928793, "location": "book.translate.xml:1035", "context": "", "note": "(itstool) path: figure/programlisting", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 113, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 46, "source_unit": "https://translate-dev.freebsd.org/api/units/102259/?format=api", "priority": 100, "id": 201088, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=96604788a1d62899", "url": "https://translate-dev.freebsd.org/api/units/201088/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.228659Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Just like <filename>boot0</filename>, this code relocates <filename>boot1</filename>, this time to memory address <literal>0x700</literal>. However, unlike <filename>boot0</filename>, it does not jump there. <filename>boot1</filename> is linked to execute at address <literal>0x7c00</literal>, effectively where it was loaded in the first place. The reason for this relocation will be discussed shortly." ], "previous_source": "", "target": [ "" ], "id_hash": -8047247271417493917, "content_hash": -8047247271417493917, "location": "book.translate.xml:1049", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 114, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 47, "source_unit": "https://translate-dev.freebsd.org/api/units/102260/?format=api", "priority": 100, "id": 201089, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=10526f3e276dc663", "url": "https://translate-dev.freebsd.org/api/units/201089/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.237536Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Actually we did pass a pointer to the slice entry in register <literal>%si</literal>. However, <filename>boot1</filename> does not assume that it was loaded by <filename>boot0</filename> (perhaps some other <acronym>MBR</acronym> loaded it, and did not pass this information), so it assumes nothing." ], "previous_source": "", "target": [ "" ], "id_hash": -6940953073087411096, "content_hash": -6940953073087411096, "location": "book.translate.xml:1062", "context": "", "note": "(itstool) path: footnote/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 115, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 40, "source_unit": "https://translate-dev.freebsd.org/api/units/102261/?format=api", "priority": 100, "id": 201090, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=1facc7f46bf80c68", "url": "https://translate-dev.freebsd.org/api/units/201090/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.246974Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Next comes a loop that looks for the FreeBSD slice. Although <filename>boot0</filename> loaded <filename>boot1</filename> from the FreeBSD slice, no information was passed to it about this <_:footnote-1/>, so <filename>boot1</filename> must rescan the partition table to find where the FreeBSD slice starts. Therefore it rereads the <acronym>MBR</acronym>:" ], "previous_source": "", "target": [ "" ], "id_hash": -5952894380545595670, "content_hash": -5952894380545595670, "location": "book.translate.xml:1058", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 116, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 46, "source_unit": "https://translate-dev.freebsd.org/api/units/102262/?format=api", "priority": 100, "id": 201091, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=2d631219c62926ea", "url": "https://translate-dev.freebsd.org/api/units/201091/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.256712Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ " mov $part4,%si\t\t# Partition\n cmpb $0x80,%dl\t\t# Hard drive?\n jb main.4\t\t\t# No\n movb $0x1,%dh\t\t# Block count\n callw nread\t\t# Read MBR" ], "previous_source": "", "target": [ "" ], "id_hash": 4228258536963944823, "content_hash": 4228258536963944823, "location": "book.translate.xml:1075", "context": "", "note": "(itstool) path: figure/programlisting", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 117, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 23, "source_unit": "https://translate-dev.freebsd.org/api/units/102263/?format=api", "priority": 100, "id": 201092, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=baadcabcb23fb177", "url": "https://translate-dev.freebsd.org/api/units/201092/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.267273Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "In the code above, register <literal>%dl</literal> maintains information about the boot device. This is passed on by the <acronym>BIOS</acronym> and preserved by the <acronym>MBR</acronym>. Numbers <literal>0x80</literal> and greater tells us that we are dealing with a hard drive, so a call is made to <literal>nread</literal>, where the <acronym>MBR</acronym> is read. Arguments to <literal>nread</literal> are passed through <literal>%si</literal> and <literal>%dh</literal>. The memory address at label <literal>part4</literal> is copied to <literal>%si</literal>. This memory address holds a <quote>fake partition</quote> to be used by <literal>nread</literal>. The following is the data in the fake partition:" ], "previous_source": "", "target": [ "" ], "id_hash": -1512622224495492756, "content_hash": -1512622224495492756, "location": "book.translate.xml:1082", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 118, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 90, "source_unit": "https://translate-dev.freebsd.org/api/units/102264/?format=api", "priority": 100, "id": 201093, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=6b021619dd95c16c", "url": "https://translate-dev.freebsd.org/api/units/201093/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.276767Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "<filename>sys/boot/i386/boot2/Makefile</filename>" ], "previous_source": "", "target": [ "" ], "id_hash": 5628099223572385040, "content_hash": 5628099223572385040, "location": "book.translate.xml:1098, book.translate.xml:1392, book.translate.xml:1405, book.translate.xml:1437, book.translate.xml:1478", "context": "", "note": "(itstool) path: figure/title", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 119, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 1, "source_unit": "https://translate-dev.freebsd.org/api/units/102265/?format=api", "priority": 100, "id": 201094, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=ce1b066cc5af0d10", "url": "https://translate-dev.freebsd.org/api/units/201094/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.285792Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ " part4:\n\t.byte 0x80, 0x00, 0x01, 0x00\n\t.byte 0xa5, 0xfe, 0xff, 0xff\n\t.byte 0x00, 0x00, 0x00, 0x00\n\t.byte 0x50, 0xc3, 0x00, 0x00" ], "previous_source": "", "target": [ "" ], "id_hash": 6840952387173805943, "content_hash": 6840952387173805943, "location": "book.translate.xml:1100", "context": "", "note": "(itstool) path: figure/programlisting", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 120, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 21, "source_unit": "https://translate-dev.freebsd.org/api/units/102266/?format=api", "priority": 100, "id": 201095, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=deeff1f382daef77", "url": "https://translate-dev.freebsd.org/api/units/201095/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.294780Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "In particular, the <acronym>LBA</acronym> for this fake partition is hardcoded to zero. This is used as an argument to the <acronym>BIOS</acronym> for reading absolute sector one from the hard drive. Alternatively, CHS addressing could be used. In this case, the fake partition holds cylinder 0, head 0 and sector 1, which is equivalent to absolute sector one." ], "previous_source": "", "target": [ "" ], "id_hash": -1015605610338119619, "content_hash": -1015605610338119619, "location": "book.translate.xml:1107", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 121, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 57, "source_unit": "https://translate-dev.freebsd.org/api/units/102267/?format=api", "priority": 100, "id": 201096, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=71e7d8140be7103d", "url": "https://translate-dev.freebsd.org/api/units/201096/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.304027Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Let us now proceed to take a look at <literal>nread</literal>:" ], "previous_source": "", "target": [ "" ], "id_hash": -264710834897695218, "content_hash": -264710834897695218, "location": "book.translate.xml:1114", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 122, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 10, "source_unit": "https://translate-dev.freebsd.org/api/units/102268/?format=api", "priority": 100, "id": 201097, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=7c538ee5edb9ce0e", "url": "https://translate-dev.freebsd.org/api/units/201097/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.314359Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "nread:\n mov $0x8c00,%bx\t\t# Transfer buffer\n mov 0x8(%si),%ax\t\t# Get\n mov 0xa(%si),%cx\t\t# LBA\n push %cs\t\t\t# Read from\n callw xread.1\t\t# disk\n jnc return\t\t# If success, return" ], "previous_source": "", "target": [ "" ], "id_hash": -68044345277244283, "content_hash": -68044345277244283, "location": "book.translate.xml:1120", "context": "", "note": "(itstool) path: figure/programlisting", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 123, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 29, "source_unit": "https://translate-dev.freebsd.org/api/units/102269/?format=api", "priority": 100, "id": 201098, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=7f0e42074ac69c85", "url": "https://translate-dev.freebsd.org/api/units/201098/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.437864Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "In the context of 16-bit real mode, a word is 2 bytes." ], "previous_source": "", "target": [ "" ], "id_hash": 5525829334199655490, "content_hash": 5525829334199655490, "location": "book.translate.xml:1132", "context": "", "note": "(itstool) path: footnote/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 124, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 12, "source_unit": "https://translate-dev.freebsd.org/api/units/102270/?format=api", "priority": 100, "id": 201099, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=ccafb0809a675c42", "url": "https://translate-dev.freebsd.org/api/units/201099/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.446846Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Recall that <literal>%si</literal> points to the fake partition. The word <_:footnote-1/> at offset <literal>0x8</literal> is copied to register <literal>%ax</literal> and word at offset <literal>0xa</literal> to <literal>%cx</literal>. They are interpreted by the <acronym>BIOS</acronym> as the lower 4-byte value denoting the LBA to be read (the upper four bytes are assumed to be zero). Register <literal>%bx</literal> holds the memory address where the <acronym>MBR</acronym> will be loaded. The instruction pushing <literal>%cs</literal> onto the stack is very interesting. In this context, it accomplishes nothing. However, as we will see shortly, <filename>boot2</filename>, in conjunction with the <acronym>BTX</acronym> server, also uses <literal>xread.1</literal>. This mechanism will be discussed in the next section." ], "previous_source": "", "target": [ "" ], "id_hash": 1503455988164528453, "content_hash": 1503455988164528453, "location": "book.translate.xml:1129", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 125, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 105, "source_unit": "https://translate-dev.freebsd.org/api/units/102271/?format=api", "priority": 100, "id": 201100, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=94dd59416dfb0945", "url": "https://translate-dev.freebsd.org/api/units/201100/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.456308Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "The code at <literal>xread.1</literal> further calls the <literal>read</literal> function, which actually calls the <acronym>BIOS</acronym> asking for the disk sector:" ], "previous_source": "", "target": [ "" ], "id_hash": -5437444287592262294, "content_hash": -5437444287592262294, "location": "book.translate.xml:1148", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 126, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 19, "source_unit": "https://translate-dev.freebsd.org/api/units/102272/?format=api", "priority": 100, "id": 201101, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=348a513ab016156a", "url": "https://translate-dev.freebsd.org/api/units/201101/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.465824Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "xread.1:\n\tpushl $0x0\t\t# absolute\n\tpush %cx\t\t# block\n\tpush %ax\t\t# number\n\tpush %es\t\t# Address of\n\tpush %bx\t\t# transfer buffer\n\txor %ax,%ax\t\t# Number of\n\tmovb %dh,%al\t\t# blocks to\n\tpush %ax\t\t# transfer\n\tpush $0x10\t\t# Size of packet\n\tmov %sp,%bp\t\t# Packet pointer\n\tcallw read\t\t# Read from disk\n\tlea 0x10(%bp),%sp\t# Clear stack\n\tlret\t\t\t# To far caller" ], "previous_source": "", "target": [ "" ], "id_hash": 6449847625678471492, "content_hash": 6449847625678471492, "location": "book.translate.xml:1155", "context": "", "note": "(itstool) path: figure/programlisting", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 127, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 64, "source_unit": "https://translate-dev.freebsd.org/api/units/102273/?format=api", "priority": 100, "id": 201102, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=d982763e27f64144", "url": "https://translate-dev.freebsd.org/api/units/201102/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.482044Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Note the long return instruction at the end of this block. This instruction pops out the <literal>%cs</literal> register pushed by <literal>nread</literal>, and returns. Finally, <literal>nread</literal> also returns." ], "previous_source": "", "target": [ "" ], "id_hash": 3376851401700969942, "content_hash": 3376851401700969942, "location": "book.translate.xml:1171", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 128, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 27, "source_unit": "https://translate-dev.freebsd.org/api/units/102274/?format=api", "priority": 100, "id": 201103, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=aedcfc7561aa8dd6", "url": "https://translate-dev.freebsd.org/api/units/201103/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.491866Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "With the <acronym>MBR</acronym> loaded to memory, the actual loop for searching the FreeBSD slice begins:" ], "previous_source": "", "target": [ "" ], "id_hash": -5635937038707746169, "content_hash": -5635937038707746169, "location": "book.translate.xml:1176", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 129, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 15, "source_unit": "https://translate-dev.freebsd.org/api/units/102275/?format=api", "priority": 100, "id": 201104, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=31c9211faf5b9a87", "url": "https://translate-dev.freebsd.org/api/units/201104/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.502717Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "\tmov $0x1,%cx\t\t # Two passes\nmain.1:\n\tmov $0x8dbe,%si # Partition table\n\tmovb $0x1,%dh\t\t # Partition\nmain.2:\n\tcmpb $0xa5,0x4(%si)\t # Our partition type?\n\tjne main.3\t\t # No\n\tjcxz main.5\t\t # If second pass\n\ttestb $0x80,(%si)\t # Active?\n\tjnz main.5\t\t # Yes\nmain.3:\n\tadd $0x10,%si\t\t # Next entry\n\tincb %dh\t\t # Partition\n\tcmpb $0x5,%dh\t\t # In table?\n\tjb main.2\t\t # Yes\n\tdec %cx\t\t\t # Do two\n\tjcxz main.1\t\t # passes" ], "previous_source": "", "target": [ "" ], "id_hash": -3022798808838760924, "content_hash": -3022798808838760924, "location": "book.translate.xml:1182", "context": "", "note": "(itstool) path: figure/programlisting", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 130, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 68, "source_unit": "https://translate-dev.freebsd.org/api/units/102276/?format=api", "priority": 100, "id": 201105, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=560cdc7fb3b11624", "url": "https://translate-dev.freebsd.org/api/units/201105/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.513039Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "If a FreeBSD slice is identified, execution continues at <literal>main.5</literal>. Note that when a FreeBSD slice is found <literal>%si</literal> points to the appropriate entry in the partition table, and <literal>%dh</literal> holds the partition number. We assume that a FreeBSD slice is found, so we continue execution at <literal>main.5</literal>:" ], "previous_source": "", "target": [ "" ], "id_hash": -3997199934808984242, "content_hash": -3997199934808984242, "location": "book.translate.xml:1201", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 131, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 48, "source_unit": "https://translate-dev.freebsd.org/api/units/102277/?format=api", "priority": 100, "id": 201106, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=488717d65d7ef54e", "url": "https://translate-dev.freebsd.org/api/units/201106/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.523393Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "main.5:\n\tmov %dx,0x900\t\t\t # Save args\n\tmovb $0x10,%dh\t\t\t # Sector count\n\tcallw nread\t\t\t # Read disk\n\tmov $0x9000,%bx\t\t\t # BTX\n\tmov 0xa(%bx),%si\t\t # Get BTX length and set\n\tadd %bx,%si\t\t\t # %si to start of boot2.bin\n\tmov $0xc000,%di\t\t\t # Client page 2\n\tmov $0xa200,%cx\t\t\t # Byte\n\tsub %si,%cx\t\t\t # count\n\trep\t\t\t\t # Relocate\n\tmovsb\t\t\t\t # client" ], "previous_source": "", "target": [ "" ], "id_hash": 5459108180280240374, "content_hash": 5459108180280240374, "location": "book.translate.xml:1211", "context": "", "note": "(itstool) path: figure/programlisting", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 132, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 56, "source_unit": "https://translate-dev.freebsd.org/api/units/102278/?format=api", "priority": 100, "id": 201107, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=cbc2a5f7640868f6", "url": "https://translate-dev.freebsd.org/api/units/201107/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.533638Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Recall that at this point, register <literal>%si</literal> points to the FreeBSD slice entry in the <acronym>MBR</acronym> partition table, so a call to <literal>nread</literal> will effectively read sectors at the beginning of this partition. The argument passed on register <literal>%dh</literal> tells <literal>nread</literal> to read 16 disk sectors. Recall that the first 512 bytes, or the first sector of the FreeBSD slice, coincides with the <filename>boot1</filename> program. Also recall that the file written to the beginning of the FreeBSD slice is not <filename>/boot/boot1</filename>, but <filename>/boot/boot</filename>. Let us look at the size of these files in the filesystem:" ], "previous_source": "", "target": [ "" ], "id_hash": -7572189472946639742, "content_hash": -7572189472946639742, "location": "book.translate.xml:1225", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 133, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 95, "source_unit": "https://translate-dev.freebsd.org/api/units/102279/?format=api", "priority": 100, "id": 201108, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=16ea2dcb25102c82", "url": "https://translate-dev.freebsd.org/api/units/201108/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.543346Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "-r--r--r-- 1 root wheel 512B Jan 8 00:15 /boot/boot0\n-r--r--r-- 1 root wheel 512B Jan 8 00:15 /boot/boot1\n-r--r--r-- 1 root wheel 7.5K Jan 8 00:15 /boot/boot2\n-r--r--r-- 1 root wheel 8.0K Jan 8 00:15 /boot/boot" ], "previous_source": "", "target": [ "" ], "id_hash": 9129360777712744707, "content_hash": 9129360777712744707, "location": "book.translate.xml:1238", "context": "", "note": "(itstool) path: sect1/screen\n(itstool) id: book.translate.xml#boot-boot1-filesize", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 134, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 36, "source_unit": "https://translate-dev.freebsd.org/api/units/102280/?format=api", "priority": 100, "id": 201109, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=feb2014205f3b903", "url": "https://translate-dev.freebsd.org/api/units/201109/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.552560Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Both <filename>boot0</filename> and <filename>boot1</filename> are 512 bytes each, so they fit <emphasis>exactly</emphasis> in one disk sector. <filename>boot2</filename> is much bigger, holding both the <acronym>BTX</acronym> server and the <filename>boot2</filename> client. Finally, a file called simply <filename>boot</filename> is 512 bytes larger than <filename>boot2</filename>. This file is a concatenation of <filename>boot1</filename> and <filename>boot2</filename>. As already noted, <filename>boot0</filename> is the file written to the absolute first disk sector (the <acronym>MBR</acronym>), and <filename>boot</filename> is the file written to the first sector of the FreeBSD slice; <filename>boot1</filename> and <filename>boot2</filename> are <emphasis>not</emphasis> written to disk. The command used to concatenate <filename>boot1</filename> and <filename>boot2</filename> into a single <filename>boot</filename> is merely <command>cat boot1 boot2 > boot</command>." ], "previous_source": "", "target": [ "" ], "id_hash": -6209804904800331581, "content_hash": -6209804904800331581, "location": "book.translate.xml:1243", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 135, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 107, "source_unit": "https://translate-dev.freebsd.org/api/units/102281/?format=api", "priority": 100, "id": 201110, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=29d257570ce5d8c3", "url": "https://translate-dev.freebsd.org/api/units/201110/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.564911Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "512*16=8192 bytes, exactly the size of <filename>boot</filename>" ], "previous_source": "", "target": [ "" ], "id_hash": 2013120846602254977, "content_hash": 2013120846602254977, "location": "book.translate.xml:1271", "context": "", "note": "(itstool) path: footnote/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 136, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 7, "source_unit": "https://translate-dev.freebsd.org/api/units/102282/?format=api", "priority": 100, "id": 201111, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=9bf00abe77a93a81", "url": "https://translate-dev.freebsd.org/api/units/201111/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.574179Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Historically known as <quote>disklabel</quote>. If you ever wondered where FreeBSD stored this information, it is in this region. See <citerefentry><refentrytitle>bsdlabel</refentrytitle><manvolnum>8</manvolnum></citerefentry>" ], "previous_source": "", "target": [ "" ], "id_hash": 6717484711425328192, "content_hash": 6717484711425328192, "location": "book.translate.xml:1287", "context": "", "note": "(itstool) path: footnote/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 138, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 20, "source_unit": "https://translate-dev.freebsd.org/api/units/102284/?format=api", "priority": 100, "id": 201113, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=dd394cc1189fc440", "url": "https://translate-dev.freebsd.org/api/units/201113/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.591705Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Recall that <literal>nread</literal> uses memory address <literal>0x8c00</literal> as the transfer buffer to hold the sectors read. This address is conveniently chosen. Indeed, because <filename>boot1</filename> belongs to the first 512 bytes, it ends up in the address range <literal>0x8c00</literal>-<literal>0x8dff</literal>. The 512 bytes that follows (range <literal>0x8e00</literal>-<literal>0x8fff</literal>) is used to store the <emphasis>bsdlabel</emphasis> <_:footnote-1/>." ], "previous_source": "", "target": [ "" ], "id_hash": -2341582302059471054, "content_hash": -2341582302059471054, "location": "book.translate.xml:1277", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 139, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 52, "source_unit": "https://translate-dev.freebsd.org/api/units/102285/?format=api", "priority": 100, "id": 201114, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=5f81074d71675f32", "url": "https://translate-dev.freebsd.org/api/units/201114/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.601597Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Starting at address <literal>0x9000</literal> is the beginning of the <acronym>BTX</acronym> server, and immediately following is the <filename>boot2</filename> client. The <acronym>BTX</acronym> server acts as a kernel, and executes in protected mode in the most privileged level. In contrast, the <acronym>BTX</acronym> clients (<filename>boot2</filename>, for example), execute in user mode. We will see how this is accomplished in the next section. The code after the call to <literal>nread</literal> locates the beginning of <filename>boot2</filename> in the memory buffer, and copies it to memory address <literal>0xc000</literal>. This is because the <acronym>BTX</acronym> server arranges <filename>boot2</filename> to execute in a segment starting at <literal>0xa000</literal>. We explore this in detail in the following section." ], "previous_source": "", "target": [ "" ], "id_hash": -3867806288044379565, "content_hash": -3867806288044379565, "location": "book.translate.xml:1291", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 140, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 106, "source_unit": "https://translate-dev.freebsd.org/api/units/102286/?format=api", "priority": 100, "id": 201115, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=4a52caac6d17b253", "url": "https://translate-dev.freebsd.org/api/units/201115/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.610709Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "This is necessary for legacy reasons. Interested readers should see <link xlink:href=\"http://en.wikipedia.org/wiki/A20_line\"/>." ], "previous_source": "", "target": [ "" ], "id_hash": -8090371070958480627, "content_hash": -8090371070958480627, "location": "book.translate.xml:1310", "context": "", "note": "(itstool) path: footnote/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 141, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 12, "source_unit": "https://translate-dev.freebsd.org/api/units/102287/?format=api", "priority": 100, "id": 201116, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=0fb93a60266c530d", "url": "https://translate-dev.freebsd.org/api/units/201116/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.619857Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "The last code block of <filename>boot1</filename> enables access to memory above 1MB <_:footnote-1/> and concludes with a jump to the starting point of the <acronym>BTX</acronym> server:" ], "previous_source": "", "target": [ "" ], "id_hash": 1690622384688862773, "content_hash": 1690622384688862773, "location": "book.translate.xml:1307", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 142, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 26, "source_unit": "https://translate-dev.freebsd.org/api/units/102288/?format=api", "priority": 100, "id": 201117, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=97764c1a00b41635", "url": "https://translate-dev.freebsd.org/api/units/201117/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.629964Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "seta20:\n\tcli\t\t\t# Disable interrupts\nseta20.1:\n\tdec %cx\t\t\t# Timeout?\n\tjz seta20.3\t\t# Yes\n\n\tinb $0x64,%al\t\t# Get status\n\ttestb $0x2,%al\t\t# Busy?\n\tjnz seta20.1\t\t# Yes\n\tmovb $0xd1,%al\t\t# Command: Write\n\toutb %al,$0x64\t\t# output port\nseta20.2:\n\tinb $0x64,%al\t\t# Get status\n\ttestb $0x2,%al\t\t# Busy?\n\tjnz seta20.2\t\t# Yes\n\tmovb $0xdf,%al\t\t# Enable\n\toutb %al,$0x60\t\t# A20\nseta20.3:\n\tsti\t\t\t# Enable interrupts\n\tjmp 0x9010\t\t# Start BTX" ], "previous_source": "", "target": [ "" ], "id_hash": -4033457430559943354, "content_hash": -4033457430559943354, "location": "book.translate.xml:1318", "context": "", "note": "(itstool) path: figure/programlisting", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 143, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 69, "source_unit": "https://translate-dev.freebsd.org/api/units/102289/?format=api", "priority": 100, "id": 201118, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=480647d64ad09546", "url": "https://translate-dev.freebsd.org/api/units/201118/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.640079Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Note that right before the jump, interrupts are enabled." ], "previous_source": "", "target": [ "" ], "id_hash": 8456204836039797873, "content_hash": 8456204836039797873, "location": "book.translate.xml:1340", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 144, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 9, "source_unit": "https://translate-dev.freebsd.org/api/units/102290/?format=api", "priority": 100, "id": 201119, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=f55a797ed817ac71", "url": "https://translate-dev.freebsd.org/api/units/201119/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.648862Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "The <acronym>BTX</acronym> Server" ], "previous_source": "", "target": [ "" ], "id_hash": -4118145936343689782, "content_hash": -4118145936343689782, "location": "book.translate.xml:1345", "context": "", "note": "(itstool) path: sect1/title", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 145, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 3, "source_unit": "https://translate-dev.freebsd.org/api/units/102291/?format=api", "priority": 100, "id": 201120, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=46d96816fb0415ca", "url": "https://translate-dev.freebsd.org/api/units/201120/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.660072Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Next in our boot sequence is the <acronym>BTX</acronym> Server. Let us quickly remember how we got here:" ], "previous_source": "", "target": [ "" ], "id_hash": -2868559032408011257, "content_hash": -2868559032408011257, "location": "book.translate.xml:1347", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 146, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 17, "source_unit": "https://translate-dev.freebsd.org/api/units/102292/?format=api", "priority": 100, "id": 201121, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=5830d4c220150e07", "url": "https://translate-dev.freebsd.org/api/units/201121/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.669068Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "The <acronym>BIOS</acronym> loads the absolute sector one (the <acronym>MBR</acronym>, or <filename>boot0</filename>), to address <literal>0x7c00</literal> and jumps there." ], "previous_source": "", "target": [ "" ], "id_hash": -1410755505741370095, "content_hash": -1410755505741370095, "location": "book.translate.xml:1353", "context": "", "note": "(itstool) path: listitem/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 147, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 17, "source_unit": "https://translate-dev.freebsd.org/api/units/102293/?format=api", "priority": 100, "id": 201122, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=6c6bfd578f5bed11", "url": "https://translate-dev.freebsd.org/api/units/201122/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.677984Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "<filename>boot0</filename> relocates itself to <literal>0x600</literal>, the address it was linked to execute, and jumps over there. It then reads the first sector of the FreeBSD slice (which consists of <filename>boot1</filename>) into address <literal>0x7c00</literal> and jumps over there." ], "previous_source": "", "target": [ "" ], "id_hash": -6790554406644967410, "content_hash": -6790554406644967410, "location": "book.translate.xml:1360", "context": "", "note": "(itstool) path: listitem/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 148, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 37, "source_unit": "https://translate-dev.freebsd.org/api/units/102294/?format=api", "priority": 100, "id": 201123, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=21c31abebbf6980e", "url": "https://translate-dev.freebsd.org/api/units/201123/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.686896Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "<filename>boot1</filename> loads the first 16 sectors of the FreeBSD slice into address <literal>0x8c00</literal>. This 16 sectors, or 8192 bytes, is the whole file <filename>boot</filename>. The file is a concatenation of <filename>boot1</filename> and <filename>boot2</filename>. <filename>boot2</filename>, in turn, contains the <acronym>BTX</acronym> server and the <filename>boot2</filename> client. Finally, a jump is made to address <literal>0x9010</literal>, the entry point of the <acronym>BTX</acronym> server." ], "previous_source": "", "target": [ "" ], "id_hash": -1259617436348836251, "content_hash": -1259617436348836251, "location": "book.translate.xml:1369", "context": "", "note": "(itstool) path: listitem/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 149, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 59, "source_unit": "https://translate-dev.freebsd.org/api/units/102295/?format=api", "priority": 100, "id": 201124, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=6e84f09d898a1665", "url": "https://translate-dev.freebsd.org/api/units/201124/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.695371Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "Before studying the <acronym>BTX</acronym> Server in detail, let us further review how the single, all-in-one <filename>boot</filename> file is created. The way <filename>boot</filename> is built is defined in its <filename>Makefile</filename> (<filename>/usr/src/sys/boot/i386/boot2/Makefile</filename>). Let us look at the rule that creates the <filename>boot</filename> file:" ], "previous_source": "", "target": [ "" ], "id_hash": -2146596315182942590, "content_hash": -2146596315182942590, "location": "book.translate.xml:1382", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 150, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 41, "source_unit": "https://translate-dev.freebsd.org/api/units/102296/?format=api", "priority": 100, "id": 201125, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=6235c206455bb682", "url": "https://translate-dev.freebsd.org/api/units/201125/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.703747Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ " boot: boot1 boot2\n\tcat boot1 boot2 > boot" ], "previous_source": "", "target": [ "" ], "id_hash": -2882066827637789264, "content_hash": -2882066827637789264, "location": "book.translate.xml:1394", "context": "", "note": "(itstool) path: figure/programlisting", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 151, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 8, "source_unit": "https://translate-dev.freebsd.org/api/units/102297/?format=api", "priority": 100, "id": 201126, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=5800d77d77b66db0", "url": "https://translate-dev.freebsd.org/api/units/201126/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.712559Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ "This tells us that <filename>boot1</filename> and <filename>boot2</filename> are needed, and the rule simply concatenates them to produce a single file called <filename>boot</filename>. The rules for creating <filename>boot1</filename> are also quite simple:" ], "previous_source": "", "target": [ "" ], "id_hash": -2477593704855350938, "content_hash": -2477593704855350938, "location": "book.translate.xml:1398", "context": "", "note": "(itstool) path: sect1/para", "flags": "", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 152, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 31, "source_unit": "https://translate-dev.freebsd.org/api/units/102298/?format=api", "priority": 100, "id": 201127, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=5d9dd1a6fc5a5166", "url": "https://translate-dev.freebsd.org/api/units/201127/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.721114Z" }, { "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/fa/?format=api", "source": [ " boot1: boot1.out\n\tobjcopy -S -O binary boot1.out boot1\n\n boot1.out: boot1.o\n\tld -e start -Ttext 0x7c00 -o boot1.out boot1.o" ], "previous_source": "", "target": [ "" ], "id_hash": -3890581462392060764, "content_hash": -3890581462392060764, "location": "book.translate.xml:1407", "context": "", "note": "(itstool) path: figure/programlisting", "flags": "no-wrap", "labels": [], "state": 0, "fuzzy": false, "translated": false, "approved": false, "position": 153, "has_suggestion": false, "has_comment": false, "has_failing_check": false, "num_words": 18, "source_unit": "https://translate-dev.freebsd.org/api/units/102299/?format=api", "priority": 100, "id": 201128, "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/fa/?checksum=4a01e0c5ec66c4a4", "url": "https://translate-dev.freebsd.org/api/units/201128/?format=api", "explanation": "", "extra_flags": "", "pending": false, "timestamp": "2020-08-15T11:57:29.730390Z" } ] }{ "count": 2721, "next": "