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 sou RCE ESFI 740F 2180 JZ K60 ; IF NOT SHIFT. CONVERT LOWER TO LIPPER 2181 2182 ;------ CONVERT ANY UPPER CASE TO LOWER CASE 2183 EBF3 3C41 2184 CMP AL, 'A' ; FIND OUT IF ALPHABETIC EBFS 7215 2185 JB K61 ; NOT_CAPS_STATE EBF7 3CSA 2:186 CMP AL. 'Z' EBF9 7711 2187 JA K61 ; NOT_CAPS_STATE EBFB 0420 2188 ADD Al, 'a '-'A' ; CONVERT TO LO~ER CASE fBFO EBOD 2189 JMP SHORT K61 ; NOT_CAPS_STATE 2190 EBFF 2191 K59: ; NEAR-INTERRUPT-RETURN EBFF E95CFE 2192 JMP KZ6 ; INTERRUPT_RETURN 2193 2194 i ----- CONVERT ANY LOWER CASE TO UPPER CASE 2195 EC02 2196 K60: ; LOWER-TO-UPPER EC02 3C61 2197 CMP AL. 'a' ; fINO OUT IF ALPHABETIC EC04 7206 2198 JB K61 ; NOT_CAPS_STATE fC06 3C7A 2199 CMP AL, 'z' EC08 7702 2200 JA 1-',61 ; NOT_CAPS_STATE EeOA 2e2:0 2201 SUB AL. 'n'-'A' ; CONVERT TO UPPER CASE 2202 Eeoc 2203 K61: ; NOT-CAPS-STATE Eeoc 2:::04 ; GET THE END POINTER 8BlEICOO MOV BX,BUFFER_TAIl TO THE BUfFER ECIO BaF3 2205 tiDV SI.eX SAVE THE VALUE fe12 E860FC 2206 CALL K4 ADVANCE THE TAll EClS 3BIEIAOO 2207 CIlP BX.BUFFER_HEAD HAS THE BUFFER WRAPPED AROUND ECl9 7409 2208 JE K62 BUFFER_FUll_BEEP ECIB 8904 2209 MOV [SI1,AX STORE THE VALUE ECID 891EICOO 2210 MOV BUFFER_TAIL,eX 1 MOVE THE POltHER UP Ee21 E93AFE 2211 JMP K26 INTERRUPT_RETURN 2212 2213 BUFFER IS FUll, somm THE ;------ BEEPER 2214 [C24 2215 K62: BUFFER-FUll-BEEP ~ EC24 f80DOO 2216 CALL ERROR_BEEP Ee27 E934FE 2217 K'6 2218 2219 TRANSLATE SCAN FOR ;------ PSEUDO SCAN CODES 2220 Ee2A 2221 K63: j TRANSLATE-SCAN EC2A 2222 ; CONVERT ORIGIN 2C38 SUB AL,59 TO FUNCTION KEYS felt 2223 K64: I TRANSlATE-SCAtl-ORGD fe2t 2ED7 2224 XlAT CS:K9 ; CTL TABLE SCAN Eelf BAED 2225 MOV AH,AL ; PUT VALUE INTO AH EC30 BODO 2226 MOV AL.e ; ZERO ASCII CODE EC32 EBA8 2227 JHP KS7 ; PUT IT INTO THE BUFfER 2228 2229 EflOP I
LOC 08J LINE SOURCE 2255 ;-- INT 13 ---------------------'------------ 2256 ;DISKETTE 1/0 2257 THIS INTERFACE PROVIDES ACCESS TO THE 5 1/4" DISKETTE DRIVES 2.258 ; INPUT 2259 (AH };;Q RESET DISKETTE SYSTEM 2260 HARD RESET TO NEC, FREPARE COMMAND. RECAL REQD ON ALL DRIVES 2261 (AHI=l READ THE STATUS OF THE SYSTEM INTO (All 2262 DISKETTE_STATUS FROM LAST OP'" IS USIO 2263 REGISTERS FOR P.EAO/WRITE/vERIFY/FORMAT 2264 (OLI - DRIVE NUtlBER (0-3 ALLOWED, VALUE CHECKED) 22:65 {DHI ~ HEAD ~ruMBER (0-1 ALLOWEn, I\'OT VALUE CHECKED) 2266 (CH) - TRACK NUtlBER (0-39, t.'OT VALUE CHECKEO) 22:67 (eL) - SECTOR truMBER f 1-8, NOT VALUE CHECKEO) 2268 fAll - NUMBER OF SECTORS ( MAX ;; 8, NOT VALUE CHECK EO) 2269 2270 (ES:BX) - ADDRESS OF BUffER ( NOT REQUIRED FOR VERIFY) 2:271 2272 (AH )=2: READ THE DESIRED SECTOOS INTO MEMORY 2273 «AH )=3 WRITE HlE DESIRED SECTORS FROM HEMORY 2274 (AH 1=4 VERIFY THE DESIRED SECTORS 22:75 (AH);:5 FORMAT THE DESIRED TRACK 2276 FOR THE fORMAT OPERATlm" THE BUFFER POINTER (ES,BXI MUST 2277 POINT TO THE COLLECTIOH OF DfSIRED ADDRESS FIElDS FOR THF.: 22:78 TRACK. EACH FIELD IS CQtlPOSED OF 4 BYTES. (C,H,R,NI, WHERE 2279 C ;; TRACK HUMBER, H=HEAD NUMBER, R ;; SECTOR NUMBER, N= NUMBER 2280 OF BYTES PER SECTOR ("00=128, 01=256, 02=512. 03=1024,) 2281 THERE MUST BE ONE ENTRY FOR EVERY SECTOR ON THE TRACK. USZ 2:283 READ/WRITE ACCESS. 2284 ; DATA VARIABLE - DISK_POINTER THIS INFORMATION IS USED TO Fum THE REQUESTED SECTOR DURING ~28S DOUBLE WORD POINTER TO THE CURRENT SET OF DISKETTE PARAMETERS 2286 ; OUTPUT 2287 AH = STATUS OF OPERATION 2288 STATUS BITS ARE DEfINED IN THE EQUATES fOR DISKETTE_STA,TUS 2289 VARIABLE IN THE DATA SEGMENT OF THIS NODULE EC59 EC59 fB ECSA 53 Ee58 51 ECSC IE Ee50 56 ECSE 57 ECSF 55 EC60 52 EC61 8BEt EC63 8E4000 EC66 BEDf EC68 f81COO EC6B 6B0400 EC6E ESFFO} Ee7l e8264000 Ee75 8A264100 EC79 80FCO) Ee7t FS EC7D SA Ee7E 50 [e7F SF EC8Q Sf EC8l IF Ee62 59 Ecel 58 E(84 CA0200 Ee87 2290 2291 2292 2293 2294 2295 2296 2297 2296 2299 2300 2301 2302 2303 PROC FAR 2304 2]05 ex 2306 ex 2307 os 2308 51 Z309 01 2310 BP 2311 ox 2312 BP.SP e313 SI,DATA 2314 OS,SI 2315 Jl 2316 BX,4 2317 2318 2319 2320 eMP AH,J ; SET THE CARRY fLAG TO INDICATE 2321 eMe I SUCCESS OR FAILURE 2322 POP ox i RESTORE ALL REGISTERS 232:3 POP BP 2324 POP 01 2325 POP 51 2326 POP OS 2327 POP CX 2328 POP BX ; RECOVER ADDRESS 2329 RET ; THROW AWA'( SAVED FLAGS 2330 DISKETTE_IO E~mp 2:331 Jl PROC ~lEAR A-32
- Page 174 and 175: BIOS Memory Map STARTING ADDRESS H
- Page 176 and 177: The timer is set mode 3 which means
- Page 178 and 179: Keyboard Encoding and Usage Encodin
- Page 180 and 181: Keys 71-83 have meaning only in bas
- Page 182 and 183: ALT - Temporarily shifts keys 2-13,
- Page 184 and 185: Keyboard Usage This section is inte
- Page 186 and 187: Table 28. BASIC Screen Editor Speci
- Page 188 and 189: Low Memory Maps (O-'0600'x) Table 3
- Page 190 and 191: BASIC Workspace Variables If you do
- Page 192: APPENDICES Contents: Appendix A: RO
- Page 195 and 196: lOC OBJ LINE SOURCE STITlE( ROM BIO
- Page 197 and 198: LOC OBJ LINE SOURCE 0068 ?! 155 De
- Page 199 and 200: LOC OBJ LINE SOURCE E09E BBf5 EOAO
- Page 201 and 202: lOC OBJ LINE SOURCE £179 E2FD 462
- Page 203 and 204: LOC OBJ LINE SOURCE E278 7408 612 J
- Page 205 and 206: lOC OBJ LINE SOURCE 755 ; ---------
- Page 207 and 208: LOC OSJ LINE SOU RCE E42B 7440 900
- Page 209 and 210: lOC OBJ LINE SOURCE ESIE 884000 E52
- Page 211 and 212: LaC OBJ LINE SOURCE E613 803E120001
- 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: LaC OBJ LINE SOURCE E890 E99700 E89
- 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 and 264: LOC OBJ LINE SOURCE F8DA E304 5116
- Page 265 and 266: LOC OBJ LINE SOURCE F97E EBF9 5268
- 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 ;.*.-•
LOC 08J LINE SOURCE<br />
2255 ;-- INT 13 ---------------------'------------<br />
2256 ;DISKETTE 1/0<br />
2257 THIS INTERFACE PROVIDES ACCESS TO THE 5 1/4" DISKETTE DRIVES<br />
2.258 ; INPUT<br />
2259 (AH };;Q RESET DISKETTE SYSTEM<br />
2260 HARD RESET TO NEC, FREPARE COMMAND. RECAL REQD ON ALL DRIVES<br />
2261 (AHI=l READ THE STATUS OF THE SYSTEM INTO (All<br />
2262 DISKETTE_STATUS FROM LAST OP'" IS USIO<br />
2263 REGISTERS FOR P.EAO/WRITE/vERIFY/FORMAT<br />
2264 (OLI - DRIVE NUtlBER (0-3 ALLOWED, VALUE CHECKED)<br />
22:65 {DHI ~ HEAD ~ruMBER (0-1 ALLOWEn, I\'OT VALUE CHECKED)<br />
2266 (CH) - TRACK NUtlBER (0-39, t.'OT VALUE CHECKEO)<br />
22:67 (eL) - SECTOR truMBER f 1-8, NOT VALUE CHECKEO)<br />
2268 fAll - NUMBER OF SECTORS ( MAX ;; 8, NOT VALUE CHECK EO)<br />
2269<br />
2270 (ES:BX) - ADDRESS OF BUffER ( NOT REQUIRED FOR VERIFY)<br />
2:271<br />
2272 (AH )=2: READ THE DESIRED SECTOOS INTO MEMORY<br />
2273 «AH )=3 WRITE HlE DESIRED SECTORS FROM HEMORY<br />
2274 (AH 1=4 VERIFY THE DESIRED SECTORS<br />
22:75 (AH);:5 FORMAT THE DESIRED TRACK<br />
2276 FOR THE fORMAT OPERATlm" THE BUFFER POINTER (ES,BXI MUST<br />
2277 POINT TO THE COLLECTIOH OF DfSIRED ADDRESS FIElDS FOR THF.:<br />
22:78 TRACK. EACH FIELD IS CQtlPOSED OF 4 BYTES. (C,H,R,NI, WHERE<br />
2279 C ;; TRACK HUMBER, H=HEAD NUMBER, R ;; SECTOR NUMBER, N= NUMBER<br />
2280 OF BYTES PER SECTOR ("00=128, 01=256, 02=512. 03=1024,)<br />
2281 THERE MUST BE ONE ENTRY FOR EVERY SECTOR ON THE TRACK.<br />
USZ<br />
2:283 READ/WRITE ACCESS.<br />
2284 ; DATA VARIABLE - DISK_POINTER<br />
THIS INFORMATION IS USED TO Fum THE REQUESTED SECTOR DURING<br />
~28S DOUBLE WORD POINTER TO THE CURRENT SET OF DISKETTE PARAMETERS<br />
2286 ; OUTPUT<br />
2287 AH = STATUS OF OPERATION<br />
2288 STATUS BITS ARE DEfINED IN THE EQUATES fOR DISKETTE_STA,TUS<br />
2289 VARIABLE IN THE DATA SEGMENT OF THIS NODULE<br />
EC59<br />
EC59 fB<br />
ECSA 53<br />
Ee58 51<br />
ECSC IE<br />
Ee50 56<br />
ECSE 57<br />
ECSF 55<br />
EC60 52<br />
EC61 8BEt<br />
EC63 8E4000<br />
EC66 BEDf<br />
EC68 f81COO<br />
EC6B 6B0400<br />
EC6E ESFFO}<br />
Ee7l e8264000<br />
Ee75 8A264100<br />
EC79 80FCO)<br />
Ee7t FS<br />
EC7D SA<br />
Ee7E 50<br />
[e7F SF<br />
EC8Q Sf<br />
EC8l IF<br />
Ee62 59<br />
Ecel 58<br />
E(84 CA0200<br />
Ee87<br />
2290<br />
2291<br />
2292<br />
2293<br />
2294<br />
2295<br />
2296<br />
2297<br />
2296<br />
2299<br />
2300<br />
2301<br />
2302<br />
2303 PROC FAR<br />
2304<br />
2]05 ex<br />
2306 ex<br />
2307 os<br />
2308 51<br />
Z309 01<br />
2310 BP<br />
2311 ox<br />
2312 BP.SP<br />
e313<br />
SI,DATA<br />
2314 OS,SI<br />
2315 Jl<br />
2316 BX,4<br />
2317<br />
2318<br />
2319<br />
2320 eMP AH,J ; SET THE CARRY fLAG TO INDICATE<br />
2321 eMe I SUCCESS OR FAILURE<br />
2322 POP ox i RESTORE ALL REGISTERS<br />
232:3 POP BP<br />
2324 POP 01<br />
2325 POP 51<br />
2326 POP OS<br />
2327 POP CX<br />
2328 POP BX ; RECOVER ADDRESS<br />
2329 RET ; THROW AWA'( SAVED FLAGS<br />
2330 DISKETTE_IO E~mp<br />
2:331 Jl PROC ~lEAR<br />
A-32