EasyManua.ls Logo

IBM PC CONVERTIBLE

IBM PC CONVERTIBLE
275 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
----
- - -
--
-- - - - - -
--
--- - - --
--
- - - - - - - - - - - - -
--
- - - - - - - - - - - --
--
- - - -- -
--
- - - - -
--
DMiLSETUP
THIS
ROUTINE
SETS
UP
THE
DMA
FOR
READ/WRITE/VERIFY
OPERATIONS.
INPUT
(AL) =
MODE
BYTE
FOR
THE
DMA
(ES)
-
SEGMENT
TO
READ/WRITE
THE
DATA
(BP)
-
STACK
POINTER
(TO
GET
INPUT
PARAMETERS)
OUTPUT
(AX,CX)
DESTROYED
----
--------
- - - - - - - - - - - - - - - - - - - --- - - - - - - -- - - - - - - - - -
--
- - - - - - - - - -
--
- - -- -
--
02Fl
DMiLSETUP
PROC
NEAR
02Fl
FA
CLI
NO
MORE
INTERRUPTS
02F2
E6
OC
OUT
DMA+12,AL
SET
THE
FIRST/LAST F/F
02F4
EB
00
JMP
$+2
DELAY
FOR
DMA
CONTROLLER
02F6
E6
OB
OUT
DMA+11,AL
OUTPUT
THE
MODE
BYTE
02F8
50
PUSH
AX
SAVE
COMMAND
02F9
8C
CO
MOV
AX,
ES
GET
THE
ES
VALUE
02FB
Bl
04
MOV
CL,4
SHI
FT
COUNT
02FD
03
CO
ROL
AX,CL
ROTATE
LEFT
02FF
8A
E8
MOV
CH,AL
GET
HIGHEST
NYBLE
OF
ES
TO
CH
0301
24
FO
AND
AL,OFOH
ZERO
THE
LOW
NYBBLE
FROM
SEGMENT
0303
03
46
OC
ADD
AX,BXSAVE[BP]
ADD
ADDRESS
OFFSET
0306
73
02
JNC
J33
TEST
FOR
CARRY
FROM
ADDITION
0308
FE
C5
INC
CH
CARRY
MEANS
HIGH
4
BITS
MUST
BE
INC
030A
J33 :
030A
50
PUSH
AX
SAVE
START
ADDRESS
030B
E6
04
OUT
DMA+4,AL
OUTPUT
LOW
ADDRESS
0300
8A
C4
MOV
AL,AH
030F
E6
04
OUT
DMA+4,AL
OUTPUT
HIGH
ADDRESS
0311
8A
C5
MOV
AL,CH
GET
HIGH
4
BITS
0313
24
OF
AND
AL
,OFH
0315
E6
81
OUT
DMiLPAGE2,AL
OUTPUT
THE
HIGH
4 BITS
TO
DETERMINE
COUNT
0317
8A
66
OE
MOV
AH,ALSAVE[BP]
NUMBER
OF
SECTORS
(AL
SAVE)
031A
2A
CO
SUB
AL,AL
TIMES
256
INTO
AX
031C
01
E8
SHR
AX,1
SECTORS
*
128
INTO
AX
031E
50
PUSH
AX
031F
BB
0006
MOV
BX,6
GET
THE
BYTES/SECTOR
PARM
0322
E8
0259 R
CALL
GELPARM
0325
8A
CC
MOV
CL,AH
USE
AS
SHIFT
COUNT
(0=128, 1=256
ETC)
0327
58
POP
AX
0328
03
EO
SHL
AX,CL
MUL
TIPLY
BY
CORRECT
AMOUNT
032A
48
DEC
AX
-1
FOR
DMA
VALUE
032B
50
PUSH
AX
SAVE
COUNT
VALUE
032C
E6
05
OUT
DMA+5,AL
LOW
BYTE
OF
COUNT
032E
8A
C4
MOV
AL,AH
0330
E6
05
OUT
DMA+5,AL
HIGH
BYTE
OF
COUNT
0332
FB
STI
I
NTERRUPTS
BACK
ON
0333
59
POP
CX
RECOVER
COUNT
VALUE
0334
58
POP
AX
RECOVER
ADDRESS
VALUE
0335
03
Cl
ADD
AX,CX
ADD,
TEST
FOR
64K
OVERFLOW
0337
BO
02
MOV
AL,2
MODE
FOR
8237
0339
E6
OA
OUT
DMA+lO,AL
INITIALIZE
THE
DISKETTE
CHANNEL
033B
58
POP
AX
RESTORE
COMMAND
033C
73
OE
JNC
DMiLOUT
033E
3C
42
CMP
AL,42H
NON-DMA
OPERATION?
0340
74
OA
JE
DMiLOUT
I F
SO
THEN
NO
BOUNDRY
ERROR
0342
C6
06
0041
R
09
MOV
DISKETTE_STATUS,DMA_BOUNDARY
;
SET
DMA
BOUNDRY
ERROR
0347
C6
46
OE
00
MOV
BYTE
PTR
[BP+14]
,0
NO
SECTORS
TRANSFERRED
(AL
SAVE)
034B
F9
STC
SET
CARRY
TO
INDICATE
ERROR
034C
DMA_OUT:
034C
C3
RET
RETURN
TO
CALLER,
CARRY
SET
BY
ABOV
ElF
ERROR
0340
DMiLSETUP
ENDP
ROM BIOS 2-131

Related product manuals