Turbo Assembler Version 4.0 17/11/04 09:05:53 Page 1 delays.asm DELAYS for IBM PC/XT/AT 1 2 3 ;*********************************************** 4 ; REV: V1.0 5/30/1988 5 ; REV: V1.1 11/20/2000 AZ 6 ; REV: V1.2 10/06/2003 AZ 7 ; EXPRO-40 ASSEMBLY SUBROUTINES 8 ;*********************************************** 9 10 PUBLIC _initclk 11 12 PUBLIC _dly50m, _dly20m, _dly10m 13 PUBLIC _dly5m, _dly2m, _dly1m 14 PUBLIC _dly500u,_dly200u,_dly100u 15 PUBLIC _dly50u, _dly20u, _dly10u 16 PUBLIC _dly1u 17 18 PUBLIC _FACT1U 19 PUBLIC _FACT10U, _FACT20U, _FACT50U 20 PUBLIC _FACT100U,_FACT200U,_FACT500U 21 PUBLIC _FACT1M, _FACT2M, _FACT5M 22 PUBLIC _FACT10M, _FACT20M, _FACT50M 23 24 DGROUP GROUP _DATA 25 26 0000 _DATA SEGMENT WORD PUBLIC 'DATA' 27 28 ASSUME DS:DGROUP 29 30 0000 ???? _FACT1U DW ? 31 0002 ???? _FACT10U DW ? 32 0004 ???? _FACT20U DW ? 33 0006 ???? _FACT50U DW ? 34 0008 ???? _FACT100U DW ? 35 000A ???? _FACT200U DW ? 36 000C ???? _FACT500U DW ? 37 000E ???? _FACT1M DW ? 38 0010 ???? _FACT2M DW ? 39 0012 ???? _FACT5M DW ? 40 0014 ???? _FACT10M DW ? 41 0016 ???? _FACT20M DW ? 42 0018 ???? _FACT50M DW ? 43 44 001A ???? TMHI DW ? 45 001C ???? TMLO DW ? 46 47 001E _DATA ENDS 48 49 ;============================================== 50 51 52 0000 _TEXT SEGMENT BYTE PUBLIC 'CODE' 53 ASSUME CS:_TEXT 54 55 _?SCOPE EQU FAR 56 57 Turbo Assembler Version 4.0 17/11/04 09:05:53 Page 2 delays.asm DELAYS for IBM PC/XT/AT 58 ; CHECK SYSTEM OSC BY CHECKING LOOP COUNT IN 59 ; BETWEEN TWO TIMER INTERRUPTS (~18.2HZ) 60 ; 61 ; TIMER OSC 14.31818 MHZ/12 = 1.193166 MHZ = 0.838US 62 ; TIMER INT 18.206507 HZ = 54925.4 US 63 ; 64 65 0000 _initclk PROC _?SCOPE 66 67 0000 32 E4 XOR AH,AH 68 0002 CD 1A INT 1AH ; READ TIMER 69 0004 89 0E 001Ar MOV DGROUP:TMHI,CX ; store current value 70 0008 89 16 001Cr MOV DGROUP:TMLO,DX 71 72 000C 32 E4 WAITINT: XOR AH,AH 73 000E CD 1A INT 1AH ; READ TIMER 74 0010 3B 16 001Cr CMP DX,DGROUP:TMLO ; compare with previous 75 0014 75 06 JNZ CHKCK1 76 0016 3B 0E 001Ar CMP CX,DGROUP:TMHI 77 001A 74 F0 JZ WAITINT 78 79 ; TIMER has advanced 80 81 001C 89 0E 001Ar CHKCK1: MOV DGROUP:TMHI,CX ; store current value 82 0020 89 16 001Cr MOV DGROUP:TMLO,DX 83 0024 33 DB XOR BX,BX 84 85 0026 32 E4 CHKCK2: XOR AH,AH 86 0028 CD 1A INT 1AH ; READ TIMER 87 002A 3B 16 001Cr CMP DX,DGROUP:TMLO 88 002E 75 0B JNZ CHKCK3 89 0030 3B 0E 001Ar CMP CX,DGROUP:TMHI 90 0034 75 05 JNZ CHKCK3 91 0036 90 NOP 92 0037 90 NOP 93 0038 43 INC BX 94 0039 EB EB JMP SHORT CHKCK2 95 96 003B 8B C3 CHKCK3: MOV AX,BX 97 003D 50 PUSH AX 98 003E A3 0018r MOV DGROUP:_FACT50M,AX ;50ms 99 0041 33 D2 XOR DX,DX 100 0043 BB 000A MOV BX,10 101 0046 F7 F3 DIV BX 102 0048 A3 0012r MOV DGROUP:_FACT5M,AX ;5ms 103 004B 33 D2 XOR DX,DX 104 004D BB 000A MOV BX,10 105 0050 F7 F3 DIV BX 106 0052 A3 000Cr MOV DGROUP:_FACT500U,AX ;500us 107 0055 33 D2 XOR DX,DX 108 0057 BB 000A MOV BX,10 109 005A F7 F3 DIV BX 110 005C A3 0006r MOV DGROUP:_FACT50U,AX ;50us 111 112 005F 58 POP AX 113 0060 50 PUSH AX 114 0061 33 D2 XOR DX,DX Turbo Assembler Version 4.0 17/11/04 09:05:53 Page 3 delays.asm DELAYS for IBM PC/XT/AT 115 0063 BB 0005 MOV BX,5 116 0066 F7 F3 DIV BX 117 0068 A3 0014r MOV DGROUP:_FACT10M,AX ;10ms 118 006B 33 D2 XOR DX,DX 119 006D BB 000A MOV BX,10 120 0070 F7 F3 DIV BX 121 0072 A3 000Er MOV DGROUP:_FACT1M,AX ;1ms 122 0075 33 D2 XOR DX,DX 123 0077 BB 000A MOV BX,10 124 007A F7 F3 DIV BX 125 007C A3 0008r MOV DGROUP:_FACT100U,AX ;100us 126 007F 33 D2 XOR DX,DX 127 0081 BB 000A MOV BX,10 128 0084 F7 F3 DIV BX 129 0086 A3 0002r MOV DGROUP:_FACT10U,AX ;10us 130 0089 33 D2 XOR DX,DX 131 008B BB 000A MOV BX,10 132 008E F7 F3 DIV BX 133 0090 A3 0000r MOV DGROUP:_FACT1U,AX ;1us 134 135 0093 58 POP AX 136 0094 BB 0002 MOV BX,2 137 0097 F7 E3 MUL BX 138 0099 BB 0005 MOV BX,5 139 009C F7 F3 DIV BX 140 009E A3 0016r MOV DGROUP:_FACT20M,AX ;20ms 141 00A1 33 D2 XOR DX,DX 142 00A3 BB 000A MOV BX,10 143 00A6 F7 F3 DIV BX 144 00A8 A3 0010r MOV DGROUP:_FACT2M,AX ;2ms 145 00AB 33 D2 XOR DX,DX 146 00AD BB 000A MOV BX,10 147 00B0 F7 F3 DIV BX 148 00B2 A3 000Ar MOV DGROUP:_FACT200U,AX ;200us 149 00B5 33 D2 XOR DX,DX 150 00B7 BB 000A MOV BX,10 151 00BA F7 F3 DIV BX 152 00BC A3 0004r MOV DGROUP:_FACT20U,AX ;20us 153 154 00BF CB RET 155 156 00C0 _initclk ENDP 157 158 ;------------------------------------------- 159 ; ALL DELAY LOOP 160 ; 161 00C0 _dly50m PROC _?SCOPE 162 00C0 8B 1E 0018r MOV BX,DGROUP:_FACT50M 163 00C4 EB 48 JMP SHORT TMDLY 164 00C6 _dly50m ENDP 165 166 00C6 _dly20m PROC _?SCOPE 167 00C6 8B 1E 0016r MOV BX,DGROUP:_FACT20M 168 00CA EB 42 JMP SHORT TMDLY 169 00CC _dly20m ENDP 170 171 00CC _dly10m PROC _?SCOPE Turbo Assembler Version 4.0 17/11/04 09:05:53 Page 4 delays.asm DELAYS for IBM PC/XT/AT 172 00CC 8B 1E 0014r MOV BX,DGROUP:_FACT10M 173 00D0 EB 3C JMP SHORT TMDLY 174 00D2 _dly10m ENDP 175 176 00D2 _dly5m PROC _?SCOPE 177 00D2 8B 1E 0012r MOV BX,DGROUP:_FACT5M 178 00D6 EB 36 JMP SHORT TMDLY 179 00D8 _dly5m ENDP 180 181 00D8 _dly2m PROC _?SCOPE 182 00D8 8B 1E 0010r MOV BX,DGROUP:_FACT2M 183 00DC EB 30 JMP SHORT TMDLY 184 00DE _dly2m ENDP 185 186 00DE _dly1m PROC _?SCOPE 187 00DE 8B 1E 000Er MOV BX,DGROUP:_FACT1M 188 00E2 EB 2A JMP SHORT TMDLY 189 00E4 _dly1m ENDP 190 191 00E4 _dly500u PROC _?SCOPE 192 00E4 8B 1E 000Cr MOV BX,DGROUP:_FACT500U 193 00E8 EB 24 JMP SHORT TMDLY 194 00EA _dly500u ENDP 195 196 00EA _dly200u PROC _?SCOPE 197 00EA 8B 1E 000Ar MOV BX,DGROUP:_FACT200U 198 00EE EB 1E JMP SHORT TMDLY 199 00F0 _dly200u ENDP 200 201 00F0 _dly100u PROC _?SCOPE 202 00F0 8B 1E 0008r MOV BX,DGROUP:_FACT100U 203 00F4 EB 18 JMP SHORT TMDLY 204 00F6 _dly100u ENDP 205 206 00F6 _dly50u PROC _?SCOPE 207 00F6 8B 1E 0006r MOV BX,DGROUP:_FACT50U 208 00FA EB 12 JMP SHORT TMDLY 209 00FC _dly50u ENDP 210 211 00FC _dly20u PROC _?SCOPE 212 00FC 8B 1E 0004r MOV BX,DGROUP:_FACT20U 213 0100 EB 0C JMP SHORT TMDLY 214 0102 _dly20u ENDP 215 216 0102 _dly10u PROC _?SCOPE 217 0102 8B 1E 0002r MOV BX,DGROUP:_FACT10U 218 0106 EB 06 JMP SHORT TMDLY 219 0108 _dly10u ENDP 220 221 0108 _dly1u PROC _?SCOPE 222 0108 8B 1E 0000r MOV BX,DGROUP:_FACT1U 223 010C EB 00 JMP SHORT TMDLY 224 010E _dly1u ENDP 225 226 010E TMDLY PROC _?SCOPE 227 010E 43 INC BX 228 010F 90 TMDLY1: NOP Turbo Assembler Version 4.0 17/11/04 09:05:53 Page 5 delays.asm DELAYS for IBM PC/XT/AT 229 0110 90 NOP 230 0111 4B DEC BX 231 0112 74 0F JZ TMWAITQ 232 0114 32 E4 XOR AH,AH 233 0116 CD 1A INT 1AH 234 0118 3B 0E 001Ar CMP CX,DGROUP:TMHI 235 011C 90 NOP 236 011D 3B 16 001Cr CMP DX,DGROUP:TMLO 237 0121 EB EC JMP SHORT TMDLY1 238 0123 CB TMWAITQ: RET 239 240 0124 TMDLY ENDP 241 242 0124 _TEXT ENDS 243 244 END Turbo Assembler Version 4.0 17/11/04 09:05:53 Page 6 Symbol Table DELAYS for IBM PC/XT/AT Symbol Name Type Value ??date Text "17/11/04" ??filename Text "delays " ??time Text "09:05:53" ??version Number 0400 @Cpu Text 0101H @FileName Text delays @WordSize Text 2 @curseg Text _TEXT CHKCK1 Near _TEXT:001C CHKCK2 Near _TEXT:0026 CHKCK3 Near _TEXT:003B TMDLY Far _TEXT:010E TMDLY1 Near _TEXT:010F TMHI Word _DATA:001A TMLO Word _DATA:001C TMWAITQ Near _TEXT:0123 WAITINT Near _TEXT:000C _?SCOPE Alias FAR _FACT100U Word _DATA:0008 _FACT10M Word _DATA:0014 _FACT10U Word _DATA:0002 _FACT1M Word _DATA:000E _FACT1U Word _DATA:0000 _FACT200U Word _DATA:000A _FACT20M Word _DATA:0016 _FACT20U Word _DATA:0004 _FACT2M Word _DATA:0010 _FACT500U Word _DATA:000C _FACT50M Word _DATA:0018 _FACT50U Word _DATA:0006 _FACT5M Word _DATA:0012 _dly100u Far _TEXT:00F0 _dly10m Far _TEXT:00CC _dly10u Far _TEXT:0102 _dly1m Far _TEXT:00DE _dly1u Far _TEXT:0108 _dly200u Far _TEXT:00EA _dly20m Far _TEXT:00C6 _dly20u Far _TEXT:00FC _dly2m Far _TEXT:00D8 _dly500u Far _TEXT:00E4 _dly50m Far _TEXT:00C0 _dly50u Far _TEXT:00F6 _dly5m Far _TEXT:00D2 _initclk Far _TEXT:0000 Groups & Segments Bit Size Align Combine Class DGROUP Group _DATA 16 001E Word Public DATA _TEXT 16 0124 Byte Public CODE