Annotation of sbbs/mswait/mswait.lst, revision 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.