דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. מחשבים וטכנולוגיה
  3. מדריכים - מחשבים וטכנולוגיה
  4. שיתוף | בניתי "מערכת הפעלה" זעירה שיודעת להציג תמונות (טוב, בערך...)

שיתוף | בניתי "מערכת הפעלה" זעירה שיודעת להציג תמונות (טוב, בערך...)

מתוזמן נעוץ נעול הועבר מדריכים - מחשבים וטכנולוגיה
2 פוסטים 2 כותבים 129 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מתכנת חובבמ מנותק
    מתכנת חובבמ מנותק
    מתכנת חובב
    מדריכים
    כתב נערך לאחרונה על ידי מתכנת חובב
    #1

    קראתי אתמול על וירוס מחשבים ישן בשם MEMZ שבין היתר היה משכתב את ה MBR למיני תוכנה שהייתה מציגה אנימציה על המסך כשהמשתמש היה מפעיל את המחשב
    כלומר כותבת שם קוד שלא צריך מערכת הפעלה שתטפל בו אלא יודע לרוץ עצמאית ולהשתמש בפסיקות תוכנה ישירות מהביוס כדי לגשת לחומרה ישירות
    הנושא סקרן אותי ולכן ניסיתי לכתוב משהו כזה בעצמי
    תוכנה שבהפעלת המחשב תציג תמונה על המסך
    זה מצריך שהמחשב יהיה בתצורת BIOS או לפחות יתמוך ב CSM
    הרעיון הוא שמהרגע שנטען ה MBR לזיכרון במקום שזה יעבור לחפש את ה loader של המערכת הפעלה מחליפים את זה בקוד שעושה פעולות אחרות - במקרה שלנו מציגים תמונה
    הקוד נכתב באסמבלי 16bits ורץ על המעבד עוד כשהוא במצב real mode!
    הקוד עצמו שוקל רק 81 בתים בזיכרון והוא יושב בסקטור הראשון של הדיסק
    הוא טוען לזיכרון את התמונה עצמה שיושבת ב 126 הסקטורים שאחריו
    את התמונה עצמה המרתי ל bmp בלי דחיסה בגודל המירבי שאפשרי במצב VGA mode 13h (שזה 320x200 פיקסלים בעומק צבע של 8 ביטים) וממנו הורדתי את ה headers כך שנשארו לי רק נתוני התמונה
    הצבעים יצאו לא כמו במקור בגלל חוסר התאמה במפת הצבעים בין המקודד ש ffmpeg השתמש בו למפה שאיתה קורא הביוס את התמונה
    הרצתי את זה אצלי ב VB ועוד לא ניסיתי על מחשב ממש - מוזמנים לנסות ולעדכן

    מצורף הקוד בסינטקס של NASM (וסליחה שאין תיעוד פשוט אין לי סבלנות לכתוב אותו)

    [ORG 0x7C00]
    [BITS 16]
    
    start:
    	JMP SHORT main
    	NOP
    
    main:
    	CLI
    	
    	XOR ax, ax
    	MOV ds, ax
    	MOV es, ax
    	MOV fs, ax
    	MOV gs, ax
    	MOV ss, ax
    	
    	MOV sp, 0x7C00
    	
    	STI
    	
    	MOV [BOOT_DRIVE], dl
    	
    	MOV ah, 0x42
    	MOV dl, [BOOT_DRIVE]
    	MOV si, DAP
    	INT 0x13
    	JC disk_error
    	
    	MOV ah, 0x00
    	MOV al, 0x13
    	INT 0x10
    	
    	MOV ax, 0x1000
    	MOV ds, ax
    	XOR si, si
    	
    	MOV ax, 0xA000
    	MOV es, ax
    	XOR di, di
    	
    	MOV cx, 32000
    	CLD
    	REP MOVSW
    	
    hung:
    	CLI
    	HLT
    	JMP hung
    	
    disk_error:
    	CLI
        HLT
        JMP disk_error
    
    
    BOOT_DRIVE db 0
    
    align 4
    
    DAP:
    	db 0x10
    	db 0
    	dw 126
    	dw 0x0000
    	dw 0x1000
    	dq 1
    
    times 510-($-$$) db 0
    dw 0xAA55
    

    ככה זה נראה בפועל

    output.gif

    והנה הקובץ עצמו
    יש גרסת bin שאפשר לפרוס על אונקי ולהעלות באתחול ויש גרסת vdi שאפשר להעלות ב virtualbox
    myos.vdi
    myos.img

    עריכה: התמונה המקורית היא כמובן תמונת הפרופיל שלי...

    צריך עזרה בשחזור מידע? ייעוץ? egozkokus1@gmail.com

    תגובה 1 תגובה אחרונה
    18
    • אביעדא מנותק
      אביעדא מנותק
      אביעד
      מדריכים
      כתב נערך לאחרונה על ידי
      #2

      תקשיב שאתה מטורף
      אני נהנה לראות את הפרוייקטים (הקטנים 😉 )שאתה עושה
      שאפו ענק 👍

      לכל המדריכים שלי
      מסקרן אותך להבין יותר לעומק מה זה מחשב?
      תראה את זה!

      תגובה 1 תגובה אחרונה
      2

      • התחברות

      • אין לך חשבון עדיין? הרשמה

      • התחברו או הירשמו כדי לחפש.
      • פוסט ראשון
        פוסט אחרון
      0
      • חוקי הפורום
      • פופולרי
      • לא נפתר
      • משתמשים
      • חיפוש גוגל בפורום
      • צור קשר