LOC
OBJ
LINE
SOURCE
EE3B
2792
J22:
I
OPN_OK
EnB
f87001
2793
CALL
Nln1_TRANS I
HOW
MANY
GOT
HOYED
EDE
32£4
2794
XOR
AH.AH
I
NO
ERRORS
E£40
C3
2795
RET
2796
RW_OPH
EtIlP
2797
1-------------------------------------------------------.-----.----------
2798
J NEt_OUTPUT
2799
THIS
ROUTINE
SENDS
A
BYTE
TO
THE
NEe
COtITROLlER
AFTER
TESTING
2800
FOR
CORRECT
DIRECTIOt-l
AND
CONTROLLER
READY
THIS
ROUTINE
WILL
2801
TIME
OUT
IF
THE
BYTE
IS
NOT
ACCEPTED
WITHIN
A
REASONABLE
2802
AHOUNT
OF
TIHE.
SETTING
THE
DISKETTE
STATUS
ON
COMPLETION.
2803
; INPUT
2804
(AH'
BYTE
TO
BE
OUTPUT
2805
I
OUTPUT
2606
ty
= 0
SUCCESS
2807
tY
= 1
FAILURE
--
DISKETTE
STATUS UPDATED
2806
IF
A
FAILURE
HAS
OCCURRED,
THE
RETIJRN
IS
HADE
ONE
LEYEl :
2809
HIGHER
THAN
THE
CALLER
OF
HEt_OUTPUT.
2810
THIS
REMOVES
THE
REQUIREMENT
Of
TESTING
AFTER
EVER'(
2811
CALL
Of
NEC_OUTPUT.
21312
2813
(A.L)
DESTROYED
J------------------------------------------------------------------------
EE41
21314
NEC_OUTPUT
PROC
NEAR
EE41
52
2815
PUSH
OX
I
SAVE
REGISTERS
EE42
51
2816
PUSH
ex
E£43 BAF403
21317
MOV
DX.03f4H
j
STATUS
PORT
EE4b 33C9
2818
><OR
CX,CX ;
COUHT
FOR
TIME
OUT
EE4a
2819
J23:
EE4a
EC
21320
IN
AL.DX I
GET
STATUS
EE49 A840
21321
TEST
Al,040H
I TEST DIRECTION
BIT
EE4B
740C
21322
JZ
JZS
i DIRECTION
OK
EE40 E2F9
2823
LOOP
J<3
EE4F
2824
J24:
i
TIME.
ERROR
EE4F
800E410080
2825
OR
DISKETTE_STATUS, TIME_OUT
££54
59
2826
POP
ex
EE55
SA
2827
POP
ox
1 SET
ERROR
CODE
AND
RESTORE
REGS
EE5&
58
2828
PDP
AX
1 DISCARD
THE
RETURN
ADDRESS
EE57 F9
2829
STe ; INDICATE
ERROR
TO
CALLER
~
EE58 C3
2830
RET
EE59
2831
J25:
EE59 33C9 2832
XDR
CX.ex
I
RESET
TME
cc:urr
EEse
2833
J:!6:
EESB
EC
2834
IN
AL.OX
I
GET
TME
STATUS
fESC A880
2835
TEST
AL,080H
i
IS
IT
READY
£ESE
7S04 2836
JHZ
JZ7
1 YES.
GO
OUTPUT
EE60 E2F9
2837
lOOP
JZ6
1
COUNT
DOWN
AND
TRY
AGAIN
EE62
EBEB
2838
JNP
J24
I
ERROR
CONDITION
EE64
2839
J27:
I
OUTPUT
EE64 8AC4 2840
t10V
AL.AH I
GET
BYTE
TO
OUTPUT
£E66 B2FS 2841
MOV
DL.OFSH
1
DATA
PORT
«3FS)
£E68
EE
2842
OUT
DX.AL
;
OUTPUT
TH
E
BYTE
EEb9
59
2843
POP
ex
I
RECOVER
REGISTERS
EEbA
5A
2844
POP
ox
EE6B
C3
2845
RET
;
tY
= 0 FRott TEST INSTRUCTION
2846
NEC_OlITPUT
ENOP
2847
;
------------------------------------------------------------------------
2848
;
GET_PA.RM
2849
I
THIS
ROUTINE
FETCHES
THE
INDEXED POItrrER
FROH
THE
DISK_BASE
2850
BLOCK
POItrrED AT
BY
THE
DATA
VARIABLE DISK_POINTER. A
BYTE
FROH
:
2851
THAT
TABLE
IS
THEN
HOVEO
INTO AH,
THE
ItilEX
Of
THAT
BYTE BEING
2852
TM£
PARH
IN
BX
2853
ENTRY
--
2854
ex
=
ItI)EX
OF
BYTE
TO
BE
FETCHED
* 2
2855
IF
THE
LOW
BIT
OF
ex
IS
ON.
THE
BYTE
IS
ItltEDIATELY
OUTPUT
2856
TO
THE
NEC
CONTROLLER
2857
;
EXIT
--
2858
AH
=
THAT
BYTE
FROJ1
BLOCK
2859
J------------------------------------------------------------------------
EE6C
2860
GET_PAIfI'1
PROC
NEAIf
~
EEbC
IE
2861
PUSH
as
J
SAVE
SEGMENT
EE6D
28co
2862
SUB
AX,AX i
ZERO
TO
AX
EE6F
eED8
2563
t10V
DS,AX
2864
ASSlI1E
DS:ABSO
£E71
C5367800
28b5
LOS
SI.DISK_POINTER
; POINT
TO
BLOCK
EE75
DIEB
2866
SHR
BX.l
I
DIVIDE
BX BY
2,
At«<)
SET FLAG
286?
I
FOR
EXIT
EE77 8A20
2868
MOV
AH,IS1+8X]
;
GfT
THE
WORD
System
BIOS
5-69