Annotation of sbbs/mswait/mswait.lst, revision 1.1.1.1

1.1       root        1: 
                      2: Microsoft Macro Assembler  Version 5.10                    7/22/93 04:16:00
                      3: mswait                                                      Page     1-1
                      4: 
                      5: 
                      6:                                ; MSWAIT: Wait up to 30000 milliseconds
                      7:                                ; July 1992, Steve D. @ Vertrauen 714 529-9547
                      8:                                
                      9:                                        setmod  %mm                     ;set memory model
                     10:                                        public  _mswait,_mswtyp
                     11:                                
                     12:                                        .data
                     13:  0000  00                      _mswtyp db      0                       ;system type for idle loop
                     14:  = 0001                                dosidl  equ     1                       ;use int 28h
                     15:  = 0002                                os2idl  equ     2                       ;use int 2fh function 1680h
                     16:                                        .code
                     17:  0000  00000000                        clkvct  dd      0                       ;saved int 1ch vector
                     18:  0004  00000000                        brkvct  dd      0                       ;saved int 1bh vector
                     19:  0008  0000                    waitct  dw      0                       ;local 8254 tick count
                     20:  000A  00                      cbrk    db      0                       ;ctrl-break key pressed
                     21:                                
                     22:  000B                          clkisr  proc                            ;interrupt 1ch (55ms tick) service routine
                     23:  000B  2E: FF 0E 0008 R                        dec     mw cs:waitct
                     24:  0010  2E: FF 2E 0000 R                        jmp     ml cs:clkvct            ;exec prior service routine
                     25:  0015                          clkisr  endp
                     26:                                
                     27:  0015                          brkisr  proc                            ;interrupt 1bh (ctrl-break) service routine
                     28:  0015  2E: C6 06 000A R FF             mov     mb cs:cbrk,-1           ;ctrl-break depressed, set abort flag
                     29:  001B  2E: FF 2E 0004 R                        jmp     ml cs:brkvct            ;exec prior service routine
                     30:  0020                          brkisr  endp
                     31:                                
                     32:  0020                          _mswait proc
                     33:  0020  55                              push    bp
                     34:  0021  8B EC                           mov     bp,sp
                     35:                                
                     36:  0023  A0 0000 R                       mov     al,mb _mswtyp
                     37:  0026  50                              push    ax                      ;wait type flag at [bp-2]
                     38:                                
                     39:  0027  06                              push    es
                     40:  0028  1E                              push    ds
                     41:                                
                     42:  0029  B8 351B                         mov     ax,351bh
                     43:  002C  CD 21                           int     21h                     ;get ctrl-break vector
                     44:  002E  2E: 89 1E 0004 R                        mov     mw cs:brkvct,bx
                     45:  0033  2E: 8C 06 0006 R                        mov     mw cs:brkvct+2,es       ;save old service routine address
                     46:                                
                     47:  0038  2E: C6 06 000A R 00             mov     mb cs:cbrk,0            ;clear abort flag
                     48:  003E  B4 25                           mov     ah,25h
                     49:  0040  0E                              push    cs
                     50:  0041  1F                              pop     ds                      ;data segment is now inaccessible
                     51:  0042  BA 0015 R                       mov     dx,os brkisr
                     52:  0045  CD 21                           int     21h                     ;set new interrupt service routine
                     53:                                
                     54:  0047  B8 7530                         mov     ax,30000                ;maximal wait
                     55:  004A  8B 56 06                                mov     dx,pb[bp]               ;wait time in milliseconds
                     56:  004D  3B C2                           cmp     ax,dx
                     57:  004F  72 01                           jc      @f
                     58:  0051  92                              xchg    ax,dx                   ;within range, use specification
                     59:  0052  33 D2                   @@:     xor     dx,dx                   ;milliseconds in dx:ax
                     60:  0054  2D 000A                         sub     ax,10                   ;0-64 yields 55
                     61:  0057  77 02                           ja      @f
                     62:  0059  8B C2                           mov     ax,dx                   ;must be at least 0
                     63:  005B  B9 0037                 @@:     mov     cx,55                   ;milliseconds per ctc interrupt
                     64:  005E  F7 F1                           div     cx
                     65: 
                     66: Microsoft Macro Assembler  Version 5.10                    7/22/93 04:16:00
                     67: mswait                                                      Page     1-2
                     68: 
                     69: 
                     70:  0060  2E: A3 0008 R                   mov     mw cs:waitct,ax         ;number of ctc interrupts to wait
                     71:                                
                     72:  0064  9C                              pushf                           ;detect cpu type
                     73:  0065  B8 4000                         mov     ax,4000h
                     74:  0068  50                              push    ax
                     75:  0069  9D                              popf
                     76:  006A  9C                              pushf
                     77:  006B  58                              pop     ax
                     78:  006C  9D                              popf
                     79:  006D  80 E4 C0                                and     ah,0c0h
                     80:  0070  78 7E                           js      msxt                    ;80186 or earlier
                     81:  0072  74 7C                           jz      msxt                    ;80286
                     82:                                
                     83:                                        .386                            ;80386
                     84:  0074  66| 60                          pushad
                     85:  0076  B8 2B01                         mov     ax,2b01h                ;set date (get desqview version)
                     86:  0079  B9 4445                         mov     cx,4445h                ;DE
                     87:  007C  BA 5351                         mov     dx,5351h                ;SQ
                     88:  007F  CD 21                           int     21h
                     89:  0081  F6 D0                           not     al                      ;zero if desqview not running
                     90:  0083  88 46 FF                                mov     mb -1[bp],al
                     91:                                
                     92:  0086  33 C9                           xor     cx,cx                   ;running count in cx
                     93:  0088  B8 0040                         mov     ax,40h
                     94:  008B  8E C0                           mov     es,ax
                     95:  008D  BB 006C                         mov     bx,6ch                  ;address bios clock
                     96:                                
                     97:  0090  26: 66| 8B 17           stwt:   mov     edx,ml es:[bx]
                     98:  0094  2E: F6 06 000A R FF     lpwt:   test    cs:cbrk,-1
                     99:  009A  75 44                           jnz     s mabt                  ;exit on ctrl-break
                    100:  009C  66| 52                          push    edx
                    101:  009E  F6 46 FF FF                     test    mb -1[bp],-1
                    102:  00A2  74 07                           jz      s @f                    ;not under desqview
                    103:  00A4  B8 1000                         mov     ax,1000h
                    104:  00A7  CD 15                           int     15h                     ;surrender time slice, desqview
                    105:  00A9  EB 0B                           jmp     s ckwt                  ;continue
                    106:  00AB  F6 46 FE 02             @@:     test    mb -2[bp],os2idl
                    107:  00AF  74 05                           jz      s ckwt                  ;no int 2fh call
                    108:  00B1  B8 1680                         mov     ax,1680h
                    109:  00B4  CD 2F                           int     2fh                     ;surrender time slice, os/2
                    110:  00B6  F6 46 FE 01             ckwt:   test    mb -2[bp],dosidl
                    111:  00BA  74 02                           jz      s @f                    ;no int 28h call
                    112:  00BC  CD 28                           int     28h                     ;idle
                    113:  00BE  66| 5A                  @@:     pop     edx
                    114:  00C0  26: 66| 8B 07                   mov     eax,ml es:[bx]
                    115:  00C4  66| 8B F0                       mov     esi,eax                 ;save latest clock value
                    116:  00C7  66| 2B C2                       sub     eax,edx
                    117:  00CA  74 C8                           jz      lpwt                    ;wait for clock change
                    118:  00CC  72 C2                           jc      stwt                    ;crossed midnight, reset
                    119:  00CE  66| 8B D6                       mov     edx,esi                 ;set most current value
                    120:  00D1  66| 83 F8 7F                    cmp     eax,7fh
                    121:  00D5  73 09                           jnc     s mabt                  ;swapped out more than 7 seconds
                    122:  00D7  03 C8                           add     cx,ax                   ;add to running total
                    123:  00D9  2E: 3B 0E 0008 R                        cmp     cx,cs:waitct            ;static maximal value
                    124:  00DE  76 B4                           jna     lpwt                    ;not expired, continue
                    125:                                
                    126:  00E0  66| 61                  mabt:   popad
                    127:  00E2  B8 0182                         mov     ax,386                  ;for test purposes
                    128:  00E5  F6 46 FF FF                     test    mb -1[bp],-1
                    129: 
                    130: Microsoft Macro Assembler  Version 5.10                    7/22/93 04:16:00
                    131: mswait                                                      Page     1-3
                    132: 
                    133: 
                    134:  00E9  74 39                           jz      s msex
                    135:  00EB  B8 2892                         mov     ax,10386
                    136:  00EE  EB 34                           jmp     s msex
                    137:                                
                    138:  00F0                          msxt:   .8086
                    139:  00F0  B8 351C                         mov     ax,351ch
                    140:  00F3  CD 21                           int     21h                     ;get int 1ch vector
                    141:  00F5  2E: 89 1E 0000 R                        mov     mw cs:clkvct,bx
                    142:  00FA  2E: 8C 06 0002 R                        mov     mw cs:clkvct+2,es       ;save old service routine address
                    143:                                
                    144:  00FF  B4 25                           mov     ah,25h
                    145:  0101  0E                              push    cs
                    146:  0102  1F                              pop     ds
                    147:  0103  BA 000B R                       mov     dx,os clkisr
                    148:  0106  CD 21                           int     21h                     ;set new interrupt service routine
                    149:                                
                    150:  0108  2E: F6 06 000A R FF     mswl:   test    cs:cbrk,-1
                    151:  010E  75 08                           jnz     @f                      ;exit on ctrl-break
                    152:  0110  2E: A1 0008 R                   mov     ax,cs:waitct
                    153:  0114  0B C0                           or      ax,ax
                    154:  0116  79 F0                           jns     mswl                    ;wait for negative count
                    155:                                
                    156:  0118  B8 251C                 @@:     mov     ax,251ch
                    157:  011B  2E: C5 16 0000 R                        lds     dx,cs:clkvct
                    158:  0120  CD 21                           int     21h                     ;restore old clock sr vector
                    159:  0122  33 C0                           xor     ax,ax                   ;return zero
                    160:  0124  50                      msex:   push    ax
                    161:  0125  B8 251B                         mov     ax,251bh
                    162:  0128  2E: C5 16 0004 R                        lds     dx,cs:brkvct
                    163:  012D  CD 21                           int     21h                     ;restore old ctrl-break sr vector
                    164:  012F  58                              pop     ax
                    165:  0130  1F                              pop     ds
                    166:  0131  07                              pop     es
                    167:  0132  5B                              pop     bx                      ;wait type flag
                    168:  0133  5D                              pop     bp
                    169:  0134  CB                              ret
                    170:  0135                          _mswait endp
                    171:                                        end
                    172: 
                    173: 
                    174: Microsoft Macro Assembler  Version 5.10                    7/22/93 04:16:00
                    175: mswait                                                      Symbols-1
                    176: 
                    177: 
                    178: Macros:
                    179: 
                    180:                N a m e                 Lines
                    181: 
                    182: .EOPG  . . . . . . . . . . . . .          4
                    183: .ILIST . . . . . . . . . . . . .          2
                    184: ASA  . . . . . . . . . . . . . .          1
                    185: ASTRUC . . . . . . . . . . . . .          6
                    186: ASYN . . . . . . . . . . . . . .          0
                    187: DA . . . . . . . . . . . . . . .          4
                    188: DBL  . . . . . . . . . . . . . .          2
                    189: DBWW . . . . . . . . . . . . . .          2
                    190: DSA  . . . . . . . . . . . . . .          4
                    191: DSB  . . . . . . . . . . . . . .          4
                    192: DSS  . . . . . . . . . . . . . .          8
                    193: DSTRUC . . . . . . . . . . . . .          8
                    194: DV . . . . . . . . . . . . . . .          5
                    195: INCL . . . . . . . . . . . . . .          5
                    196: SETMOD . . . . . . . . . . . . .          0
                    197: 
                    198: Segments and Groups:
                    199: 
                    200:                 N a m e                Size    Length   Align  Combine Class
                    201: 
                    202: DGROUP . . . . . . . . . . . . .       GROUP
                    203:   _DATA  . . . . . . . . . . . .       16 Bit  0001    WORD    PUBLIC  'DATA'
                    204: MSWAIT_TEXT  . . . . . . . . . .       16 Bit  0135    WORD    PUBLIC  'CODE'
                    205: 
                    206: Symbols:            
                    207: 
                    208:                 N a m e                Type     Value   Attr
                    209: 
                    210: AA . . . . . . . . . . . . . . .       TEXT  .model large              
                    211: 
                    212: BRKISR . . . . . . . . . . . . .       F PROC  0015    MSWAIT_TEXT     Length = 000B
                    213: BRKVCT . . . . . . . . . . . . .       L DWORD 0004    MSWAIT_TEXT
                    214: 
                    215: CBRK . . . . . . . . . . . . . .       L BYTE  000A    MSWAIT_TEXT
                    216: CKWT . . . . . . . . . . . . . .       L NEAR  00B6    MSWAIT_TEXT
                    217: CLKISR . . . . . . . . . . . . .       F PROC  000B    MSWAIT_TEXT     Length = 000A
                    218: CLKVCT . . . . . . . . . . . . .       L DWORD 0000    MSWAIT_TEXT
                    219: 
                    220: DOSIDL . . . . . . . . . . . . .       NUMBER  0001    
                    221: DS1  . . . . . . . . . . . . . .       TEXT  label byte                
                    222: DS2  . . . . . . . . . . . . . .       TEXT  label word                
                    223: DS4  . . . . . . . . . . . . . .       TEXT  label dword               
                    224: DS6  . . . . . . . . . . . . . .       TEXT  label fword               
                    225: DS8  . . . . . . . . . . . . . .       TEXT  label qword               
                    226: 
                    227: LISTON . . . . . . . . . . . . .       NUMBER  0001    
                    228: LPWT . . . . . . . . . . . . . .       L NEAR  0094    MSWAIT_TEXT
                    229: 
                    230: MABT . . . . . . . . . . . . . .       L NEAR  00E0    MSWAIT_TEXT
                    231: MB . . . . . . . . . . . . . . .       TEXT  byte ptr          
                    232: MDLC . . . . . . . . . . . . . .       TEXT  compact           
                    233: MDLH . . . . . . . . . . . . . .       TEXT  huge              
                    234: MDLL . . . . . . . . . . . . . .       TEXT  large             
                    235: MDLM . . . . . . . . . . . . . .       TEXT  medium            
                    236: 
                    237: Microsoft Macro Assembler  Version 5.10                    7/22/93 04:16:00
                    238: mswait                                                      Symbols-2
                    239: 
                    240: 
                    241: MDLS . . . . . . . . . . . . . .       TEXT  small             
                    242: ML . . . . . . . . . . . . . . .       TEXT  dword ptr         
                    243: MM . . . . . . . . . . . . . . .       TEXT  l         
                    244: MSEX . . . . . . . . . . . . . .       L NEAR  0124    MSWAIT_TEXT
                    245: MSWL . . . . . . . . . . . . . .       L NEAR  0108    MSWAIT_TEXT
                    246: MSXT . . . . . . . . . . . . . .       L NEAR  00F0    MSWAIT_TEXT
                    247: MW . . . . . . . . . . . . . . .       TEXT  word ptr          
                    248: 
                    249: OS . . . . . . . . . . . . . . .       TEXT  offset            
                    250: OS2IDL . . . . . . . . . . . . .       NUMBER  0002    
                    251: 
                    252: PB . . . . . . . . . . . . . . .       NUMBER  0006    
                    253: 
                    254: S  . . . . . . . . . . . . . . .       TEXT  short             
                    255: STWT . . . . . . . . . . . . . .       L NEAR  0090    MSWAIT_TEXT
                    256: 
                    257: WAITCT . . . . . . . . . . . . .       L WORD  0008    MSWAIT_TEXT
                    258: 
                    259: @0 . . . . . . . . . . . . . . .       L NEAR  0052    MSWAIT_TEXT
                    260: @1 . . . . . . . . . . . . . . .       L NEAR  005B    MSWAIT_TEXT
                    261: @2 . . . . . . . . . . . . . . .       L NEAR  00AB    MSWAIT_TEXT
                    262: @3 . . . . . . . . . . . . . . .       L NEAR  00BE    MSWAIT_TEXT
                    263: @4 . . . . . . . . . . . . . . .       L NEAR  0118    MSWAIT_TEXT
                    264: @CODE  . . . . . . . . . . . . .       TEXT  mswait_TEXT               
                    265: @CODESIZE  . . . . . . . . . . .       TEXT  1         
                    266: @CPU . . . . . . . . . . . . . .       TEXT  257               
                    267: @DATASIZE  . . . . . . . . . . .       TEXT  1         
                    268: @FILENAME  . . . . . . . . . . .       TEXT  mswait            
                    269: @VERSION . . . . . . . . . . . .       TEXT  510               
                    270: _mswait  . . . . . . . . . . . .       F PROC  0020    MSWAIT_TEXT     Global  Length = 0115
                    271: _mswtyp  . . . . . . . . . . . .       L BYTE  0000    _DATA   Global
                    272: 
                    273: 
                    274:     340 Source  Lines
                    275:     356 Total   Lines
                    276:      74 Symbols
                    277: 
                    278:   47118 + 348476 Bytes symbol space free
                    279: 
                    280:       0 Warning Errors
                    281:       0 Severe  Errors

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.