1. Куча / Говнокод #3509

    +134

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    [BITS 16]
    [ORG 7C00h]
    main:
    
    mov ah,0Eh
    mov al,'B'
    int 10h
    
    mov ah,0Eh
    mov al,'o'
    int 10h
    
    mov ah,0Eh
    mov al,'l'
    int 10h
    
    mov ah,0Eh
    mov al,'g'
    int 10h
    
    mov ah,0Eh
    mov al,'e'
    int 10h
    
    mov ah,0Eh
    mov al,'n'
    int 10h
    
    mov ah,0Eh
    mov al,'O'
    int 10h
    
    mov ah,0Eh
    mov al,'S'
    int 10h
    
    mov ah,0Eh
    mov al,' '
    int 10h
    
    mov ah,0Eh
    mov al,'2'
    int 10h
    
    mov ah,0Eh
    mov al,'.'
    int 10h
    
    mov ah,0Eh
    mov al,'0'
    int 10h
    
    times 510-($-$$) db 0
    dw 0xAA55

    Так будет выглядеть бутлоадер BolgenOS 2.0

    Запускать с:

    nasm os.asm -o os.bin
    dd if=os.bin of=os.img bs=512
    kvm os.img

    Запостил: Webkill, 18 Июня 2010

    Комментарии (58) RSS

    • дада, рабочий стол они будут рисовать так же с помощью биосного 10h
      Ответить
      • Функция 13h для записи строки через прерывание 10h появилась только в биосе для 286. Может быть, они ОС для XT, PCjr, NEC V20 или ЕС-1840 пишут?
        Ответить
        • а самим написать -- расположить строку в памяти и идти по ней, пока null не встретишь?

          джампы тоже в 286м появились?;)))))

          Или это слишком сильно тратит ресурсы?
          Ответить
          • Действительно, что-то типа этого:
            cld
            1: lodsb
            mov ah, 0Eh
            int 10h
            loop 1

            Но есть упёртые, доказывающие, что лишние циклы мешают работе конвейера. Совсем недавно в одном из говнокодов кто-то с умным видом рекомендовал разворачивать циклы.

            В примере один символ строки занимает шесть байт. Кроме того, такой код либо набирается в режиме копипаста, либо пишется препроцессор. Так что даже если функции для строки у нас нет, лучше уж цикл.
            Ответить
    • Для этого надо сначала этот код откуда-нибудь украсть.
      Ответить
    • > Так будет выглядеть бутлоадер BolgenOS 2.0

      Откуда знаешь? Ссылки не вижу. Сам придумал?
      Ответить
    • показать все, что скрытоГде здесь C++?!
      Ответить
    • А больше всего меня радует, что код опубликован не в разделе «Ассемблер», а в разделе «Куча». Что-то это символизирует...
      Ответить
    • запости лучше лоадер упомянутой УебкиллОс
      Ответить
    • классно, подскажите адрес свн
      Ответить
    • Мне лично болденос не понравился - я решил Миминусом пользоваться :-) под него и проги от винды идут
      Ответить
    • показать все, что скрытоГде здесь F#?
      Ответить
    • У терминатора на экране такая же херня нарисована.
      Ответить
    • А я даже название для такой кодировки придумал: UTF-48, ибо каждый символ строки занимает 48 бит. По иронии совпало с размером регистра БЭСМ-6 и типа real в Паскале. К чему бы это?
      Ответить
    • Всем спасибо, исправленная версия:

      [ORG 0]
      jmp 07C0h:boBootStart
      
      BOOTING_MSG         db 'BolgenOS 2.0 is booting...', 0
      
      boBootMessage:
          lodsb           	  	  
      
          cmp al, 0                .
          je boBootMessage_end
      
          mov ah, 0Eh             
          int 10h
      
          jmp boBootMessage        
      
      boBootMessage_end:
          ret
      
      boBootStart:
          mov ax, cs               
          mov ds, ax
          mov es, ax
      
          mov si, BOOTING_MSG     
          call boBootMessage
      
      	times 510-($-$$) db 0   
      	dw 0xAA55


      только вот что теперь делать?
      Ответить
    • показать все, что скрытокстати, груб не собирается (
      пиздит про objcopy, мол, обнговите binutils. стоят самые новые. ненавижу красноглазиков, всё у них еле работает пинками-хаками через жопу
      Ответить
      • Ммм, а у трудолюбивых индусиков все собирается само, как в Вилабаджо? Вы наверное не пробовали пособирать что-то под Виндами :)
        Ответить
        • пробовал, там-то полная жопа (если пытаться собрать что-то гнутое)

          вот специально грузился в Убунту, чтобы сконпелировать там, а в итоге... и в нете нет ответа, что делать, очень похоже на баг (такие мысли у тех, кто наткнулся на то же и не получил разумного ответа).
          Ответить
          • aclocal; autoconf; automake не помогает?
            Ответить
            • я следовал инструкции типа ./configure, make, make install.

              сии инструменты не пробовал.
              Ответить
              • Эти штуки регенерируют configure (если есть шаблон типа configure.ac или configure.in) и makefile (если есть шаблон типа makefile.am). Надо ещё попробовать ключик --install у этих утилит. А после танцев с бубном ./configure; make; make install должны пройти на ура.
                Ответить
      • показать все, что скрытоvanished
        Ответить

    Добавить комментарий