IBM 5150 PC Technical Reference (6025005, August, 1981) (PDF)
IBM 5150 PC Technical Reference (6025005, August, 1981) (PDF) IBM 5150 PC Technical Reference (6025005, August, 1981) (PDF)
LOC OBJ LINE SOURCE ~ F936 7403 5194 JZ W17 JUtlP IF TOO MANY RETRIES F938 E962FF 5195 JMP W4 JUMP IF NOT TOO MANY RETRIES F938 5196 10117: NO VALID DATA FOUND 5197 j------ NO DATA FROM CASSETTE ERROR, I.E. TIMEOUT 5198 F938 5E 5199 POP 51 RESTORE REGS F93C 59 5200 POP CX lRESTORE REGS F93D 58 5201 POP BX F93E 2B02 5202 SUB OX,OX ,ZERO NUMBER OF BYTES READ F940 8404 5203 HOV AH,04H ; TIME OUT ERROR I NO LEADER) F942 50 5O 1 F950 F5 5212 CHC F951 C3 5213 RET iFItUSHED 5214 READ_BLOCK ENOP 5215 ; ---------------------------------------- F952 5216 PROC NEAR 5217 PURPOSE: 5218 TO READ A BYTE FROM CASSETTE 5219 5220 ON EXIT REG AL CONTAINS READ DATA BYTE 5221 F952 53 5222 PUSH BX ,SAVE REGS BX,CX F953 51 5223 PUSH CX F954 BI08 52
LOC OBJ LINE SOURCE F97E EBF9 5268 "20 5269 ENDP 5270 ; ------------------------------------------ f9BO 5271 NEAR 5272 PURPOSE: 5273 TO COMPUTE TIME TIll ~EXT DATA 5274 TRANSITION (EDGE) 5275 5276 ; ON ENTRY: 5Z77 ; EDGE_CNT CONTAINS LAST EDGE COUNT 5278 5279 ; ON EXIT: 52&0 ; AX CONTAINS OLD LAST EDGE COUNT 5281 I BX CONTAlNS PULSE WIDTH {HALF Bn I 5282 ; ------------- ---------.--------------. F'eo 696400 5283 MOV ex. 100 j SET TIME TO WAn FOR BIT F983 BA266BOO 5284 MOV AH.LAST_VAl JGET PRESENT INPUT VALUE F987 5285 Nee: ~ Fm-H-BIT F987 E462 5286 IN AL.POIH_C ; INPUT DATA BIT f989 2410 5237 AND AL,OlOH ;MASK OFF EXTRANEOUS BITS F988 3AC4 5288 CMP AL,AH ;SAME AS BEFORE? FgeD ElFS 5269 LOOPE "22 ; LOOP TILL IT CHANGES F9SF A26BOO 5290 MOV LAST_VAL,AL JUPDATE LAST_VAL WITH NEW VALUE F992 BOOD 5291 MOV Al;O jREAD TIMER'S COUNTER eONHA.ND F9'94 E643 5292 OUT TIM_CTL,AL ; LATCH COUNTER F996 E440 5293 HI AL, TIMERO ;GET LS eYTe F998 8AEO 52'4 I10Y AH,Al ,SAVE IN Aft fY.,,,, 1:'"0 SUS IN Al,TIMERO ,GET HS BYTE F99C 8bC" 5296 XCHG Al,AH ,XCHG Al,AH F99E 8Bl£6700 5n7 MOV BX,EDGE_CNT ; BX GETS LAST EDGE COUNT F942 2B08 5298 SUB BX,AX ; SET BX EQUAL TO HALF BIT PERIOD F9"4 1\36700 5299 MOV EDGE_CNT ,AX ; UPDATE EDGE CO""'T; F9A7 Cl 5300 RET 5301 !fEAD_HALF_BIT ENDP 5302 ;--------------------_ ..._--_.._------------ F9A8 5303 PROC NEAR 5304 5305 ; WRITE 1 OR MORE 256 BYTE BLOCKS TO CASSETTE. 5306 THE OATA IS PADDED TO FILL OUT THE LAST 256 BYTE BLOCK. 5307 530S ; ON ENTRY: 5309 BX POINTS TO MEMORY BUFFER ADDRESS 5310 ex CONTAINS HUMBER OF BYTES TO WRITE 5311 ;:512 ; ott EXIT: 5313 BX POINTS 1 BYTE PAST LAST BYTE WRITT-EN TO CASSETTE 5314 ex IS ZERO 5315 ;------------------------------------------- F9AS 53 5316 PUSH ax F9.9 51 5317 PUSIt cx F9,u, E461 5318 IN AL,PORT_B ;DISABLE SPEAKER f9AC 24FO 53n AND AL,NOT 02H F9AE DeOI 5320 OR AL. 01H ENABLE TInER F980 E661 5321 OUT PORT_B.AL F962 BOB6 5322 MOV AL,OB6H SET UP TIMER .. - MODE 3 SQUARE WAVE F964 E643 $3,3 OUT TIM_CTLtAl F9B6 E8A600 5324 CALL BEGIN.OP ; START MOTOR AND DELAY F9B9 BeA004 5325 NOV AX,llS4 ; SET NORMAL BIT SIZE F98C E88500 5326 CALL "" J SET_TIMER F9BF MOOOS 5327 MOV CX.0800H ;SH CX FOR lEADER BYTE COUNT F9C2 5328 W23: ; WRITE LEADER F9C2 F9 53,9 STC ; WR ITE ONE BITS F9Cl E86800 5330 CALL Wl?ITE_BIT F9C6 EZFA 5331 LOOP "e> ; LOOP • TIL LEADER IS WRITTEN F9C8 F8 5332 CLC ;tRITE SYNC BIT to J F9C9 £86200 5333 CALL WRITE...8IT F9CC S9 5334 pop ex ;RESTORE REGS CX,BX FqCD 58 5335 POP BX F9CE B016 5336 MoV AL. 16M I WRITE SYH CHARACTER F900 E84400 5337 CALL WRITE_BYTE A-72
- Page 213 and 214: LaC OSJ LINE SOURCE E6EC eSOAOE E6E
- Page 215 and 216: LaC OBJ LINE SOURCE E7SF 1505 .402:
- Page 217 and 218: LaC OBJ LINE SOURCE 1659 ASSUME CS:
- Page 219 and 220: LOC OBJ LINE SOURCE E994 8E08 1798
- Page 221 and 222: LOC 08J LINE SOURCE £"91 474849 EA
- Page 223 and 224: LaC OBJ LINE SOURCE E890 E99700 E89
- Page 225 and 226: LOC 08J LINE SOURCE 2255 ;-- INT 13
- Page 227 and 228: LOC OS! LINE SOURCE 2407 ;------ DI
- Page 229 and 230: lOC OBJ LINE SOURCE (Eol 7438 fE03
- Page 231 and 232: LOC OBJ LINE SOURCE Ef'tD £67200 2
- Page 233 and 234: LOC OBJ LINE SOURCE 2870 I ~- -----
- Page 235 and 236: LOC (lBJ LINE SOURCE 3007 j --- INT
- Page 237 and 238: laC OBJ LINE SOURCE 3157 (AH}=6 SCR
- Page 239 and 240: lOC OBJ LINE SOURt.:E FOA43828ZDOAI
- Page 241 and 242: lOC OBJ LINE SOURCE FtC7 3458 VIDEO
- Page 243 and 244: LOC OBJ LINE SOURCE F260 750E f2:62
- Page 245 and 246: LOC OBJ LINE SOURCE F32B 06 3760 PU
- Page 247 and 248: LOC OBJ LINE SOURCE F3Cl 3910 NEAR
- Page 249 and 250: laC OBJ LINE SOURCE 1'460 80HfE F46
- Page 251 and 252: LOC OBJ LINE SOURCE F4FF BSFB 4213
- Page 253 and 254: LOC OBJ LINE SOURCE 4359 j------ IM
- Page 255 and 256: LOC OBJ LINE SOURCE F689 57 4511 PU
- Page 257 and 258: lOC OBJ LINE SOLIRCE 4662 THE 0 COL
- Page 259 and 260: LOC OBJ LINE SOURCE F7Cl 8AC4 F7e]
- Page 261 and 262: LaC OBJ LINE SOURCE F840 4967 EQUIP
- Page 263: LOC OBJ LINE SOURCE F8DA E304 5116
- Page 267 and 268: LOC OBJ LINE SOURCE H20 C3 5415 RET
- Page 269 and 270: LOC OBJ LINE SOURCE fC46 0030300000
- Page 271 and 272: LOC OBJ LINE SOURCE FEBS 833E6E0018
- Page 273 and 274: lOC OBJ LINE SOURCE 5866 ;.*.-•
- Page 275 and 276: A-82 NOTES
- Page 277 and 278: 8088 REGISTER MODEL AX: AH Al ACCUM
- Page 279 and 280: MEMORY SEGMENTATION MODEL LOGICAL
- Page 281 and 282: XCHG =Exchange RegisterImemory with
- Page 283 and 284: SBB = Subtract with borrow Reg./mem
- Page 285 and 286: AND = And Reg./memory and register
- Page 287 and 288: Indirect within segment 11111111 mo
- Page 289 and 290: 8088 CONDITIONAL TRANSFER OPERATION
- Page 291 and 292: BOBBINSTRUCTION SET MATRIX LO HI 0
- Page 293 and 294: INSTRUCTION SET INDEX Mnemonic Pag
- Page 295 and 296: VALUE AS CHARACTERS AS TEXT ATTRIBU
- Page 297 and 298: VALUE AS CHARACTERS AS TEXT ATTRIBU
- Page 299 and 300: VALUE AS CHARACTERS AS TEXT ATTRIBU
- Page 301 and 302: VALUE AS CHARACTERS AS TEXT ATTRIBU
- Page 303 and 304: VALUE AS CHARACTERS AS TEXT ATTRIBU
- Page 305 and 306: Character Set (OO-7F) Quick Referen
- Page 307 and 308: C-14 NOTES
- Page 309 and 310: SYSTEM BOARD (PROCESSOR AND SUPPORT
- Page 311 and 312: SYSTEM BOARD (DEVICE DECODES) I~ i
- Page 313 and 314: SYSTEM BOARD (ROS AND BUS DRIVER) ~
LOC OBJ LINE SOURCE<br />
F97E EBF9 5268 "20<br />
5269 ENDP<br />
5270 ; ------------------------------------------<br />
f9BO 5271 NEAR<br />
5272 PURPOSE:<br />
5273 TO COMPUTE TIME TIll ~EXT DATA<br />
5274 TRANSITION (EDGE)<br />
5275<br />
5276 ; ON ENTRY:<br />
5Z77 ; EDGE_CNT CONTAINS LAST EDGE COUNT<br />
5278<br />
5279 ; ON EXIT:<br />
52&0 ; AX CONTAINS OLD LAST EDGE COUNT<br />
5281 I BX CONTAlNS PULSE WIDTH {HALF Bn I<br />
5282 ; ------------- ---------.--------------.<br />
F'eo 696400 5283 MOV ex. 100 j SET TIME TO WAn FOR BIT<br />
F983 BA266BOO 5284 MOV AH.LAST_VAl JGET PRESENT INPUT VALUE<br />
F987 5285 Nee: ~ Fm-H-BIT<br />
F987 E462 5286 IN AL.POIH_C ; INPUT DATA BIT<br />
f989 2410 5237 AND AL,OlOH ;MASK OFF EXTRANEOUS BITS<br />
F988 3AC4 5288 CMP AL,AH ;SAME AS BEFORE?<br />
FgeD ElFS 5269 LOOPE<br />
"22<br />
; LOOP TILL IT CHANGES<br />
F9SF A26BOO 5290 MOV LAST_VAL,AL JUPDATE LAST_VAL WITH NEW VALUE<br />
F992 BOOD 5291 MOV Al;O jREAD TIMER'S COUNTER eONHA.ND<br />
F9'94 E643 5292 OUT TIM_CTL,AL ; LATCH COUNTER<br />
F996 E440 5293 HI AL, TIMERO ;GET LS eYTe<br />
F998 8AEO 52'4 I10Y AH,Al ,SAVE IN Aft<br />
fY.,,,, 1:'"0 SUS IN Al,TIMERO ,GET HS BYTE<br />
F99C 8bC" 5296 XCHG Al,AH ,XCHG Al,AH<br />
F99E 8Bl£6700 5n7 MOV BX,EDGE_CNT ; BX GETS LAST EDGE COUNT<br />
F942 2B08 5298 SUB BX,AX ; SET BX EQUAL TO HALF BIT PERIOD<br />
F9"4 1\36700 5299 MOV EDGE_CNT ,AX ; UPDATE EDGE CO""'T;<br />
F9A7 Cl 5300 RET<br />
5301 !fEAD_HALF_BIT ENDP<br />
5302 ;--------------------_ ..._--_.._------------<br />
F9A8 5303 PROC NEAR<br />
5304<br />
5305 ; WRITE 1 OR MORE 256 BYTE BLOCKS TO CASSETTE.<br />
5306 THE OATA IS PADDED TO FILL OUT THE LAST 256 BYTE BLOCK.<br />
5307<br />
530S ; ON ENTRY:<br />
5309 BX POINTS TO MEMORY BUFFER ADDRESS<br />
5310 ex CONTAINS HUMBER OF BYTES TO WRITE<br />
5311<br />
;:512 ; ott EXIT:<br />
5313 BX POINTS 1 BYTE PAST LAST BYTE WRITT-EN TO CASSETTE<br />
5314 ex IS ZERO<br />
5315 ;-------------------------------------------<br />
F9AS 53 5316 PUSH ax<br />
F9.9 51 5317 PUSIt cx<br />
F9,u, E461 5318 IN AL,PORT_B ;DISABLE SPEAKER<br />
f9AC 24FO 53n AND AL,NOT 02H<br />
F9AE DeOI 5320 OR AL. 01H ENABLE TInER<br />
F980 E661 5321 OUT PORT_B.AL<br />
F962 BOB6 5322 MOV AL,OB6H SET UP TIMER .. - MODE 3 SQUARE WAVE<br />
F964 E643 $3,3 OUT TIM_CTLtAl<br />
F9B6 E8A600 5324 CALL BEGIN.OP ; START MOTOR AND DELAY<br />
F9B9 BeA004 5325 NOV AX,llS4 ; SET NORMAL BIT SIZE<br />
F98C E88500 5326 CALL<br />
""<br />
J SET_TIMER<br />
F9BF MOOOS 5327 MOV CX.0800H ;SH CX FOR lEADER BYTE COUNT<br />
F9C2 5328 W23: ; WRITE LEADER<br />
F9C2 F9 53,9 STC ; WR ITE ONE BITS<br />
F9Cl E86800 5330 CALL Wl?ITE_BIT<br />
F9C6 EZFA 5331 LOOP "e> ; LOOP • TIL LEADER IS WRITTEN<br />
F9C8 F8 5332 CLC ;tRITE SYNC BIT to J<br />
F9C9 £86200 5333 CALL WRITE...8IT<br />
F9CC S9 5334 pop ex ;RESTORE REGS CX,BX<br />
FqCD 58 5335 POP BX<br />
F9CE B016 5336 MoV AL. 16M I WRITE SYH CHARACTER<br />
F900 E84400 5337 CALL WRITE_BYTE<br />
A-72