Download Print this page

IMS IMSAI 8080 User Manual page 606

Advertisement

FD31 DB 0 5
L00P2:
I N
AN I
FD33 E602
FD35 CA31FD
JZ
FD38 7B
MOV
ORA
FD3 9 B 7
FD3A C2ABFD
JNZ
FD3D DB02
IN
FD3F ES7F
AN I
C P I
FD1 » 1 FE3A
FDA3 C231FD
JNZ
FDA6 1E81
MV I
FDA8 C331FD
JMP
; W E 1 RE PUTTING TOGETHER A BYTE. FLAG BIT
; DIGIT OF BYTE, BIT 7=0 => LOW DIGIT
FDAB F266FD
XI:
JP
FDAE E67F
ANI
FD5 0 5F
MOV
FD5 1 DB0 2
IN
AN I
FD53 E67F
FD55 FE3A
CPI
FD57 FA5CFD
JM
FD5A C609
ADI
FD5C E60F
X 2 :
ANI
FD5E 87
ADD
FD5F 87
ADD
FD50 87
ADD
F061 87
ADD
FD6 2 57
MOV
FD63 C331FD
JMP
; PROCESS LOW DIGIT OF BYTE, THEN DECIDE WHAT TO DO WITH
>
Y 1:
IN
FD66 DB02~
FD6 8 E6 7F
ANI
FD6A FE3 A
' ■
CPI
FD6C FA71FD
ÜM
FD6F C6 09
ADI
FD71 E6 OF
Y2 :
ANI
FD73 B2
ORA
FD7A D3FF
OUT
FD76 57
MOV
FD77 81
ADD
FD78 AF
MOV
FD79 7B
MOV
FD7A 3D
OCR
FD7B CAC1FD
JZ
FD7E 3D
DCR
FD7F CABBFD
JZ
FD82 3D
DCR
FD83 CAB5FD
JZ
FD86 3D
DCR
FD87 CABOFD
JZ
FD8A 3D
DCR
FD8B CAAAFD
JZ
FD8E 79
MOV
FD8F 5 7
ORA
FD90 CA2DFD
JZ
FD93 2F
STOP :
CMA
FD9A D3FF
OUT
FD96 3E13
MV I
FD98 D302
OUT
FD9A DB03
STPL :
IN
FD9C E50A
ANI
3
; GET S I O
STATUS
2
; CHECK FOR CHARACTER
L 0 0 P 2
; KEEP W A IT IN G
A , E
; GET FLAG
A
; I S
I T
ZERO?
X I
; N 0 ,
GO PROCESS A HEX CHAR
2
;"YES,
WE'RE LOOKING FOR A COLON
; 5 T R I P OFF P A R IT Y
127
1 « f
j I S
I T
A COLON?
LOOP 2
; NO,
KEEP W A IT IN G
E , 8 1H
r Y E S ,
SET FLAG FOR COUNT BYTE
LOOP 2
;AND GET ANOTHER CHAR.
Y1
; JUMP IF LOW DIGIT
127
;ELSE STRIP OFF HIGH BIT
E, A
;PUT FLAG BACK IN E-REG
2
;GET THE CHAR
127
;STRIP OFF THE PARITY BIT
' 9' +1
; IS IT .LE. >9'
XZ
-7SiCIP IT YES
;IF NOT, ADJUST IT
9
OFH
;GET HEX DIGIT
A
;SHIFT LEFT ONE BIT
A
;
TWO BITS
A
THREE BITS
f
A
,-AND FOUR BITS.
D, A
;SAVE NIB8LE IN D REG
LOOP2
2
;GET THE CHAR
;GET RID OF PARITY 8 I T •
127
'
;HEX IS SUCH A PAIN.
'9' +1
Y2
9
OFH
D
;MAKE THE BYTE
OFFH
;PUT IT IN LIGHTS
D, A
;SAVE IT IN D REG
C
;ADD IT INTO CHECKSUM
C,A
;SAVE RUNNING CHECKSUM
A,E
;GET FLAG IN A
A
;THEN DISPATCH
COUNT
A
HADD
A
LADD
A
TYPE
A
PUT
;MUST BE TIME TO CHECK THE
A, C
A
; CHECKSUM.
IS IT ZERO?
LOOP 1
;YES, GO GET NEXT RECORD
;DI SPLAY REASON FOR STOPPING
OFFH
A, 13H
;ELSE, GET 'XOFF' CHAR
2
;TURN OFF READER
; WA I T TILL XM.TR BUFFER EMPTY
3
A
B IT
1 => HIGH
7 =
ON IT

Advertisement

loading