Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. include 'cfg_bios.inc'
  2. use16
  3. ;org     0
  4.  
  5. rom_header:
  6. ;       PnP Option ROM header
  7. rom_signature   dw      0xAA55                  ; +0    : magic
  8. rom_length      db      BIOS_BOOT_BLOCK_SIZE    ; +2    : number of 512byte blocks
  9. rom_entry:
  10.                 jmp     init_entry              ; +3    : initialization entry point
  11.                 db      'AZ'
  12. rom_reserved    rb      0x11                    ; +7    : reserved (17 bytes)
  13. rom_pci_struc   dw      pci_header              ; +18h  : offset to PCI data structure
  14. rom_expansion   dw      pnp_header              ; +1Ah  : offset to expansion header structure
  15.  
  16. align 16
  17. pnp_header:
  18. ;       PnP Expansion Header
  19. pnp_signature   db      '$PnP'                  ; +0    : magic
  20. pnp_revision    db      1                       ; +4    : revision
  21. pnp_length      db      2                       ; +5    : length (in 16byte paragraphs)
  22. pnp_next        dw      0                       ; +6    : offset of the next header (0 if none)
  23. pnp_reserv1     db      0                       ; +8
  24. pnp_checksum    db      0                       ; +9    : checksum
  25. pnp_devid       dd      0x0                     ; +A    : device identifier
  26. pnp_manstr      dw      manstr                  ; +E    : pointer to manufacturer string
  27. pnp_prodstr     dw      prodstr                 ; +10   : pointer to product name string
  28. pnp_devtype1    db      2                       ; +12   : device type code
  29. pnp_devtype2    dw      0x000
  30. pnp_devind      db      0x14                    ; +15   : device indicators
  31. pnp_bcv         dw      0                       ; +16   : boot connection vector (must be 0)
  32. pnp_discv       dw      0                       ; +18   : disconnect vector
  33. pnp_bev         dw      boot_entry              ; +1A   : boot entry vector
  34. pnp_reserv2     dw      0                       ; +1C
  35. pnp_info        dw      0                       ; +1E   : static resource information vector
  36.  
  37. align 16
  38. pci_header:
  39. ;       PCI Data Structure
  40. pci_magic       db      'PCIR'                  ; +0    : magic
  41. pci_vendor      dw      BIOS_PCI_VENDOR         ; +4    :
  42. pci_device      dw      BIOS_PCI_DEVICE         ; +6    : sb700 PCI bridge
  43. pci_vdata       dw      0                       ; +8    : vital product data offset
  44. pci_length      dw      0x18                    ; +A    : PCI data structure length
  45. pci_classrev    dd      BIOS_PCI_CLASS          ; +C    : rev.00 + class 04.00.00
  46. pci_size        dw      BIOS_BOOT_BLOCK_SIZE    ; +10   : image length (512byte blocks)
  47. pci_rev         dw      0                       ; +12
  48. pci_codetype    db      0                       ; +14   : x86
  49. pci_indicator   db      0x80                    ; +15   : last image
  50. pci_reserved    dw      0            
  51.  
  52. align 4
  53. manstr:
  54.         db      'Kolibri-A Operation System',0
  55. prodstr:
  56.         db      'ver.ROM-0.1',0
  57.  
  58. align 4
  59. boot_entry:
  60. @@:
  61.  
  62.  
  63. boot_failure:
  64.         int     18h                             ; return to BIOS Boot sequence
  65.  
  66. align   4
  67. init_entry:
  68.         xor     ax, ax
  69.         mov     [cs:rom_length], al
  70.         mov     al, 0x20      
  71.         retf
  72.  
  73.  
  74. check = 0
  75. repeat $-$$
  76.         load a byte from $$+%-1
  77.         check = a + check
  78. end repeat
  79.  
  80. check_byte   db      0x100 - (check mod 256)
  81.  
  82. times   (512-$) db 0