home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / misc_programming / example1.asm < prev    next >
Assembly Source File  |  1993-09-26  |  2KB  |  92 lines

  1. ;         32BIT  DOS  EXTENDER
  2. ;
  3. ; Written by Adam Seychell     Wed 8-25-1993
  4. ;
  5.  
  6. .386
  7.  
  8. DATA32    SEGMENT PUBLIC 'data'    use32
  9. CODE32_sel    dw 50h        ; Selector Values
  10. CODE16_sel    dw 58h
  11. DATA_sel    dw 60h
  12. TheSTACK_sel    dw 30h
  13. VIDEO_sel    dw 28h
  14. FLAT_CODE32_sel    dw 10h
  15. FLAT_DATA_sel    dw 08h
  16. XMS_sel        dw 18h
  17. BASE_sel    dw 20h
  18. PSP_sel        dw 48h
  19.  
  20. xms_usage    dd 0        ; Requested size of XMS block in bytes.
  21. xms_base    dd ?        ; Linear base address of the XMS block.
  22. Base_Segment    dw ?        ; Real mode segment value for base memory.
  23. PSP_segment    dw ?        ; Real mode segment value for PSP segment.
  24.  
  25. align 4
  26. v86_mesg   db ' Message printed in v86 mode ',10,13,36
  27.  
  28. DATA32 ENDS
  29.  
  30. CODE32    SEGMENT PUBLIC 'CODE' USE32
  31. assume    DS:DATA32 , CS:CODE32
  32.  
  33. include        dos32.inc
  34. start32:        ; 32 bit code entry point.    DS -> data descripor
  35.  
  36.     mov    es,[xms_sel]        ;Must load these with valid selectors
  37.     mov    fs,[FLAT_DATA_sel]
  38.     mov    gs,[video_sel]
  39.         sti
  40.  
  41.         ; Example to call a real mode interrupt
  42.  
  43.         mov    SS:real_DS,DATA32        ; Set the DS reg for V86 mode
  44.         mov     edx,offset v86_mesg
  45.     mov    ah,9
  46.         dosint    21h
  47.  
  48.  
  49.     mov ah,4ch        ; Termiate the program
  50.         int 21h
  51.  
  52.  
  53. ; The 16 hardware inetrrupts.
  54. ; If an IRQ accours in V86 mode the segment registers will contain same
  55. ; selector values as they were before the last V86 call. ( i.e dosint xx ).
  56. IRQ0:    dosint 08h                      ;  8253  Timer 0
  57.     iretd
  58. IRQ1:    dosint 09h            ;  8242 Keyboard
  59.     iretd
  60. IRQ2:    dosint 0Ah                      ; LPT 2 or  Vert Retrate (6845)
  61.     iretd
  62. IRQ3:    dosint 0Bh            ; Serial communications ports 2 & 4
  63.     iretd
  64. IRQ4:    dosint 0Ch            ; Serial communications ports 1 & 3
  65.     iretd
  66. IRQ5:    dosint 0Dh            ; Reserved
  67.     iretd
  68. IRQ6:    dosint 0Eh            ; NEC µPD765 Floppy Disk Controler
  69.     iretd
  70. IRQ7:    dosint 0Fh                      ; LPT 1
  71.     iretd
  72. IRQ8:    dosint 70h            ; 6818 CMOS CLOCK
  73.     iretd
  74. IRQ9:    dosint 71h            ; Reserved
  75.     iretd
  76. IRQ10:    dosint 72h            ; Reserved
  77.     iretd
  78. IRQ11:    dosint 73h            ; Reserved
  79.     iretd
  80. IRQ12:    dosint 74h            ; Reserved
  81.     iretd
  82. IRQ13:    dosint 75h            ; 80x87 Math Co-Pro exception.
  83.     iretd
  84. IRQ14:    dosint 76h            ; Hard Drive Cotroller.
  85.     iretd
  86. IRQ15:    dosint 77h            ; Reserved
  87.     iretd
  88.  
  89.  
  90. CODE32 ENDS
  91.  
  92. END