annotate 3rdparty/utils/view/view_max.a @ 3072:32191c9fe2cd

makefiles: Always use ECHO macro define
author Tormod Volden <debian.tormod@gmail.com>
date Sun, 22 Feb 2015 14:36:52 +0100
parents 37fd74e6fad8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1706
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
1 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
2 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
3 * SUBS for Pmode 4 picture format
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
4 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
5 * MAXshowpic -- Displays picture, using putline routine
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
6 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
7 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
8
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
9 check macro
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
10 pshs b,cc
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
11 ldb #\1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
12 os9 F$PErr
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
13 puls b,cc
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
14 endm
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
15
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
16 ifp1
1912
37fd74e6fad8 Now assembles with rma, uses os9defs.d in c3
boisy
parents: 1777
diff changeset
17 use os9defs.d
1706
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
18 endc
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
19
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
20 psect view_max_a,0,0,0,0,0
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
21
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
22 vsect dp
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
23 totlines rmb 2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
24 fitcount rmb 2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
25 linesize rmb 2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
26 endsect
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
27
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
28 MAXshowpic:
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
29 bsr header Read header info, set palettes, etc.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
30
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
31 pshs d
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
32 ldd <Skiplines
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
33 beq skip01
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
34 skip00
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
35 lbsr getline
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
36 subd #1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
37 bne skip00
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
38 skip01
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
39
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
40 lbsr setscreen
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
41 lbsr setpals
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
42 lbsr setbuffer
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
43 lda <border
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
44 lbsr setborder Set the border appropriately.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
45 lbsr getline
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
46
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
47 spscreens
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
48 lbsr nextline
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
49 ldd fitcount
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
50 addd totlines
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
51 spget
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
52 std fitcount
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
53 lbsr getline
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
54 tst <Size
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
55 bne spnofit
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
56 ldd fitcount
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
57 subd #192
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
58 bge spget
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
59 std fitcount
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
60 spnofit
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
61 tst <endoffile
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
62 beq spscreens
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
63
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
64 showpicend
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
65 lbsr flipscreens
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
66
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
67 lda <format
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
68 cmpa #MAXCMPFormat If it's MAXCMP or ARTCMP, return extra memory.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
69 beq spspecial
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
70 cmpa #ARTCMPFormat
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
71 bne spnormal
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
72 spspecial
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
73 lbsr EndMAXCMP
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
74 spnormal
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
75
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
76 puls d,pc
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
77
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
78 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
79 * read header info from file, and set window type information
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
80 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
81 vsect dp
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
82 endoffile rmb 1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
83 totsize rmb 2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
84 double rmb 1 True: each line gets doubled.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
85 doublef rmb 1 True: this is first time this line's been returned.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
86 fillval rmb 1 Value to blank out lines with.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
87 pmode rmb 1 Pmode 0,1,2,3,4,5=Art.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
88 pformat rmb 1 Pseudo-format: maxcmpformat ->p41format, artcmp -> art
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
89 endsect
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
90
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
91 sizetable fcb 16,32,16,32,32,32 Bytes/line in PMode 0,1,2,3,4, ART
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
92
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
93 header
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
94 pshs a,b,x,y,u
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
95
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
96 lda <format
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
97 cmpa #MAXCMPFormat Handle MAXCMP specially
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
98 bne headmode1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
99 lda #P41Format MAXCMP looks like PMode 4
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
100 bra headmode2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
101 headmode1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
102 cmpa #ARTCMPFormat Handle ARTCMP specially
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
103 bne headmode2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
104 lda #ARTFormat ARTCMP looks like ART
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
105 headmode2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
106 sta <pformat
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
107
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
108 lda <pformat
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
109 suba #P00Format
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
110 lsra Divide by two, so A holds the pmode
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
111 sta pmode
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
112 leax sizetable,pcr
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
113 ldb a,x
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
114 clra
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
115 std linesize Set number bytes/line
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
116
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
117 lda <pformat
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
118 cmpa #ARTFormat
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
119 beq headbord ART is _really_ a 2-color mode.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
120 suba #P00Format 2-color modes need border set to 3, 4 color to 0
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
121 anda #2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
122 bne headbord1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
123 headbord
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
124 lda #3
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
125 sta <border
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
126 lda #$ff
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
127 sta fillval
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
128 headbord1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
129
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
130 lda <pmode
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
131 cmpa #1 For PMode's 0 and 1, we double each line to simulate
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
132 bhi headdoub 96 line graphics screen
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
133 com double
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
134 headdoub
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
135
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
136 leax altbuff,y Read in header into altbuff
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
137 lda <format
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
138 cmpa #MAXCMPFormat First, is this MAXCMP or ARTCMP?
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
139 beq headspecial
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
140 cmpa #ARTCMPFormat
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
141 beq headspecial If so, go decode it, etc.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
142 pshs y
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
143 ldy #5 Otherwise, just read the header.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
144 lbsr I_Read
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
145 lbcs _error
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
146 puls y
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
147 bra headnormal
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
148 headspecial
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
149 lbsr MAXCMPdecode Decode MAXCMP picture, set up header info at ,X
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
150 headnormal
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
151
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
152 lda #6
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
153 sta <type Use screen type 6: 320x192 by 4 color
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
154
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
155 leax altbuff,y Now, interpret header.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
156 lda ,x+
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
157 lbne E$Format This must be zero.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
158 ldd ,x++
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
159 std totsize This gives total # bytes in file.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
160 ldu linesize Calculate total number of lines in file.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
161 pshs u
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
162 lsr 1,s
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
163 calclines
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
164 lsra Since linesize is always a power of two, this works.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
165 rorb
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
166 lsr 1,s
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
167 bne calclines
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
168 puls u
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
169 tst double Are we doubling lines?
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
170 beq doubtot
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
171 lsla Yes, double the number of lines for proper scaling.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
172 rolb
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
173 doubtot
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
174 std totlines
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
175
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
176 leax pals01,pcr First, handle artifacted stuff as a special case.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
177 ldb <pmode
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
178 cmpb #5
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
179 beq headpals
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
180 leax pals00,pcr
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
181 ldb <pformat
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
182 subb #P00Format Formats alternate between the 4 palette choices.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
183 andb #3 So, interpret mod 4.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
184 lslb Times 4 to get the beginning of the palette
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
185 lslb
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
186 abx
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
187
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
188 headpals
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
189 leau palette,y
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
190 ldb #16
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
191 pshs b
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
192 headloop
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
193 lda ,x+
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
194 sta ,u+
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
195 dec ,s
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
196 bne headloop
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
197 puls b
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
198
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
199 * Set some miscellaneous variables
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
200 lda #1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
201 sta <cyclestart Cycle palettes 1 and 2 to allow switching artifact modes
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
202 lda #2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
203 sta <cycleend
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
204 clr <cycle
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
205 clr <extranum lda No color rotation
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
206
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
207 ldd <Skiplines
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
208 cmpd #$ffff Is Skiplines still default?
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
209 bne headskip No, don't change it.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
210 ldd #0
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
211 std <Skiplines Set it to 0
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
212 headskip
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
213
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
214 lda <Size
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
215 bpl headsize
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
216 lda #1 Default to BIG size
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
217 sta <Size
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
218 headsize
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
219
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
220 puls a,b,x,y,u,pc
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
221
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
222 * Palettes for 2-color set 0, 2-color set 1, 4-color set 0, and 4-color set 1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
223 pals00 fcb 0,0,0,18 Black and green.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
224 pals01 fcb 0,9,36,63 Includes artifacted colors.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
225 pals10 fcb 18,54,36,9
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
226 pals11 fcb 63,27,45,38
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
227
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
228
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
229 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
230 * Getline
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
231 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
232 getline
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
233 pshs a,b,x,y,u
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
234 * If doublef is set, return same line again
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
235 tst double Is double in effect?
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
236 beq nodoub No, just do normal thing.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
237 tst doublef
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
238 bne getline1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
239 nodoub
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
240 * First, clear out buffer
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
241 leau linebuff,y
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
242 lda fillval
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
243 ldb #160
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
244 getline3
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
245 sta ,u+
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
246 decb
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
247 bne getline3
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
248 * If at end of file, leave it that way
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
249 tst endoffile
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
250 lbne getline1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
251 * Get a line from the file
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
252 leax linebuff+8,y read in one line of screen
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
253 ldd <totsize
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
254 cmpd linesize
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
255 bhs getlok
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
256 com endoffile If <1 line left, mark end of file and quit.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
257 lbra getline1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
258 getlok
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
259 pshs y
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
260 ldy linesize Get 1 line's worth
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
261 lbsr getmaxline
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
262 puls y
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
263 lbcs geteof Error through EOF check.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
264 ldd <totsize
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
265 subd linesize Count down bytes in file.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
266 std <totsize
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
267 * Now, we have to expand the bytes to get a good picture format.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
268 ldb <pmode
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
269 bitb #1 Odd pmode's are 4-color
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
270 bne cnvcol
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
271 cnvbw
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
272 bsr oneexpand Everything else is 2-color.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
273 bra cnvfinish
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
274 cnvcol
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
275 bsr twoexpand
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
276 cnvfinish
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
277 ldd linesize
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
278 lslb We already doubled the line size once.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
279 cnfloop
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
280 cmpb #64
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
281 bhs getline7
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
282 bsr twoexpand Expand out line until it's 64 bytes long.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
283 lslb
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
284 bra cnfloop
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
285
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
286 getline7
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
287 tst <Size
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
288 bne getline1 If Big or larger, don't do horizontal scaling
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
289 ldd <totlines
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
290 cmpd #300
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
291 blo getline1 If not double-page, don't do scaling.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
292 bsr horscale Do the scaling
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
293 bra getline1 End.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
294
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
295 geteof
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
296 cmpb #E$EOF
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
297 bne getline4
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
298 com endoffile
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
299 bra getline1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
300 getline4
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
301 lbra _error If not EOF, just exit with error.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
302 getline1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
303 com doublef Complement double flag.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
304 puls a,b,x,y,u,pc
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
305
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
306 * X points to location, Y holds needed count
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
307 getmaxline
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
308 pshs a
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
309 lda <format
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
310 cmpa #MAXCMPFormat
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
311 beq getlinespecial
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
312 cmpa #ARTCMPFormat
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
313 beq getlinespecial
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
314
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
315 lbsr I_Read Just Read line if normal file
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
316 bra getlinenormal
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
317 getlinespecial
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
318
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
319 lbsr MAXCMPline
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
320 getlinenormal
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
321 puls a,pc
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
322
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
323 arttable fcb $00,$05,$0A,$0F,$50,$55,$5A,$5F,$A0,$A5,$AA,$AF,$F0,$F5,$FA,$FF
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
324 pm4table fcb $00,$03,$0C,$0F,$30,$33,$3C,$3F,$C0,$C3,$CC,$CF,$F0,$F3,$FC,$FF
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
325
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
326 oneexpand
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
327 pshs a,b,x,y,u
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
328 leay pm4table,pcr Expand each 1 bit to 2 bits
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
329 bra cnvdo
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
330 twoexpand
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
331 pshs a,b,x,y,u
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
332 leay arttable,pcr Double each 2 bits
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
333 cnvdo
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
334 leau 64,x
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
335 leax 32,x Expand 32 bytes out to 64.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
336 lda #32
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
337 pshs a
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
338 cnvloop
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
339 lda ,-x
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
340 tfr a,b
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
341 lsra
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
342 lsra
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
343 lsra
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
344 lsra
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
345 andb #$0f
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
346 lda a,y
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
347 ldb b,y
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
348 std ,--u
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
349 dec ,s
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
350 bne cnvloop
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
351 puls a
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
352 puls a,b,x,y,u,pc
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
353
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
354 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
355 * Take the picture line and squeeze it horizontally by half.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
356 *
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
357 horscale
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
358 pshs a,b,x,u
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
359 leax linebuff+8,y
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
360 leau linebuff+8,y
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
361 bsr horsub1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
362 leax linebuff+72,y
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
363 leau linebuff+40,y
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
364 bsr horsub2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
365 puls a,b,x,u,pc
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
366
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
367 horsub0
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
368 bsr horsuba Do it twice.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
369 horsuba
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
370 lslb Move 1 pixel over, skip one.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
371 rola
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
372 lslb
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
373 rola
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
374 lslb
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
375 lslb
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
376 rts
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
377
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
378 * Compress the picture.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
379 horsub1
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
380 ldb #32 We do two bytes at a time.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
381 pshs b
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
382 horsloop
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
383 ldb ,x+
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
384 bsr horsub0
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
385 ldb ,x+
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
386 bsr horsub0
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
387 sta ,u+
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
388 dec ,s
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
389 bne horsloop
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
390 puls b
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
391 rts
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
392
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
393 * Center result data on line.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
394 horsub2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
395 bsr horsub3 Clear out last 16 bytes on line.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
396 ldb #32
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
397 horsloop2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
398 lda ,-u Move 32 bytes to center.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
399 sta ,-x
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
400 decb
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
401 bne horsloop2
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
402 horsub3
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
403 lda linebuff,y
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
404 ldb #16
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
405 horsloop3
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
406 sta ,-x Clear out first 16 bytes.
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
407 decb
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
408 bne horsloop3
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
409 rts
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
410
6b23465701c0 Tim Kientzle's VIEW
boisy
parents:
diff changeset
411 endsect