IBM 5150 Technical Reference page 200

Hide thumbs Also See for 5150:
Table of Contents

Advertisement

LOC OBJ
LINE
SOURCE
5635
WHICH IS CHECKED FOR CORRECTNESS WHEN THE BLOCK IS READ
5636
5637
; REG AX IS MODIFIED
1----------------------------------------­---------------­------­
1'9E2 1.16900
F~E5
f700
Fc)E7
1'9E8
F9EA
F9ED
F9EE
F9FI
F9F3
F91'5
F'9F6
F91'9
F91'9
F9FA
F9FD
F9FF
FAOO
FA02
FA04
FA07
fAOA
FAOO
FAaF
FAI0
FAIO
FAll
FA12
50
86£0
£82300
58
£81FOO
OBC9
7507
51
892000
F9
£82AOO
E2FA
59
80BO
£643
860100
£83300
E870FE
28C0
C3
51
50
SAEe
HIlt B108
FA16
FAl6 0005
FA18 9C
FA19 £80BOO
FAit 90
FAID £82400
FA20 FEC9
FAZ2 75F2
1'.24 58
FA25 59
F.6.26 C3
FA27
FA27 88A004
FA2A n03
FAze B85002
FA2F
FAll' 50
FA30
FA30 £462
FA32 2420
5636
MOV
AX,CRC_REG
; WRITE THE ONE'S COMPLEMENT OF THE
5639
I
TWO BYTE CRC TO TAPE
5640
HOT
AX
; FOR
1'5
COMPLEMENT
5641
PUSH
AX
; SAVE IT
5642
XCHG
AH,AL
; WRITE MS BYTE FIRST
5643
I
WRITE IT
5644
POP
AX
I
GET IT BACK
5645
CALL
WRITE_BYTE
I
NOW
WR
ITE LS
Il
YTE
5646
OR
CX,CX
; IS BYTE COUNT EXHAUSTED?
5647
JNZ
WR_BLDCK
; JUMP IF NOT DONE YET
5646
PUSH
CX
, SAVE REG CX
5649
HOV
ex,
32
; WRITE OUT TRAILER BITS
5650
WZ6:
I
TRAIL-LOOP
5651
STC
5652
CALL
WRITE_BIT
5653
LOOP
WZ6
I
WRITE UNTIL TRAILER WRInEN
5654
POP
CX
; RESTORE REG CX
5655
MOV
At. OBOH
I
TURN TIMER2 OFF
5656
OUT
TIM_CTL, AL
5657
HOV
AX, 1
5658
CALL
10131
; SET_TIMER
..59
"60
CALL
SUB
MOTOR_OFF
AX,AX
I TURN MOTOR OF F
I NO ERRORS REPORTED ON WRITE OP
5661
. .
"
RET
,HOP
; FINISHED
5663
; ----.--------------------------­
5664
; WRITE A BYTE TO CASSEnE.
5665
; BYTE TO WRITE IS IN REG AL.
5666
; --------------- - ---- - ----------­
5667
WRITE_BYTE
MOC
NEAR
5666
PUSH
CX
J SAVE REGS CX,AX
5669
PUSH
AX
5670
MOV
CH,Al
i
AL::BYTE TO WRITE.
5671
I
(MS BIT WRITTEN FIRST)
5672
HOV
CL.6
; FOR 6 DATA BITS IN BYTE.
5673
I
NOTE: TWO EDGES PER BIT
5674
10127:
; DISASSEHBLE THE DATA BIT
5675
RCL
CH,I
; ROTATE MS BIT INTO CARRY
5676
PUSHf
I SAVE FLAGS.
5677
NOTE: DATA BIT IS IN
CARRY
5678
I WRITE DATA BIT
5679
POPF
I RESTORE CARRY FOR
CRC
CALC
5680
CALL
CRC_GEN
; COMPUTE CRC ON DATA BIT
5661
DEC
CL
I LOOP TILL ALL 6 BITS DONE
5682
JNZ
10127
I JUMP IF NOT DONE YET
5683
POP
AX
; RESTORE REGS AX,CX
5664
POP
CX
5685
RET
I WE ARE FINISHED
5686
WRITE_BYTE
ENOp
5667
1- -------------- - ---------------------------------------­
5686
; PURPOSE:
5669
TO WRITE A DATA BIT TO CASSETTE
5690
CARRY FLAG CONTAINS DATA BIT
5691
I.E. IF SET DATA BIT IS A ONE
5692
IF CLEAR DATA BIT IS A ZERO
5693
5694
NOTE: TWO EDGES ARE WRITTEN PER BIT
5695
ONE BIT
HAS 500 USEC BETWEEN EDGES
5696
FOR A 1000 USEC PERIOD (1 I1IllISEC)
5697
5698
ZERO BIT HAS 250 USEC BETWEEN EDGES
5699
FOR A
500 USEe PERIOD (.5 I1ILLISEC J
5700
I CARRY FLAG IS DATA BIT
5701
1----------- -----------------___________________________ _
5702
WRITE_BIT
PROC
NEAR
5703
J ASSUME IT'S A ' I '
5704
HOV
AX. 1184
i
SET AX TO NOMINAL ONE SIZE
5705
JC
WZ8
I Jut1P IF ONE BIT
5706
HOV
AX. 592
; NO. SET TO NOMINAL ZERO SIZE
5707
W28:
; IolRITE-BIT-AX
5706
PUSh
AX
; WRITE BIT WITH PERIOD EQ TO VALUE AX
5709
WZ9:
5710
IN
AL,PORT_C
I INPUT TlMER_ 0 OUTPUT
5711
A..,
AL.020H
System BIOS 5-107

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents