-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathincGDUMPCommand.asm
224 lines (199 loc) · 3.85 KB
/
incGDUMPCommand.asm
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
;*******************************************************************************
;* GDUMP Command *
;* This BASIC function to print the Graphics Screen to a printer *
;* *****************************************************************************
;* Syntax : GDUMP or G Shifted U *
;*******************************************************************************
; gdump :
COM_GDUMP
DUMP
lda #4 ; Logical File Number
tax ; Device Number
ldy #255 ; Secondary Address
jsr krljmp_SETLFS$
tya ; Filename Location
tax ; " "
lda #0 ; Filename Length
jsr krljmp_SETNAM$
jsr krljmp_OPEN$
ldx #4 ; Logical File Number
jsr krljmp_CHKOUT$ ; Set Output to the above logical file#
;lda #200
;sta COMM_Y1
;lda #0
;sta COMM_Y2
lda #1
sta COMM_Yl
Dump_ColumnLooper
DUMP9
lda #0
sta COMM_XLLO
sta COMM_XLHI
sta COMM_Y2
sta COMM_AXLO ; Byte to be Printed
lda #8 ; Setting Printer into GRAPHICS MODE
jsr krljmp_CHROUT$
DUMP_VerticalByteLooper
DUMP4
lda COMM_XLLO
sta COMM_XLO
lda COMM_XLHI
sta COMM_XHI
lda COMM_Y1
sec
sbc COMM_Y2
sta COMM_Y
jsr PLACE
lda $01
and #$fe ; Remove BASIC
sta $01
ldx COMM_C
lda BYTEMASK,x
ldy #0
and (RIBUF),y
cmp BYTEMASK,x
beq dump3
DUMP6
lda $01
ora #1 ; ReInstate BASIC
sta $01
ldx COMM_Y2
inx
stx COMM_Y2
cpx #7
bne dump4
jmp dump5
DUMP_UpdatePrintByte
DUMP3
lda #7
sec
sbc COMM_Y2
tax
lda BYTEMASK,x
clc
adc COMM_AXLO
sta COMM_AXLO
jmp dump6
DUMP_PrintByte
DUMP5
lda COMM_AXLO
clc
adc #128
sta COMM_AXLO
jsr krljmp_CHROUT$
inc COMM_XLLO
bne @ByPassInc
inc COMM_XLHI
@ByPassInc
lda COMM_XLHI
cmp #1
beq @TestLoByteForHiByte1
jmp dump11
@TestLoByteForHiByte1
lda COMM_XLLO
cmp #64
beq @PrintLineComplete
jmp dump11
@PrintLineComplete
lda COMM_Y1
sec
sbc #7
sta COMM_Y1
cmp #5
bcc DUMP_EndPrinting
lda #13 ; Print Enter
jsr krljmp_CHROUT$
jmp dump9
DUMP_EndPrinting
jsr dump12
lda #15 ; Set Printer ot Standard Mode
jsr krljmp_CHROUT$
lda #15
jsr krljmp_CHROUT$
lda #13 ; Print Enter
jsr krljmp_CHROUT$
jsr krljmp_CLRCHN$
lda #4
jmp krljmp_CLOSE$
DUMP_RESETForNextColumn
DUMP11
lda #0
sta COMM_AXLO
sta COMM_Y2
jmp dump4
DUMP_PrepareNextLine
DUMP12
lda #0
sta COMM_XLLO
sta COMM_XLHI
sta COMM_Y2
sta COMM_AXLO
lda #13 ; Print Enter
jsr krljmp_CHROUT$
lda #8 ; Set Printer into Graphics Mode
jsr krljmp_CHROUT$
DUMP13
lda COMM_XLLO
sta COMM_XLO
lda COMM_XLHI
sta COMM_XHI
lda COMM_Y1
sec
sbc COMM_Y2
sta COMM_Y
jsr PLACE
lda $01
and #$fe ; Remove BASIC
sta $01
ldx COMM_C
lda BYTEMASK,x
ldy #0
and (RIBUF),y
cmp BYTEMASK,x
beq dump14
DUMP15
lda $01
ora #1 ; ReInstate BASIC
sta $01
ldx COMM_Y2
inx
stx COMM_Y2
cpx #5
bne dump13
jmp dump16
DUMP14
lda #7
sec
sbc COMM_Y2
tax
lda BYTEMASK,x
clc
adc COMM_AXLO
sta COMM_AXLO
jmp DUMP15
DUMP16
lda COMM_AXLO
clc
adc #128
sta COMM_AXLO
jsr krljmp_CHROUT$
inc COMM_XLLO
bne @ByPassInc
inc COMM_XLHI
@ByPassInc
lda COMM_XLHI
cmp #1
beq @TestLo
jmp dump18
@TestLo
lda COMM_XLLO
cmp #64
beq @GoEnd
jmp dump18
@GoEnd
rts
DUMP18
lda #0
sta COMM_AXLO
sta COMM_Y2
jmp dump13