-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathassembler_source.txt
More file actions
52 lines (52 loc) · 2.47 KB
/
Copy pathassembler_source.txt
File metadata and controls
52 lines (52 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
COPY START 0 COPY FILE FROM INPUT TO OUTPUT
FIRST STL RETADR SAVE RETURN ADDRESS >> 14202D
LDB #LENGTH ESTABLISH BASE REGISTER
BASE LENGTH
CLOOP +JSUB RDREC READ INPUT RECORD
LDA LENGTH TEST FOR EOF (LENGTH = 0)
COMP #0
JEQ ENDFIL EXIT IF EOF FOUND
+JSUB WRREC WRITE OUTPUT RECORD
J CLOOP LOOP
ENDFIL LDA EOF INSERT END OF FILE MARKER
STA BUFFER
LDA #3 SET LEUXTGTH = 3
STA LENGTH
+JSUB WRREC WRITE EOF
J @RETADR RETURN TO CALLER
EOF BYTE C'EOF'
RETADR RESW 1
LENGTH RESW 1 LENGTH OF RECORD
BUFFER RESB 4096 4096-BYTE BUFFER AREA
.
. SUBROUTINE TO READ RECORD INTO BUFFER
.
RDREC CLEAR X CLEAR LOOP COUNTER
CLEAR A CLEAR A TO ZERO
CLEAR S CLEAR S TO ZERO
+LDT #4096
RLOOP TD INPUT TEST INPUT DEVICE
JEQ RLOOP LOOP UNTIL READY
RD INPUT READ CHARACTER INTO REGISTER
COMPR A,S TEST FOR END OF RECORD (X'00)
JEQ EXIT EXIT LOOP IF EOR
STCH BUFFER,X STORE CHARACTER IN BUFFER
TIXR T LOOP UBLESS MAX BUFFER
JLT RLOOP HAS BEEN REACHED
EXIT STX LENGTH SAVE RECORD LENGTH
RSUB RETURN TO CALLER
INPUT BYTE X'F1' CODE FOR INPUT DEVICE
.
. SUBROUTINE TO WRITE RECORD FROM BUFFER
.
WRREC CLEAR X CLEAR LOOP COUNTER
LDT LENGTH
WLOOP TD OUTPUT TEST OUTPUT DEVICE
JEQ WLOOP LOOP UNTIL READY
LDCH BUFFER,X GET CHARACTER FROM BUFFER
WD OUTPUT WRITE CHARACTER
TIXR T LOOP UNTIL ALL CHARACTERS
JLT WLOOP HAVE BEEN WRITTEN
RSUB RETURN TO CALLER
OUTPUT BYTE X'05' CODE FOR OUTPUT DEVICE
END FIRST