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)

classiccomputers.info
from classiccomputers.info More from this publisher
25.03.2015 Views

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

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!