LaC
OBJ
LINE
SOURCE
F840
4967
EQUIPMENT
PROC
FA.
F840 F8
4968
ST!
• INTERRUPTS
BACK
ON
F84E IE
4969
PUSH
DS
j SAVE
SEGMENT
REGISTER
F84F
884000
4970
MOV
AX.
DATA ;
ESTABLISH
ADDRESSING
F852
SEDS
4971
MOV
OS,AX
F654 A11000
4972
NOV
AX.
EQUIP_FLAG i
GET
THE
CURRENT
SETTINGS
F857
IF
4973
pop
OS
;
RECOVER
SEGMENT
f8S8
CF
4974
IRET
I
RETURN
TO
CALLER
4975
EQUIPMENT
ENDP
4976
;---
INT
15
---------------------------------
4977
;
CAssenE
1/0
4976
(AH)
= 0
TURN
CASSETTE
HOTOR
ON
4979
(AH)
:; 1
TURN
CASSETTE
HOTOR
OFf
4980
[AH)
= 2
READ
1
OR
MORE
256
BYTE
BLOCKS
FROM
CASSETTE
4981
(ES,BX)
:;:
POINTER
TO
DATA
BUFFER
4982
{ex) =
COUNT
OF
BYTES
TO
READ
4983
ON
EXIT:
4984
f!S.BX)
= POINTER
TO
LAST BYTE
READ
+ 1
4985
(OX)
=
COUHT
OF
BYTES ACTUALLY
READ
4986
(Cv)
= a
IF
NO
ERROR
OCCURRED
4987
= 1
IF
ER~OR
OCCURRED
4988
(AH J
:;;
ERROR
RETURN
IF
(eYJ:
1
4989
;:
01
IF
CRC
ERROR
WAS
DETECTED
4990
=-
02
IF
DATA
~ANSITIONS
ARE
LOST
4991 =
04
IF
tlO
DATA
WAS
FOUt~D
49n
{AH 1 = 3 WRITE 1
OR
MORE
256
BYTE
BLOCKS
TO
CASSETTE
4993
(ES.BX)
.::
POINTE~
TO
DATA
BUFfn
4994
(ex)
=
COUNT
OF
BYTES
TO
WRITE
4995
ON
EXIT:
4996
(EX,8Xl
= POINTER
TO
LAST BYTE WRITTEN + 1
4997
(CXI
= 0
4996
(AM)
=
ANY
OTHER
THAN
ABOVE
VALUES
CAUSES
(CYJ=
1
4999
AND
(AH)=
60
TO
BE
RETURNED
UtNALID
COHMAND).
5000
;--------------------------------------------
5001
ASSUME
DS:DATA, ES:NOTHING.SS:NOTHING.C5:CODE
F859
5002
CASSETTE_IO
PRoe
FAR
F859 F8
5003
STI
INTERRUPTS
BACK
ON
F85.&.
1E
5004
PUSH
as
I ESTABLISH
,.,DDRESSIHG
TO
DATA
Fase
50
5005
PUSH
AX
Fast
884000
5006
MOV
AX. DATA
F85F
8£08
5007
NOV
os.
AX
F861
802671007F
5006
AND
BIOS_BR EAK.
7FH i
HAKE
SURE
BREAK
flAG
IS
OFF
F866 56
5009
POP
AX
F867
E80400
5010
CALL
WI
J CASSETTE_IO_CONT
F86.&.
1F
5011
POP
os
F868
CA02:00
5012
RET INTERRUPT
RETVRN
5013
CASSETTE_IO
ENDP
F86E
5014
NI
PROC
NEAR
50
15
1--------
----
--------------------------------
5016
;
PURPOSE:
5017
I
TO
CALL APPROPRIATE ROUTINE DEPENDING
ON
REG
AH
5018
5019
AH
ROUTINE
5020
5021
MOTOR
ON
502:2 I I
MOTOR
OFF
5023
; 2
READ
CASSETTE
BLOCK
5024
WRITE CASSETTE
BLOCK
5025
5026
F86£
OA£4
5027
OR
AH,AH
f
TURN
ON
MOTOR?
F870
7413
502:8
JZ
MOTOR_ON
iYES.
00
IT
F872:
FEte
502:9
DEC
AH
;TURN
OFF
MOTOR?
F874
7418
5030
JZ
MOTOR_OFF
IYES,
DO
IT
F876
FEee
5031
DEC
AH
,READ
CASSETTE
BLOCK?
F678
741A
5032
JZ
READ_BLOCK
,YES,
DO
IT
F67A
FEte
5033
DEC
AH
;WRITE CASSETTE BLOCK?
Fe7t
7503
5034
JNZ
W2
; NOT_DEFINED
F87E E92101
5035
J"P
WRITE_BLOCK
;YES,
DO
IT
5036
F881
5037
W2:
jCOMHAND
NOT
DEFINED
F881
8480
5038
MOV
AH,080H
;ERROR. UNDEFINED OPERATION
FSS3 F9
5039
STC
;ERROR
FLAG
f884
C3
5040
RET
5041
WI
'NOP
5042
A-68