home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / cpu / protex / prot4.lst < prev    next >
File List  |  1991-03-20  |  33KB  |  482 lines

  1. Microsoft (R) Macro Assembler Version 5.10                  3/20/91 22:38:53
  2. Method 1                                                    Page     1-1
  3.  
  4.  
  5.        1                                        PAGE    ,132
  6.        2                                        TITLE     Method 1
  7.        3                                        .286P     ; Tell MASM 2.0 about 286 instructions
  8.        4                                ;--------------------------------------------------------------:
  9.        5                                ;       Sample Program 1                                       :
  10.        6                                ;                                                              :
  11.        7                                ; This program switches into Protected Virtual Mode, changes   :
  12.        8                                ; the display attribute to reverse video, and returns to Real  :
  13.        9                                ; Mode to exit to DOS                                          :
  14.       10                                ;                                                              :
  15.       11                                ; Once entered into a file, do the following:                  :
  16.       12                                ;       MASM SAMPLE1;                                          :
  17.       13                                ;       LINK SAMPLE1;                                          :
  18.       14                                ;       EXE2BIN SAMPLE1 SAMPLE1.COM                            :
  19.       15                                ;       DEL SAMPLE1.EXE                                        :
  20.       16                                ;                                                              :
  21.       17                                ; WARNING: This program will "kill" a PC.  I should only       :
  22.       18                                ; be run on an AT.                                             :
  23.       19                                ;--------------------------------------------------------------:
  24.       20                                
  25.       21 0000                           bios_data_seg SEGMENT at 0040h
  26.       22 0067                                         ORG       0067h
  27.       23 0067  0000                     io_rom_init   dw ?              ; dword variable in BIOS data segment
  28.       24 0069  0000                     io_rom_seg    dw ?              ;  used to store a dword address
  29.       25 006B                           bios_data_seg ENDS
  30.       26                                
  31.       27                                descriptor    STRUC
  32.       28 0000  0000                     seg_limit     dw 0              ; segment limit (1-65536 bytes)
  33.       29 0002  0000                     base_lo_word  dw 0              ; 24 bit physical address
  34.       30 0004  00                       base_hi_byte  db 0              ; (0 - (16M-1))
  35.       31 0005  00                       access_rights db 0              ; access rights byte
  36.       32 0006  0000                                   dw 0              ; reserved_386
  37.       33 0008                           descriptor    ENDS
  38.       34                                
  39.       35 = 0070                         cmos_port       equ 070h
  40.       36 = 009B                         code_seg_access equ 10011011b   ;access rights byte for code seg
  41.       37 = 0093                         data_seg_access equ 10010011b   ;access rights byte for data seg
  42.       38 = 00DD                         disable_bit20   equ 11011101b   ;8042 function code to de-gate A20
  43.       39 = 00DF                         enable_bit20    equ 11011111b   ;8042 function code to gate A20
  44.       40 = 0021                         inta01          equ 021h        ;8259 Int Controller #1
  45.       41 = 00A1                         intb01          equ 0A1h        ;8259 Int Controller #2
  46.       42 = 0060                         port_a          equ 060h        ;8042 port A
  47.       43 = 00FE                         shut_cmd        equ 0FEh        ;cmd to 8042: shut down AT
  48.       44 = 000F                         shut_down       equ 00Fh        ;CMOS shut down byte index
  49.       45 = 0064                         status_port     equ 064h        ;8042 status port
  50.       46 = 0001                         virtual_enable  equ 0001h       ;LSB=1: Protected Virtual Mode
  51.       47                                
  52.       48                                
  53.       49                                                                ;; This is a "hard coded" far jump
  54.       50                                jumpfar MACRO      jumpfar1,jumpfar2
  55.       51                                        db         0EAh
  56.       52                                        dw         (offset jumpfar1)
  57.       53                                        dw         jumpfar2
  58.       54                                        ENDM
  59. Microsoft (R) Macro Assembler Version 5.10                  3/20/91 22:38:53
  60. Method 1                                                    Page     1-2
  61.  
  62.  
  63.       55                                
  64.       56                                
  65.       57                                        SUBTTL     Program entry point and data area
  66. Microsoft (R) Macro Assembler Version 5.10                  3/20/91 22:38:53
  67. Method 1                                                    Page     1-3
  68. Program entry point and data area                           
  69.  
  70.       58                                        PAGE
  71.       59 0000                           cseg    SEGMENT para       public        'code'
  72.       60                                        ASSUME  cs:cseg
  73.       61                                
  74.       62 0100                                   ORG     100h
  75.       63 0100  EB 32                    start:  jmp     short     main
  76.       64                                
  77.       65                                        EVEN
  78.       66 0102                           gdt     LABEL   DWORD
  79.       67                                
  80.       68 = 0000                         gdt_desc    EQU  (($-gdt)/8)*8 + 0000000000000000b
  81.       69 0102  3000                     gdt1        descriptor  <gdt_leng,,,data_seg_access,>
  82.       70 0104  0000                     
  83.       71 0106  00                       
  84.       72 0107  93                       
  85.       73 0108  0000                     
  86.       74                                
  87.       75 = 0008                         cs_code     EQU  (($-gdt)/8)*8 + 0000000000000000b
  88.       76 010A  0261 R                   gdt2        descriptor  <cseg_leng,,,code_seg_access,>
  89.       77 010C  0000                     
  90.       78 010E  00                       
  91.       79 010F  9B                       
  92.       80 0110  0000                     
  93.       81                                
  94.       82 = 0010                         cs_data     EQU  (($-gdt)/8)*8 + 0000000000000000b
  95.       83 0112  0261 R                   gdt3        descriptor  <cseg_leng,,,data_seg_access,>
  96.       84 0114  0000                     
  97.       85 0116  00                       
  98.       86 0117  93                       
  99.       87 0118  0000                     
  100.       88                                
  101.       89 = 0018                         ss_desc     EQU  (($-gdt)/8)*8 + 0000000000000000b
  102.       90 011A  FFFF                     gdt4        descriptor  <0FFFFh,,,data_seg_access,>
  103.       91 011C  0000                     
  104.       92 011E  00                       
  105.       93 011F  93                       
  106.       94 0120  0000                     
  107.       95                                
  108.       96 = 0020                         ds_desc     equ  (($-gdt)/8)*8 + 0000000000000000b
  109.       97 0122  FFFF                     gdt5        descriptor  <0FFFFh,,,data_seg_access,>
  110.       98 0124  0000                     
  111.       99 0126  00                       
  112.      100 0127  93                       
  113.      101 0128  0000                     
  114.      102                                
  115.      103 = 0028                         es_desc     equ  (($-gdt)/8)*8 + 0000000000000000b
  116.      104 012A  FFFF                     gdt6        descriptor  <0FFFFh,,,data_seg_access,>
  117.      105 012C  0000                     
  118.      106 012E  00                       
  119.      107 012F  93                       
  120.      108 0130  0000                     
  121.      109                                
  122.      110 = 0030                         gdt_leng    EQU  $-gdt
  123. Microsoft (R) Macro Assembler Version 5.10                  3/20/91 22:38:53
  124. Method 1                                                    Page     1-4
  125. Program entry point and data area                           
  126.  
  127.      111                                            PAGE
  128.      112                                ;--------------------------------------------------------------:
  129.      113                                ; Format of the Segment Selector Component:                    :
  130.      114                                ;                                                              :
  131.      115                                ; +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+            :
  132.      116                                ; |       INDEX                          +TI+ RPL +            :
  133.      117                                ; +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+            :
  134.      118                                ;                                                              :
  135.      119                                ; TI = Table Indicator (0=GDT, 1=LDT)                          :
  136.      120                                ; RPL = Requested Privelege Level (00 = highest; 11 = Lowest)  :
  137.      121                                ;--------------------------------------------------------------:
  138.      122                                ; Format of the Global Descriptor Table                        :
  139.      123                                ;                       .-----------+                +---> TI  :
  140.      124                                ;                       V           |                |++-> RPL :
  141.      125                                ;       GDT ==> +---------------+   |                |||       :
  142.      126                                ;               |   GDT_DESC    | --+   0000000000000000b      :
  143.      127                                ;               +---------------+                              :
  144.      128                                ;               |    CS_CODE    |       0000000000001000b      :
  145.      129                                ;               +---------------+                              :
  146.      130                                ;               |    CS_DATA    |       0000000000010000b      :
  147.      131                                ;               +---------------+                              :
  148.      132                                ;               |    SS_DESC    |       0000000000011000b      :
  149.      133                                ;               +---------------+                              :
  150.      134                                ;               |    DS_DESC    |       0000000000100000b      :
  151.      135                                ;               +---------------+                              :
  152.      136                                ;               |    ES_DESC    |       0000000000101000b      :
  153.      137                                ;               +---------------+                              :
  154.      138                                ;--------------------------------------------------------------:
  155.      139                                
  156.      140 0132  00                       i8259_1 db       ?              ; store for status of 8259 #1
  157.      141 0133  00                       i8259_2 db       ?              ; store for status of 8259 #2
  158.      142                                
  159.      143                                        SUBTTL Program Main
  160. Microsoft (R) Macro Assembler Version 5.10                  3/20/91 22:38:53
  161. Method 1                                                    Page     1-5
  162. Program Main                                                
  163.  
  164.      144                                        PAGE
  165.      145                                ;--------------------------------------------------------------:
  166.      146                                ; MAIN                                                         :
  167.      147                                ;--------------------------------------------------------------:
  168.      148                                        ASSUME   ds:cseg
  169.      149 0134                           main    PROC                    ;ES=DS=CS
  170.      150 0134  FC                               cld                     ;forward
  171.      151                                
  172.      152 0135  8C CA                            mov      dx,cs                  ;form 24bit address out of
  173.      153 0137  B9 0102 R                        mov      cx,offset gdt          ; CS:GDT
  174.      154 013A  E8 0237 R                        call     form_24bit_address
  175.      155 013D  89 16 0104 R                     mov      gdt1.base_lo_word,dx   ;DESC now points to gdt
  176.      156 0141  88 0E 0106 R                     mov      gdt1.base_hi_byte,cl
  177.      157                                
  178.      158 0145  8C CA                            mov      dx,cs                  ;form 24bit address out of
  179.      159 0147  33 C9                            xor      cx,cx                  ;  CS:0000
  180.      160 0149  E8 0237 R                        call     form_24bit_address
  181.      161 014C  89 16 010C R                     mov      gdt2.base_lo_word,dx   ;CS_CODE now points to
  182.      162 0150  88 0E 010E R                     mov      gdt2.base_hi_byte,cl   ; CSEG as a code segment
  183.      163 0154  89 16 0114 R                     mov      gdt3.base_lo_word,dx   ;CS_DATA now points to
  184.      164 0158  88 0E 0116 R                     mov      gdt3.base_hi_byte,cl   ; CSEG as a data segment
  185.      165                                
  186.      166 015C  8C D2                            mov      dx,ss                  ;form 24bit address out of
  187.      167 015E  33 C9                            xor      cx,cx                  ; SS:0000
  188.      168 0160  E8 0237 R                        call     form_24bit_address
  189.      169 0163  89 16 011C R                     mov      gdt4.base_lo_word,dx   ;SS_DESC now points to
  190.      170 0167  88 0E 011E R                     mov      gdt4.base_hi_byte,cl   ; stack segment
  191.      171                                
  192.      172 016B  2E: 0F 01 16 0102 R              lgdt     DWORD PTR Cs:gdt       ;Load the GDTR
  193. prot4.ASM(142): warning A4057: Illegal size for operand
  194.      173                                
  195.      174 0171  B4 DF                            mov      ah,enable_bit20        ;gate address bit 20 on
  196.      175 0173  E8 0215 R                        call     gate_a20
  197.      176 0176  0A C0                            or       al,al                  ; was the command accepted?
  198.      177 0178  74 2E                            jz       m_10                   ; go if yes
  199.      178 017A  BA 0183 R                        mov      dx,offset gate_failure ;print error msg
  200.      179 017D  B4 09                            mov      ah,9                   ; and terminate
  201.      180 017F  CD 21                            int      21h
  202.      181 0181  CD 20                            int      20h
  203.      182                                
  204.      183 0183  41 64 64 72 65 73        gate_failure     db   "Address line A20 failed to Gate open$"
  205.      184       73 20 6C 69 6E 65        
  206.      185       20 41 32 30 20 66        
  207.      186       61 69 6C 65 64 20        
  208.      187       74 6F 20 47 61 74        
  209.      188       65 20 6F 70 65 6E        
  210.      189       24                       
  211.      190                                
  212.      191 01A8  FA                       m_10:   cli                             ;No interrupts
  213.      192                                
  214.      193 01A9  E4 21                            in       al,inta01              ;get status of Int Controller #1
  215.      194 01AB  A2 0132 R                        mov      i8259_1,al
  216.      195 01AE  E4 A1                            in       al,intb01              ;get status of Int Controller #2
  217.      196 01B0  A2 0133 R                        mov      i8259_2,al
  218.      197                                
  219. Microsoft (R) Macro Assembler Version 5.10                  3/20/91 22:38:53
  220. Method 1                                                    Page     1-6
  221. Program Main                                                
  222.  
  223.      198                                        ASSUME   ds:bios_data_seg
  224.      199 01B3  BA ---- R                        mov      dx,bios_data_seg       ;Real Mode Return address
  225.      200 01B6  8E DA                            mov      ds,dx
  226.      201 01B8  8C 0E 0069 R                     mov      io_rom_seg,cs
  227.      202 01BC  C7 06 0067 R 024B R              mov      io_rom_init,offset real
  228.      203                                
  229.      204 01C2  B0 0F                            mov      al,shut_down           ;Set shutdown byte
  230.      205 01C4  E6 70                            out      cmos_port,al           ; to shut down x05.
  231.      206 01C6  EB 00                            jmp      short  $+2             ;I/O delay
  232.      207 01C8  B0 05                            mov      al,5
  233.      208 01CA  E6 71                            out      cmos_port+1,al
  234.      209                                
  235.      210 01CC  B8 0001                          mov      ax,virtual_enable      ;machine status word needed to
  236.      211 01CF  0F 01 F0                         lmsw     ax                     ;switch to virtual mode
  237.      212                                        jumpfar m_20,cs_code            ;Must purge prefetch queue
  238.      213 01D2  EA                    1          db         0EAh 
  239.      214 01D3  01D7 R                1          dw         (offset m_20) 
  240.      215 01D5  0008                  1          dw         cs_code 
  241.      216                                
  242.      217 01D7                           m_20:   ASSUME   ds:cseg                ;IN VIRTUAL MODE ...
  243.      218 01D7  B8 0018                          mov      ax,ss_desc             ;stack segment selector
  244.      219 01DA  8E D0                            mov      ss,ax                  ;user's ss+sp is not a descriptor
  245.      220                                
  246.      221 01DC  B8 0010                          mov      ax,cs_data
  247.      222 01DF  8E D8                            mov      ds,ax                  ;DS = CSEG as data
  248.      223                                
  249.      224 01E1  C7 06 0124 R 8000                mov      gdt5.base_lo_word,8000h  ;use 8000 for COLOR
  250.      225 01E7  C6 06 0126 R 0B                  mov      gdt5.base_hi_byte,0Bh
  251.      226 01EC  C7 06 012C R 8000                mov      gdt6.base_lo_word,8000h
  252.      227 01F2  C6 06 012E R 0B                  mov      gdt6.base_hi_byte,0Bh
  253.      228                                
  254.      229 01F7  B8 0020                          mov      ax,ds_desc
  255.      230 01FA  8E D8                            mov      ds,ax
  256.      231 01FC  B8 0028                          mov      ax,es_desc
  257.      232 01FF  8E C0                            mov      es,ax
  258.      233 0201  B9 07D0                          mov      cx,80*25
  259.      234 0204  33 F6                            xor      si,si
  260.      235 0206  33 FF                            xor      di,di
  261.      236 0208  AD                       m_30:   lodsw
  262.      237 0209  B4 65                            mov      ah,65h                 ;attribute reverse video
  263.      238 020B  AB                               stosw
  264.      239 020C  E2 FA                            loop     m_30
  265.      240                                
  266.      241 020E  B0 FE                            mov      al,shut_cmd            ;shutdown cmd
  267.      242 0210  E6 64                            out      status_port,al         ;get back into REAL mode
  268.      243 0212  F4                       m_40:   hlt
  269.      244 0213  EB FD                            jmp      short m_40
  270.      245                                
  271.      246                                        SUBTTL   Gate A20
  272. Microsoft (R) Macro Assembler Version 5.10                  3/20/91 22:38:53
  273. Method 1                                                    Page     1-7
  274. Gate A20                                                    
  275.  
  276.      247                                        PAGE
  277.      248                                ;--------------------------------------------------------------:
  278.      249                                ; GATE_A20                                                     :
  279.      250                                ; This routine controls a signal which gates address bit 20.   :
  280.      251                                ; The gate A20 signal is an output of the 8042 slave processor.:
  281.      252                                ; Address bit 20 should be gated on before entering protected  :
  282.      253                                ; mode.  It should be gated off after entering real mode from  :
  283.      254                                ; protected mode.                                              :
  284.      255                                ; Input:  (AH)=0DDh addr bit 20 gated off (A20 always 0)       :
  285.      256                                ;         (AH)=0DFh addr bit 20 gated on  (286 controls A20)   :
  286.      257                                ; Output: (AL)=0 operation successful.  8042 has accepted cmd  :
  287.      258                                ;         (AL)=2 Failure -- 8042 unable to accept command.     :
  288.      259                                ;--------------------------------------------------------------:
  289.      260 0215                           gate_a20  PROC
  290.      261 0215  FA                               cli                             ;disable ints while using 8042
  291.      262 0216  E8 022C R                        call   empty_8042               ;insure 8042 input buffer empty
  292.      263 0219  75 10                            jnz    gate_a20_01              ;ret if 8042 unable to accept cmd
  293.      264 021B  B0 D1                            mov    al,0D1h                  ;8042 command to write output port
  294.      265 021D  E6 64                            out    status_port,al           ;output cmd to 8042
  295.      266 021F  E8 022C R                        call   empty_8042               ;wait for 8042 to accept command
  296.      267 0222  75 07                            jnz    gate_a20_01              ;ret if 8042 unable to accept cmd
  297.      268 0224  8A C4                            mov    al,ah                    ;8042 port data
  298.      269 0226  E6 60                            out    port_a,al                ;output port data to 8042
  299.      270 0228  E8 022C R                        call   empty_8042               ;wait for 8042 to port data
  300.      271 022B                           gate_a20_01:
  301.      272 022B  C3                               ret
  302.      273 022C                           gate_a20  ENDP
  303.      274                                ;--------------------------------------------------------------:
  304.      275                                ; EMPTY_8042                                                   :
  305.      276                                ; This routine waits for the 8042 buffer to empty              :
  306.      277                                ; Input:  None                                                 :
  307.      278                                ; Output: (AL)=0 8042 input buffer empty (ZF=1)                :
  308.      279                                ;         (AL)=2 Time out, 8042 buffer full (ZF=0)             :
  309.      280                                ;--------------------------------------------------------------:
  310.      281 022C                           empty_8042  PROC
  311.      282 022C  51                               push   cx                       ;save CX
  312.      283 022D  2B C9                            sub    cx,cx                    ;CX=0 will be the time out value
  313.      284 022F                           empty_8042_01:
  314.      285 022F  E4 64                            in     al,status_port           ;read 8042 status port
  315.      286 0231  24 02                            and    al,00000010b             ;test input buffer full flag (D1)
  316.      287 0233  E0 FA                            loopnz empty_8042_01            ;loop until input buffer empty
  317.      288                                                                        ; or time out
  318.      289 0235  59                               pop    cx                       ;restore CX
  319.      290 0236  C3                               ret
  320.      291 0237                           empty_8042  ENDP
  321.      292                                
  322.      293                                        SUBTTL form_24bit_address
  323. Microsoft (R) Macro Assembler Version 5.10                  3/20/91 22:38:53
  324. Method 1                                                    Page     1-8
  325. form_24bit_address                                          
  326.  
  327.      294                                        PAGE
  328.      295                                ;--------------------------------------------------------------:
  329.      296                                ; FORM_24BIT_ADDRESS                                           :
  330.      297                                ;    Input:  DX has some segment                               :
  331.      298                                ;            CX has some offset                                :
  332.      299                                ;    Output: DX has base_lo_word                               :
  333.      300                                ;            CL has base_hi_byte                               :
  334.      301                                ;--------------------------------------------------------------:
  335.      302 0237                           form_24bit_address  PROC
  336.      303 0237  50                               push   ax
  337.      304                                             ;DX == s15 s14 s13 s12 s11 ... s04 s03 s02 s01 s00
  338.      305 0238  C1 C2 04                         rol    dx,4     
  339.      306                                             ;DX == s11 ... s04 s03 s02 s01 s00 s15 s14 s13 s12
  340.      307 023B  8B C2                            mov    ax,dx
  341.      308                                             ;AX == s11 ... s04 s03 s02 s01 s00 s15 s14 s13 s12
  342.      309 023D  80 E2 F0                         and    dl,0F0h
  343.      310                                             ;DX == s11 ... s04 s03 s02 s01 s00   0   0   0   0
  344.      311 0240  25 000F                          and    ax,0Fh
  345.      312                                             ;AX ==   0 ...   0   0   0   0   0 s15 s14 s13 s12
  346.      313 0243  03 D1                            add    dx,cx                    ;form_24bit_address
  347.      314 0245  8B C8                            mov    cx,ax                    ;get base_hi_byte in CL
  348.      315 0247  12 CD                            adc    cl,ch                    ;carry in (CH=0)
  349.      316 0249  58                               pop    ax
  350.      317 024A  C3                               ret
  351.      318 024B                           form_24bit_address ENDP
  352.      319                                
  353.      320                                        SUBTTL     Real Mode re-entry point.
  354. Microsoft (R) Macro Assembler Version 5.10                  3/20/91 22:38:53
  355. Method 1                                                    Page     1-9
  356. Real Mode re-entry point.                                   
  357.  
  358.      321                                        PAGE
  359.      322                                        ASSUME ds:cseg                  ;IN REAL MODE ...
  360.      323                                
  361.      324 024B  8C CA                    real:   mov    dx,cs
  362.      325 024D  8E DA                            mov    ds,dx                    ;DS = CS
  363.      326 024F  B4 DD                            mov    ah,disable_bit20         ;gate address bit 20 on
  364.      327 0251  E8 0215 R                        call   gate_a20
  365.      328 0254  A0 0132 R                        mov    al,i8259_1
  366.      329 0257  E6 21                            out    inta01,al                ;set status of Int Controller #1
  367.      330 0259  A0 0133 R                        mov    al,i8259_2
  368.      331 025C  E6 A1                            out    intb01,al                ;set status of Int Controller #2
  369.      332                                
  370.      333 025E  FB                               sti                             ;turn the interrupts on
  371.      334 025F  CD 20                            int    20h                      ;back to DOS
  372.      335                                
  373.      336 0261                           main       ENDP
  374.      337 = 0261                         cseg_leng  EQU $
  375.      338 0261                           cseg       ENDS
  376.      339                                           END  start
  377.  
  378. Microsoft (R) Macro Assembler Version 5.10                  3/20/91 22:38:53
  379. Method 1                                                    Symbols-1
  380.  
  381.  
  382. Macros:
  383.  
  384.                 N a m e                 Lines
  385.  
  386. jumpfar  . . . . . . . . . . . .           3
  387.  
  388. Structures and Records:
  389.  
  390.                 N a m e                 Width   # fields
  391.                                         Shift   Width   Mask    Initial
  392.  
  393. descriptor . . . . . . . . . . .        0008    0005
  394.   seg_limit  . . . . . . . . . .        0000
  395.   base_lo_word . . . . . . . . .        0002
  396.   base_hi_byte . . . . . . . . .        0004
  397.   access_rights  . . . . . . . .        0005
  398.  
  399. Segments and Groups:
  400.  
  401.                 N a m e                 Length   Align  Combine Class
  402.  
  403. bios_data_seg  . . . . . . . . .        006B    AT      0040    
  404. cseg . . . . . . . . . . . . . .        0261    PARA    PUBLIC  'code'
  405.  
  406. Symbols:            
  407.  
  408.                 N a m e                 Type     Value   Attr
  409.  
  410. cmos_port  . . . . . . . . . . .        NUMBER  0070    
  411. code_seg_access  . . . . . . . .        NUMBER  009B    
  412. cs_code  . . . . . . . . . . . .        NUMBER  0008    
  413. cs_data  . . . . . . . . . . . .        NUMBER  0010    
  414. cseg_leng  . . . . . . . . . . .        NEAR    0261    cseg
  415.  
  416. data_seg_access  . . . . . . . .        NUMBER  0093    
  417. disable_bit20  . . . . . . . . .        NUMBER  00DD    
  418. ds_desc  . . . . . . . . . . . .        NUMBER  0020    
  419.  
  420. empty_8042 . . . . . . . . . . .        N PROC  022C    cseg    Length = 000B
  421. empty_8042_01  . . . . . . . . .        L NEAR  022F    cseg
  422. enable_bit20 . . . . . . . . . .        NUMBER  00DF    
  423. es_desc  . . . . . . . . . . . .        NUMBER  0028    
  424.  
  425. form_24bit_address . . . . . . .        N PROC  0237    cseg    Length = 0014
  426.  
  427. gate_a20 . . . . . . . . . . . .        N PROC  0215    cseg    Length = 0017
  428. gate_a20_01  . . . . . . . . . .        L NEAR  022B    cseg
  429. gate_failure . . . . . . . . . .        L BYTE  0183    cseg
  430. gdt  . . . . . . . . . . . . . .        L DWORD 0102    cseg
  431. gdt1 . . . . . . . . . . . . . .        L QWORD 0102    cseg
  432. gdt2 . . . . . . . . . . . . . .        L QWORD 010A    cseg
  433. gdt3 . . . . . . . . . . . . . .        L QWORD 0112    cseg
  434. gdt4 . . . . . . . . . . . . . .        L QWORD 011A    cseg
  435. gdt5 . . . . . . . . . . . . . .        L QWORD 0122    cseg
  436. Microsoft (R) Macro Assembler Version 5.10                  3/20/91 22:38:53
  437. Method 1                                                    Symbols-2
  438.  
  439.  
  440. gdt6 . . . . . . . . . . . . . .        L QWORD 012A    cseg
  441. gdt_desc . . . . . . . . . . . .        NUMBER  0000    
  442. gdt_leng . . . . . . . . . . . .        NUMBER  0030    
  443.  
  444. i8259_1  . . . . . . . . . . . .        L BYTE  0132    cseg
  445. i8259_2  . . . . . . . . . . . .        L BYTE  0133    cseg
  446. inta01 . . . . . . . . . . . . .        NUMBER  0021    
  447. intb01 . . . . . . . . . . . . .        NUMBER  00A1    
  448. io_rom_init  . . . . . . . . . .        L WORD  0067    bios_data_seg
  449. io_rom_seg . . . . . . . . . . .        L WORD  0069    bios_data_seg
  450.  
  451. m_10 . . . . . . . . . . . . . .        L NEAR  01A8    cseg
  452. m_20 . . . . . . . . . . . . . .        L NEAR  01D7    cseg
  453. m_30 . . . . . . . . . . . . . .        L NEAR  0208    cseg
  454. m_40 . . . . . . . . . . . . . .        L NEAR  0212    cseg
  455. main . . . . . . . . . . . . . .        N PROC  0134    cseg    Length = 012D
  456.  
  457. port_a . . . . . . . . . . . . .        NUMBER  0060    
  458.  
  459. real . . . . . . . . . . . . . .        L NEAR  024B    cseg
  460.  
  461. shut_cmd . . . . . . . . . . . .        NUMBER  00FE    
  462. shut_down  . . . . . . . . . . .        NUMBER  000F    
  463. ss_desc  . . . . . . . . . . . .        NUMBER  0018    
  464. start  . . . . . . . . . . . . .        L NEAR  0100    cseg
  465. status_port  . . . . . . . . . .        NUMBER  0064    
  466.  
  467. virtual_enable . . . . . . . . .        NUMBER  0001    
  468.  
  469. @Cpu . . . . . . . . . . . . . .        TEXT  1415              
  470. @FileName  . . . . . . . . . . .        TEXT  prot4             
  471. @Version . . . . . . . . . . . .        TEXT  510               
  472.  
  473.  
  474.     300 Source  Lines
  475.     303 Total   Lines
  476.      62 Symbols
  477.  
  478.   46452 Bytes symbol space free
  479.  
  480.       1 Warning Errors
  481.       0 Severe  Errors
  482.