IBM 5150 Technical Reference page 197

Hide thumbs Also See for 5150:
Table of Contents

Advertisement

LOC OBJ
LINE
SOURCE
FeES SE
F8E6 59
FeE7 56
FeES 51
F8E9
F8E9 C7066900FFfF
F8EF BAOOOI
FeF2
F6F2 F606710080
F8F7 7523
F6F9 E64FOO
F8FC 721E
F6FE nos
F900 268807
F903 43
F904 49
F905
F905 4A
F906 '1FEA
F906 E84000
F908 E63000
F90E 2AE4
F910 613E69000FlD
F916 7506
F916 n06
F9lA EBCO
F91C
F91C B401
F91E
F91E FEC4
F920
F920 SA
F921 2BOI
F923 50
F924 F6C490
F927 7513
F929 E61FOO
F92C E80E
F92E
F92E 4E
F92F 7403
F931 E965FF
'934
F934 5E
F935 59
F936 58
F937 2802
F939 8404
F938 50
F93C
5405
5406
POP
51
I RESTORE REGS
5407
POP
CX
5408
POP
BX
5409
1---------------------------------------------------------------­
5410
; READ 1 OR MORE 256 BYTE BLOCKS FROM CASSETTE
5411
5412
I ON ENTRY:
54lJ
ES IS SEGMENT FOR MENORY BUFFER I FOR COMPACT CODE)
5414
BX POINTS TO START OF HEMORY BUFFER
5415
ex
CONTAINS NUMBER OF BYTES TO READ
5416
1 ON EXIT:
5417
ex
POINTS 1 BYTE PAST LAST BYTE PUT IN MEM
5418
ex
CONTAINS DECREMENTED BYTE COlIHT
5419
OX CONTAINS NUMBER OF BYTES ACTUALLY READ
5420
1---------------------------------------------------------------­
5421
PUSH
CX
I SAVE BYTE COUI'lT
5422
WIO:
; COME HERE BEFORE EACH
5423
I 256 BYTE BLOCK IS READ
54'.
NOV
CRC_REG .OFFFFH
, INIT CRe REG
5425
MOV
DX,256
I SET OX TO DATA BLOCK SIZE
5426
Nl1:
I RD_BLK
5427
TEST
BIOS_BREAK, BOH
; CHECK FOR BREAK KEY
5428
JHZ
""
; JUHP IF BREAK KEY HIT
5429
CALL
READ_BYTE
; READ BYTE FROM CASSETIE
5430
JC
""
, CY SET INDICATES NO DATA TRANSITIONS
5431
JCXZ
""
, IF WE'VE ALREADY REACHED
5432
I END OF MEMORY BUFFER
5433
I SKIP REST OF BLOCK
5434
I10V
ES:(BX1,AL
I STORE DATA BYTE AT BYTE PTR
5435
INC
BX
J INC BUFFER PTR
5436
DEC
CX
1 DEC BYTE COUNTER
5437
W12:
I LOOP lNTIl DATA BLOCK HAS BEEN
5438
,
READ FROH CASSETTE.
5439
DEC
OX
; DEC BLOCK CNT
5440
JG
W"
i
RO_BLK
5441
CALL
READ_BYTE
I NOW READ TWO CRC BYTES
5442
CALL
READ_BYTE
5443
SUB
AH,AH
I CLEAR AH
5444
C"P
CRC_REG,100FH
I
IS THE CRC CORRECT
5445
JHE
W14
; IF NOT EQUAL CRC IS BAD
5446
JCXZ
"'5
; IF BYTE COUNT IS ZERO
5447
; THEN WE HAVE READ ENOUGH
5448
I SO WE WILL EXIT
5449
J""
W'.
i
STILL MORE, SO READ ANOTHER BLOCK
5450
10113:
I HISSING-DATA
5451
j
NO OATA TRANSITIONS SO
5452
I10V
AH,OlH
I SET AH=02 TO INDICATE
5453
I DATA TIMEOUT
5454
W14:
I BAD-CRC
5455
INC
AH
; EXIT EARLY ON ERROR
5456
J SET AH=OI TO INDICATE CRC ERROR
5457
lollS:
J RO-BLK-EX
5458
POP
OX
; CA(CULATE COUNT OF
5459
SUB
OX,CX
I DATA BYTES ACTUALLY READ
5460
; RETl.RN COUNT IN REG OX
5461
PUSH
AX
; SAVE AX
UET
CODE)
5462
5463
5464
TEST
JHZ
CALL
AH, 90H
",.
READ_BYTE
i
CHECK FOR ERRORS
i
JUMP IF ERROR DETECTED
i
READ TRAILER
5465
J"P
SHORT 10116
SKIP TO TURN OFF MOTOR
5466
loH6 :
BAD-LEADER
5467
OEC
51
CHECK RETRIES
5468
JZ
W'7
JUMP IF TOO MANY RETRIES
5469
J""
...
JUMP IF NOT TOO MANY RETRIES
5470
10117:
; NO VALID DATA FOUND
5471
5472
1----- NO DATA FROM CASSETTE ERROR.
I.E.
TIMEOUT
5473
5474
POP
51
I RESTORE REGS
5475
"DP
CX
; RESTORE REGS
5476
POP
BX
5477
SUB
OX,OX
I ZERO J.l..teER OF BYTES READ
5476
I10V
AH,04H
; TIME OUT ERROR (NO LEADER'
5479
PUSH
AX
5480
W16:
I HOT-OFF
5-104 System BIOS

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents