{"id":6076,"date":"2026-06-27T09:22:12","date_gmt":"2026-06-27T00:22:12","guid":{"rendered":"https:\/\/www.freelifemakers.org\/wordpress\/?p=6076"},"modified":"2026-06-27T09:25:00","modified_gmt":"2026-06-27T00:25:00","slug":"os-minios-5","status":"publish","type":"post","link":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/2026\/06\/27\/os-minios-5\/","title":{"rendered":"[OS] miniOS-5"},"content":{"rendered":"\n<p>\ud83d\udc49\ufe0f help,clear\uc774 \uc678\uc5d0 version\uc744 \ud655\uc778 \ud560 \uc218 \uc788\ub294 \uba85\ub839\uc5b4\ub97c \ucd94\uac00\ud574 \ubd05\ub2c8\ub2e4.<br>Let&#8217;s add a command to check the version, in addition to <code>help<\/code> and <code>clear<\/code>.<\/p>\n\n\n\n<p>\ud83d\udc49\ufe0f \uae30\uc874 \ucf54\ub4dc\uc5d0\uc11c \ucd94\uac00\ub418\uac70\ub098 \ubcc0\uacbd\ub41c \ubd80\ubd84\ub9cc \uc124\uba85\ud569\ub2c8\ub2e4.\ub098\uba38\uc9c0\ub294 \uc774\uc804\uacfc \ub3d9\uc77c\ud569\ub2c8\ub2e4.<br>Only the parts added to or modified from the existing code are explained here; the rest remains the same.<\/p>\n\n\n\n<p>\ud83d\udc49\ufe0f \ucef4\ud30c\uc77c \ud560 \ud30c\uc77c\uc740 boot.asm\uacfc sector2.asm \ub450\uac1c\uc785\ub2c8\ub2e4.<br>The files to be compiled are boot.asm and sector2.asm.<\/p>\n\n\n\n<p>\ud83d\udc49\ufe0f boot.asm\uae30\uc874\uacfc \ub3d9\uc77c\ud558\uae30 \ub54c\ubb38\uc5d0 \uc124\uba85\uc744 \uc0dd\ub7b5\ud569\ub2c8\ub2e4. <br>I will skip the explanation for boot.asm, as it remains the same as before.<\/p>\n\n\n\n<p>\ud83d\udc49\ufe0f \uc804\uccb4\ucf54\ub4dc \/ Full code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;org 0x8000]\nbits 16\n\nstart:\n    ; \uc6f0\ucef4 \uba54\uc2dc\uc9c0 \ucd9c\ub825\n    ; Print welcome message\n    mov si, msg_welcome\n    call print_string\n\n; \ud504\ub86c\ud504\ud2b8(miniOS&gt; )\ub97c \ucd9c\ub825\ud558\uace0 \uc785\ub825\uc744 \uc900\ube44\ud558\ub294 \uacf3\n; The place to print the prompt (miniOS&gt; ) and prepare for input\nprompt:\n    mov si, msg_prompt\n    call print_string\n\n    ; \uc785\ub825 \ubc84\ud37c\ub97c \uac00\ub9ac\ud0ac \ud3ec\uc778\ud130(DI)\ub97c \ubc84\ud37c\uc758 \uc2dc\uc791 \uc8fc\uc18c\ub85c \ucd08\uae30\ud654\n    ; Initialize the pointer (DI) pointing to the input buffer with the starting address of the buffer\n    mov di, cmd_buffer\n    mov cx, 0           ; \uc785\ub825\ub41c \uae00\uc790 \uc218\ub97c \uc138\uae30 \uc704\ud55c \uce74\uc6b4\ud130\n                        ; Counter to count the number of entered characters\n\n; \ud0a4\ubcf4\ub4dc \uc785\ub825\uc744 \ud55c \uae00\uc790\uc529 \ubc1b\ub294 \ub8e8\ud504\n; A loop that receives keyboard input character by character\nkey_loop:\n    mov ah, 0x00\n    int 0x16            ; \ud0a4\ubcf4\ub4dc \uc785\ub825 \ubc1b\uae30 (AL\uc5d0 ASCII \ucf54\ub4dc \uc800\uc7a5)\n                        ; Get keyboard input (Store ASCII code in AL)\n\n    ; \uc5d4\ud130 \ud0a4(13)\ub97c \ub20c\ub800\ub294\uc9c0 \ud655\uc778\n    ; Check if the Enter key (13) was pressed\n    cmp al, 13\n    je check_command\n\n    ; \ubc31\uc2a4\ud398\uc774\uc2a4 \ud0a4(8) \ucc98\ub9ac (\uae00\uc790 \uc9c0\uc6b0\uae30)\n    ; Process Backspace key (8) (Erase character)\n    cmp al, 8\n    je backspace\n\n    ; \ubc84\ud37c \ub118\uce68 \ubc29\uc9c0 (\ucd5c\ub300 15\uae00\uc790\ub9cc \uc785\ub825 \uac00\ub2a5)\n    ; Prevent buffer overflow (Max 15 characters allowed)\n    cmp cx, 15\n    je key_loop\n\n    ; \ud654\uba74\uc5d0 \uae00\uc790 \ucd9c\ub825 (\uc5d0\ucf54)\n    ; Output character to screen (Echo)\n    mov ah, 0x0e\n    int 0x10\n\n    ; \uc785\ub825\ubc1b\uc740 \ubb38\uc790\ub97c \ubc84\ud37c\uc5d0 \uc800\uc7a5\ud558\uace0 \ud3ec\uc778\ud130(DI) \uc774\ub3d9\n    ; Save the received character to the buffer and move the pointer (DI)\n    mov &#91;di], al\n    inc di\n    inc cx              ; \uae00\uc790 \uc218 \uc99d\uac00\n                        ; Increment character count\n    jmp key_loop\n\n; \ubc31\uc2a4\ud398\uc774\uc2a4 \ucc98\ub9ac \ub8e8\ud2f4\n; Backspace processing routine\nbackspace:\n    cmp cx, 0           ; \uc785\ub825\ub41c \uae00\uc790\uac00 \uc5c6\uc73c\uba74 \ubb34\uc2dc\n                        ; Ignore if no characters are entered\n    je key_loop\n    \n    ; \ud654\uba74\uc5d0\uc11c \uae00\uc790 \uc9c0\uc6b0\uae30 (\uc67c\ucabd \uc774\ub3d9 -&gt; \uacf5\ubc31 \ucd9c\ub825 -&gt; \ub2e4\uc2dc \uc67c\ucabd \uc774\ub3d9)\n    ; Erase character from screen (Move left -&gt; Output space -&gt; Move left again)\n    mov ah, 0x0e\n    mov al, 8\n    int 0x10\n    mov al, ' '\n    int 0x10\n    mov al, 8\n    int 0x10\n\n    dec di              ; \ubc84\ud37c \ud3ec\uc778\ud130 1 \uac10\uc18c\n                        ; Decrement buffer pointer by 1\n    dec cx              ; \uae00\uc790 \uc218 1 \uac10\uc18c\n                        ; Decrement character count by 1\n    jmp key_loop\n\n; \uc5d4\ud130\ub97c \ucce4\uc744 \ub54c \uc785\ub825\ub41c \uba85\ub839\uc5b4\ub97c \ube44\uad50\ud558\ub294 \uacf3\n; The place to compare the entered command when Enter is pressed\ncheck_command:\n    ; \ubb38\uc790\uc5f4\uc758 \ub05d\uc744 \ud45c\uc2dc\ud558\uae30 \uc704\ud574 \ubc84\ud37c\uc758 \ud604\uc7ac \uc704\uce58\uc5d0 0(Null) \uc0bd\uc785\n    ; Insert 0 (Null) at the current location of the buffer to mark the end of the string\n    mov byte &#91;di], 0\n\n    ; \uc904\ubc14\uafc8 \ucd9c\ub825\n    ; Output newline\n    call print_newline\n\n    ; \uc785\ub825\ub41c \uae00\uc790\uac00 \uc544\uc608 \uc5c6\uc73c\uba74 \uadf8\ub0e5 \ub2e4\uc74c \ud504\ub86c\ud504\ud2b8\ub85c\n    ; If no characters are entered at all, just go to the next prompt\n    cmp cx, 0\n    je prompt\n\n    ; 1. 'help' \uba85\ub839\uc5b4 \ube44\uad50\n    ; 1. Compare 'help' command\n    mov si, cmd_buffer\n    mov di, cmd_help\n    call compare_string\n    je do_help          ; \uac19\uc73c\uba74 do_help\ub85c \uc810\ud504\n                        ; If equal, jump to do_help\n\n    ; 2. 'clear' \uba85\ub839\uc5b4 \ube44\uad50\n    ; 2. Compare 'clear' command\n    mov si, cmd_buffer\n    mov di, cmd_clear\n    call compare_string\n    je do_clear         ; \uac19\uc73c\uba74 do_clear\ub85c \uc810\ud504\n                        ; If equal, jump to do_clear\n\n    ; ----------------------------------------------------\n    ; \ud83d\udc4f &#91;\ucd94\uac00\ub41c \ubd80\ubd84 \/] 3. 'version' \uba85\ub839\uc5b4 \ube44\uad50 \n    ;     &#91; Added Part ] 3. 'version' Command Comparison\n    ; ----------------------------------------------------\n    mov si, cmd_buffer\n    mov di, cmd_version\n    call compare_string\n    je do_version       ; \uac19\uc73c\uba74 do_version\uc73c\ub85c \uc810\ud504\n                        ; If equal, jump to do_version\n    ; ----------------------------------------------------                    \n\n    ; \uc77c\uce58\ud558\ub294 \uba85\ub839\uc5b4\uac00 \uc5c6\uc73c\uba74 \uc5d0\ub7ec \uba54\uc2dc\uc9c0 \ucd9c\ub825\n    ; If no matching command is found, print error message\n    mov si, msg_unknown\n    call print_string\n    jmp prompt\n\n; &#91;\uba85\ub839\uc5b4 \ucc98\ub9ac] help \uad6c\ud604\n; &#91;Command Processing] Implement help\ndo_help:\n    mov si, msg_help_text\n    call print_string\n    jmp prompt\n\n; &#91;\uba85\ub839\uc5b4 \ucc98\ub9ac] clear \uad6c\ud604\n; &#91;Command Processing] Implement clear\ndo_clear:\n    ; BIOS \ud654\uba74 \uc2a4\ud06c\ub864 \uae30\ub2a5\uc744 \uc774\uc6a9\ud574 \ud654\uba74 \uc9c0\uc6b0\uae30\n    ; Clear screen using BIOS screen scroll function\n    mov ah, 0x06        ; \uc2a4\ud06c\ub864 \uc5c5 \uae30\ub2a5\n                        ; Scroll up function\n    mov al, 0           ; 0 = \ud654\uba74 \uc804\uccb4 \uc9c0\uc6b0\uae30\n                        ; 0 = Clear entire screen\n    mov bh, 0x07        ; \ubc14\ud0d5\uc0c9 \uac80\uc815, \uae00\uc790\uc0c9 \ud770\uc0c9\n                        ; Background black, Foreground white\n    mov ch, 0           ; \uc88c\uc0c1\ub2e8 \ud589\n                        ; Upper left row\n    mov cl, 0           ; \uc88c\uc0c1\ub2e8 \uc5f4\n                        ; Upper left column\n    mov dh, 24          ; \uc6b0\ud558\ub2e8 \ud589\n                        ; Lower right row\n    mov dl, 79          ; \uc6b0\ud558\ub2e8 \uc5f4\n                        ; Lower right column\n    int 0x10\n\n    ; \ucee4\uc11c\ub97c \ub9e8 \uc704 \uc88c\uc0c1\ub2e8(0,0)\uc73c\ub85c \uc774\ub3d9\n    ; Move cursor to the top-left corner (0,0)\n    mov ah, 0x02\n    mov bh, 0\n    mov dh, 0\n    mov dl, 0\n    int 0x10\n\n    jmp prompt\n\n\n; ----------------------------------------------------\n; \ud83d\udc4f &#91;\ucd94\uac00\ub41c \ubd80\ubd84] &#91;\uba85\ub839\uc5b4 \ucc98\ub9ac] version \uad6c\ud604\n;     &#91;Added Part] &#91;Instruction processing] version implementation\n; ----------------------------------------------------\ndo_version:\n    mov si, msg_version_text\n    call print_string\n    jmp prompt\n; ----------------------------------------------------    \n\n; &#91;\ud568\uc218] \ub450 \ubb38\uc790\uc5f4\uc774 \uac19\uc740\uc9c0 \ube44\uad50 (SI\uc640 DI \uc8fc\uc18c\uc758 \ubb38\uc790\uc5f4 \ube44\uad50)\n; &#91;Function] Compare if two strings are equal (Compare strings at SI and DI addresses)\ncompare_string:\n.loop:\n    mov al, &#91;si]\n    mov bl, &#91;di]\n    cmp al, bl          ; \ub450 \uae00\uc790\uac00 \uac19\uc740\uc9c0 \ube44\uad50\n                        ; Compare if two characters are equal\n    jne .not_equal      ; \ub2e4\ub974\uba74 \ud0c8\ucd9c\n                        ; If not equal, escape\n    cmp al, 0           ; \ubb38\uc790\uc5f4\uc774 \ub05d\ub0ac\ub294\uc9c0 \ud655\uc778 (\ub458 \ub2e4 0\uc778 \uc0c1\ud669)\n                        ; Check if the string ended (Both are 0 case)\n    je .equal           ; \ub05d\ub0ac\uc73c\uba74 \uc644\ubcbd\ud788 \uc77c\uce58\n                        ; If ended, perfect match\n    inc si\n    inc di\n    jmp .loop\n.not_equal:\n    clc                 ; Carry Flag \ud074\ub9ac\uc5b4 (\uac19\uc9c0 \uc54a\uc74c \ud45c\uc2dc, \uc5b5\uc9c0 flag \uc138\ud305\uc6a9\uc73c\ub85c cmp \ud65c\uc6a9)\n                        ; Clear Carry Flag (Indicate not equal, use cmp for forced flag setting)\n    mov al, 1\n    cmp al, 0           ; Zero Flag\ub97c 0\uc73c\ub85c \ub9cc\ub4e4\uc5b4 '\ub2e4\ub984'\uc744 \uc54c\ub9bc\n                        ; Set Zero Flag to 0 to notify 'Not Equal'\n    ret\n.equal:\n    cmp al, 0           ; Zero Flag\ub97c 1\ub85c \ub9cc\ub4e4\uc5b4 '\uac19\uc74c'\uc744 \uc54c\ub9bc (AL\uc774 0\uc774\ubbc0\ub85c)\n                        ; Set Zero Flag to 1 to notify 'Equal' (Since AL is 0)\n    ret\n\n; &#91;\ud568\uc218] \ubb38\uc790\uc5f4 \ucd9c\ub825\n; &#91;Function] Print string\nprint_string:\n    lodsb\n    cmp al, 0\n    je .done\n    mov ah, 0x0e\n    int 0x10\n    jmp print_string\n.done:\n    ret\n\n; &#91;\ud568\uc218] \uc904\ubc14\uafc8 \ucd9c\ub825\n; &#91;Function] Print newline\nprint_newline:\n    mov ah, 0x0e\n    mov al, 13\n    int 0x10\n    mov al, 10\n    int 0x10\n    ret\n\n; ----------------------------------------------------\n; \ub370\uc774\ud130 \ubc0f \ubcc0\uc218 \uc120\uc5b8 \uc601\uc5ed (\uc804\uc5ed \ubcc0\uc218)\n; Data and variable declaration area (Global variables)\n; ----------------------------------------------------\nmsg_welcome   db '3. Hello from Sector 2! miniOS Shell Started.', 13, 10, 0\nmsg_prompt    db 'miniOS&gt; ', 0\nmsg_unknown   db 'Unknown command! Type \"help\".', 13, 10, 0\n\n; \ud83d\udc4f &#91;\uc218\uc815\ub41c \ubd80\ubd84] help \ud14d\uc2a4\ud2b8 \ubaa9\ub85d\uc5d0 version \uba85\uc2dc\n;     &#91;Modified] Specified the version in the help text list.\nmsg_help_text db 'Available commands: help, clear, version', 13, 10, 0\n; ----------------------------------------------------\n; \ud83d\udc4f &#91;\ucd94\uac00\ub41c \ubd80\ubd84 ] version \ucd9c\ub825\uc6a9 \ubcc0\uc218 \uc120\uc5b8\n;     &#91;Added Part] Variable declaration for version output\n; ----------------------------------------------------\nmsg_version_text db 'miniOS version 1.0.0 (Compiled in 2026)', 13, 10, 0\n; ----------------------------------------------------\n\n; \ube44\uad50\ud560 \uba85\ub839\uc5b4 \uae30\uc900 \ubb38\uc790\uc5f4 (\uc0c1\uc218)\n; Reference command strings for comparison (Constants)\ncmd_help      db 'help', 0\ncmd_clear     db 'clear', 0\n; ----------------------------------------------------\n; \ud83d\udc4f &#91; \ucd94\uac00\ub41c \ubd80\ubd84 ] \ube44\uad50\ud560 \uba85\ub839\uc5b4 \uae30\uc900 \ubcc0\uc218 \uc120\uc5b8\n;     &#91; Added Part ] Declare a variable to serve as the basis for the command comparison.\n; ----------------------------------------------------\ncmd_version   db 'version', 0\n; ----------------------------------------------------\n\n; \uc0ac\uc6a9\uc790\uac00 \uc785\ub825\ud55c \uae00\uc790\ub4e4\uc744 \ub2f4\uc744 '\ube48 \ubcc0\uc218 \uacf5\uac04' (\ubc84\ud37c)\n; 'Empty variable space' to hold characters entered by the user (Buffer)\n; 16\ubc14\uc774\ud2b8 \ud06c\uae30\ub9cc\ud07c \uacf5\uac04\uc744 \ubbf8\ub9ac \ud655\ubcf4\ud574 \ub461\ub2c8\ub2e4.\n; Pre-allocate space of 16 bytes.\ncmd_buffer    times 16 db 0\n\n; 512\ubc14\uc774\ud2b8 \ud06c\uae30 \ub9de\ucd94\uae30\n; Fill up to 512 bytes\ntimes 512 - ($ - $$) db 0\n<\/code><\/pre>\n\n\n\n<p>\ud83d\udc49\ufe0f \ube4c\ub4dc \/ build<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># 1\ubc88 \uc139\ud130 \ucef4\ud30c\uc77c\n# Sector 1 Compilation\n# nasm -f bin boot.asm -o boot.bin\n\n# 1. 2\ubc88 \uc139\ud130 \uc0c8\ub85c \ucef4\ud30c\uc77c\n# 1. Recompile Sector 2\nnasm -f bin sector2.asm -o sector2.bin\n\n# 2. \ud569\uce58\uae30 \ubc0f 1.44MB \uc774\ubbf8\uc9c0 \uaddc\uaca9\ud654\n# 2. Merging and Standardizing to 1.44MB Image Format\ncat boot.bin sector2.bin &gt; temp.bin\ndd if=temp.bin of=os.img bs=512 count=2880 conv=sync\n\n# 3. QEMU \ubd80\ud305\uc21c\uc11c \uac15\uc81c \uc9c0\uc815 \uc2e4\ud589\n# 3. Running QEMU with a Forced Boot Order\nqemu-system-x86_64 -drive file=os.img,format=raw,if=floppy -boot a<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"489\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/06\/minios-5-jpg.jpg\" alt=\"\" class=\"wp-image-6079\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/06\/minios-5-jpg.jpg 758w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/06\/minios-5-jpg-300x194.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/06\/minios-5-jpg-400x258.jpg 400w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\ud83d\udc49\ufe0f \ucf54\ub4dc\uc124\uba85 \/ Code Explanation<\/p>\n\n\n\n<p>\u2714\ufe0f cmd_buffer\uc5d0 \uc785\ub824\ub41c \ub0b4\uc6a9\uacfc cmd_version\uc758 \ub0b4\uc6a9\uacfc \ube44\uad50\ud574\uc11c \uc77c\uce58\ud558\uba74(compare_string) do_version\uc73c\ub85c \uc810\ud504\ud569\ub2c8\ub2e4.<br>The content entered into <code>cmd_buffer<\/code> is compared with the content of <code>cmd_version<\/code>; if they match (via <code>compare_string<\/code>), the execution jumps to <code>do_version<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    mov si, cmd_buffer\n    mov di, cmd_version\n    call compare_string\n    je do_version       ; \uac19\uc73c\uba74 do_version\uc73c\ub85c \uc810\ud504\n                        ; If equal, jump to do_version<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>cmd_version   db 'version', 0<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \ud654\uba74\uc5d0 \uc2e4\uc81c\ub85c \ubc84\uc804\uc744 \ud45c\uc2dc\ud569\ub2c8\ub2e4.<br>It actually displays the version on the screen.<\/p>\n\n\n\n<p>&#8212; si\ub808\uc9c0\uc2a4\ud130\uc5d0 msg_version_text \ubcc0\uc218\ub97c \uc785\ub825\ud569\ub2c8\ub2e4.<br>Load the <code>msg_version_text<\/code> variable into the <code>si<\/code> register.<\/p>\n\n\n\n<p>&#8212; print_string\ud568\uc218\ub97c \uc2e4\ud589\ud574\uc11c\ud654\uba74\uc5d0 \ubc84\uc804\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4.<br>Execute the print_string function to display the version on the screen.<\/p>\n\n\n\n<p>&#8212; prompt\ub77c\ubca8\ub85c \uc810\ud504\ud569\ub2c8\ub2e4.<br>Jump to the prompt label.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>do_version:\n    mov si, msg_version_text\n    call print_string\n    jmp prompt<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>msg_version_text db 'miniOS version 1.0.0 (Compiled in 2026)', 13, 10, 0<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \uc544\ub798\ub294 help\uba85\ub839\uc5b4\ub97c \uc2e4\ud589\ud560\ub54c \uc0ac\uc6a9\uac00\ub2a5\ud55c \uba85\ub839\uc5b4\ub85c version\uc744 \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4.<br>The &#8216;version&#8217; command has been added to the list of available commands shown when running the &#8216;help&#8217; command.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>msg_help_text db 'Available commands: help, clear, version', 13, 10, 0<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udc49\ufe0f help,clear\uc774 \uc678\uc5d0 version\uc744 \ud655\uc778 \ud560 \uc218 \uc788\ub294 \uba85\ub839\uc5b4\ub97c \ucd94\uac00\ud574 \ubd05\ub2c8\ub2e4.Let&#8217;s add a command to check the version, in addition to help and clear. \ud83d\udc49\ufe0f \uae30\uc874 \ucf54\ub4dc\uc5d0\uc11c \ucd94\uac00\ub418\uac70\ub098 \ubcc0\uacbd\ub41c \ubd80\ubd84\ub9cc \uc124\uba85\ud569\ub2c8\ub2e4.\ub098\uba38\uc9c0\ub294 \uc774\uc804\uacfc \ub3d9\uc77c\ud569\ub2c8\ub2e4.Only the parts added to or modified from the existing code are explained here; the rest remains the same. \ud83d\udc49\ufe0f \ucef4\ud30c\uc77c \ud560 \ud30c\uc77c\uc740 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26,1],"tags":[],"class_list":["post-6076","post","type-post","status-publish","format-standard","hentry","category-os","category-uncategorized","missing-thumbnail"],"_links":{"self":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/6076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=6076"}],"version-history":[{"count":3,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/6076\/revisions"}],"predecessor-version":[{"id":6081,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/6076\/revisions\/6081"}],"wp:attachment":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=6076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=6076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=6076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}