mirror of
https://github.com/Michaelangel007/apple2_printshop_viewer.git
synced 2025-04-22 21:37:01 +00:00
243 lines
35 KiB
Plaintext
243 lines
35 KiB
Plaintext
------+---------------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
|
Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code
|
|
------+---------------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|
|
1 | 1 minipixviewer.s 1 | Comment | 11 | | 0 | 00/8000 | ; PrintShop / MiniPix Unpacker and Viewer
|
|
2 | 1 minipixviewer.s 2 | Comment | 11 | | 0 | 00/8000 | ; Version 5, March 31, 2019
|
|
3 | 1 minipixviewer.s 3 | Comment | 11 | | 0 | 00/8000 | ; Copyleft Michaelangel007
|
|
4 | 1 minipixviewer.s 4 | Comment | 11 | | 0 | 00/8000 | ; "Sharing is Caring"
|
|
5 | 1 minipixviewer.s 5 | Empty | 11 | | 0 | 00/8000 |
|
|
6 | 1 minipixviewer.s 6 | Empty | 11 | | 0 | 00/8000 |
|
|
7 | 1 minipixviewer.s 7 | Comment | 11 | | 0 | 00/8000 | ; === Our Zero Page Variables ===
|
|
8 | 1 minipixviewer.s 8 | Empty | 11 | | 0 | 00/8000 |
|
|
9 | 1 minipixviewer.s 9 | Equivalence | 11 | | 0 | 00/8000 | zSrcPtr = $F7 ; 16-bit pointr to source packed PrintShop graphic
|
|
10 | 1 minipixviewer.s 10 | Equivalence | 11 | | 0 | 00/8000 | zSrcBits = $F9
|
|
11 | 1 minipixviewer.s 11 | Equivalence | 11 | | 0 | 00/8000 | zSrcMask = $FA ; counter 0 .. 7
|
|
12 | 1 minipixviewer.s 12 | Equivalence | 11 | | 0 | 00/8000 | zSrcCol = $FB ; cache of Y reg for lda (zSrcPtr),Y
|
|
13 | 1 minipixviewer.s 13 | Empty | 11 | | 0 | 00/8000 |
|
|
14 | 1 minipixviewer.s 14 | Equivalence | 11 | | 0 | 00/8000 | zDstPtr = $26 ; 16-bit pointer to dest; GBASL
|
|
15 | 1 minipixviewer.s 15 | Empty | 11 | | 0 | 00/8000 |
|
|
16 | 1 minipixviewer.s 16 | Equivalence | 11 | | 0 | 00/8000 | zDstRow = $FC
|
|
17 | 1 minipixviewer.s 17 | Equivalence | 11 | | 0 | 00/8000 | zDstBits = $FD
|
|
18 | 1 minipixviewer.s 18 | Equivalence | 11 | | 0 | 00/8000 | zDstColMod7 = $FE
|
|
19 | 1 minipixviewer.s 19 | Equivalence | 11 | | 0 | 00/8000 | zDstRowMod3 = $FF
|
|
20 | 1 minipixviewer.s 20 | Empty | 11 | | 0 | 00/8000 |
|
|
21 | 1 minipixviewer.s 21 | Empty | 11 | | 0 | 00/8000 |
|
|
22 | 1 minipixviewer.s 22 | Comment | 11 | | 0 | 00/8000 | ; === PrintShop ===
|
|
23 | 1 minipixviewer.s 23 | Empty | 11 | | 0 | 00/8000 |
|
|
24 | 1 minipixviewer.s 24 | Equivalence | 11 | | 0 | 00/8000 | PrintShopSprite = $5800 ; Default load adddress
|
|
25 | 1 minipixviewer.s 25 | Comment | 11 | | 0 | 00/8000 | ;LEN = 572 ; File size
|
|
26 | 1 minipixviewer.s 26 | Empty | 11 | | 0 | 00/8000 |
|
|
27 | 1 minipixviewer.s 27 | Comment | 11 | | 0 | 00/8000 | ; Dimensions
|
|
28 | 1 minipixviewer.s 28 | Equivalence | 11 | | 0 | 00/8000 | W_PIXELS = 88
|
|
29 | 1 minipixviewer.s 29 | Equivalence | 11 | | 0 | 00/8000 | W_BYTES = 88/8 ; Source (Packed) Bytes/Row
|
|
30 | 1 minipixviewer.s 30 | Equivalence | 11 | | 0 | 00/8000 | H_PIXELS = 52
|
|
31 | 1 minipixviewer.s 31 | Empty | 11 | | 0 | 00/8000 |
|
|
32 | 1 minipixviewer.s 32 | Equivalence | 11 | | 0 | 00/8000 | X_SCALE = 2 ; Not actually used as hard-coded. For reference
|
|
33 | 1 minipixviewer.s 33 | Equivalence | 11 | | 0 | 00/8000 | Y_SCALE = 3
|
|
34 | 1 minipixviewer.s 34 | Empty | 11 | | 0 | 00/8000 |
|
|
35 | 1 minipixviewer.s 35 | Empty | 11 | | 0 | 00/8000 |
|
|
36 | 1 minipixviewer.s 36 | Comment | 11 | | 0 | 00/8000 | ; === Applesoft/Monitor Zero Page Variables ===
|
|
37 | 1 minipixviewer.s 37 | Empty | 11 | | 0 | 00/8000 |
|
|
38 | 1 minipixviewer.s 38 | Equivalence | 11 | | 0 | 00/8000 | MON_GBAS = $26 ; 16-bit Pointer to HGR scanline
|
|
39 | 1 minipixviewer.s 39 | Empty | 11 | | 0 | 00/8000 |
|
|
40 | 1 minipixviewer.s 40 | Equivalence | 11 | | 0 | 00/8000 | HGR_COLOR = $E4 ;
|
|
41 | 1 minipixviewer.s 41 | Equivalence | 11 | | 0 | 00/8000 | HGR_HORIZ = $E5 ; X column / 7 = scanline byte offset
|
|
42 | 1 minipixviewer.s 42 | Equivalence | 11 | | 0 | 00/8000 | HGR_PAGE = $E6 ; $20 or $40
|
|
43 | 1 minipixviewer.s 43 | Empty | 11 | | 0 | 00/8000 |
|
|
44 | 1 minipixviewer.s 44 | Empty | 11 | | 0 | 00/8000 |
|
|
45 | 1 minipixviewer.s 45 | Comment | 11 | | 0 | 00/8000 | ; === I/O Softswitches ===
|
|
46 | 1 minipixviewer.s 46 | Empty | 11 | | 0 | 00/8000 |
|
|
47 | 1 minipixviewer.s 47 | Equivalence | 11 | | 0 | 00/8000 | TXTCLR = $C050 ; Graphics mode
|
|
48 | 1 minipixviewer.s 48 | Equivalence | 11 | | 0 | 00/8000 | TXTSET = $C051
|
|
49 | 1 minipixviewer.s 49 | Empty | 11 | | 0 | 00/8000 |
|
|
50 | 1 minipixviewer.s 50 | Equivalence | 11 | | 0 | 00/8000 | MIXCLR = $C052 ; Split screen
|
|
51 | 1 minipixviewer.s 51 | Equivalence | 11 | | 0 | 00/8000 | MIXSET = $C053 ; Full screen
|
|
52 | 1 minipixviewer.s 52 | Empty | 11 | | 0 | 00/8000 |
|
|
53 | 1 minipixviewer.s 53 | Equivalence | 11 | | 0 | 00/8000 | PAGE1 = $C054
|
|
54 | 1 minipixviewer.s 54 | Equivalence | 11 | | 0 | 00/8000 | PAGE2 = $C055
|
|
55 | 1 minipixviewer.s 55 | Empty | 11 | | 0 | 00/8000 |
|
|
56 | 1 minipixviewer.s 56 | Equivalence | 11 | | 0 | 00/8000 | LORES = $C056
|
|
57 | 1 minipixviewer.s 57 | Equivalence | 11 | | 0 | 00/8000 | HIRES = $C057
|
|
58 | 1 minipixviewer.s 58 | Empty | 11 | | 0 | 00/8000 |
|
|
59 | 1 minipixviewer.s 59 | Empty | 11 | | 0 | 00/8000 |
|
|
60 | 1 minipixviewer.s 60 | Comment | 11 | | 0 | 00/8000 | ; === Applesoft/Monitor ROM ===
|
|
61 | 1 minipixviewer.s 61 | Empty | 11 | | 0 | 00/8000 |
|
|
62 | 1 minipixviewer.s 62 | Equivalence | 11 | | 0 | 00/8000 | HGR = $F3E2 ; Clear and View HGR with mixed text/graphics
|
|
63 | 1 minipixviewer.s 63 | Equivalence | 11 | | 0 | 00/8000 | HCLR = $F3F2
|
|
64 | 1 minipixviewer.s 64 | Equivalence | 11 | | 0 | 00/8000 | HPOSN = $F411 ; Set GBASL, GBASH, MON.HMASK, HGR.BITS ; uses HGR.PAGE,
|
|
65 | 1 minipixviewer.s 65 | Equivalence | 11 | | 0 | 00/8000 | MOVE.DOWN = $F505 ; Update GBASL, GBASH
|
|
66 | 1 minipixviewer.s 66 | Equivalence | 11 | | 0 | 00/8000 | COLORTBL = $F6F6 ; byte colors[7]
|
|
67 | 1 minipixviewer.s 67 | Equivalence | 11 | | 0 | 00/8000 | HCOLOR = $F6E9
|
|
68 | 1 minipixviewer.s 68 | Empty | 11 | | 0 | 00/8000 |
|
|
69 | 1 minipixviewer.s 69 | Equivalence | 11 | | 0 | 00/8000 | HOME = $FC58
|
|
70 | 1 minipixviewer.s 70 | Empty | 11 | | 0 | 00/8000 |
|
|
71 | 1 minipixviewer.s 71 | Comment | 11 | | 0 | 00/8000 | ; =====================================================================
|
|
72 | 1 minipixviewer.s 72 | Empty | 11 | | 0 | 00/8000 |
|
|
73 | 1 minipixviewer.s 73 | Directive | 11 | | 0 | 00/8000 | ORG $6000
|
|
74 | 1 minipixviewer.s 74 | Empty | 11 | | 0 | 00/6000 |
|
|
75 | 1 minipixviewer.s 75 | Empty | 11 | | 0 | 00/6000 | PrintShopViewer
|
|
76 | 1 minipixviewer.s 76 | Empty | 11 | | 0 | 00/6000 |
|
|
77 | 1 minipixviewer.s 77 | Code | 11 | | 3 | 00/6000 : 20 E2 F3 | jsr {$F3E2}
|
|
78 | 1 minipixviewer.s 78 | Code | 11 | | 3 | 00/6003 : 8D 52 C0 | sta {$C052} ; Full screen
|
|
79 | 1 minipixviewer.s 79 | Empty | 11 | | 0 | 00/6006 |
|
|
80 | 1 minipixviewer.s 80 | Code | 11 | | 2 | 00/6006 : A2 58 | ldx #>{$5800}
|
|
81 | 1 minipixviewer.s 81 | Code | 11 | | 2 | 00/6008 : A0 00 | ldy #<{$5800}
|
|
82 | 1 minipixviewer.s 82 | Code | 11 | | 2 | 00/600A : 86 F8 | stx {$F7}+1
|
|
83 | 1 minipixviewer.s 83 | Code | 11 | | 2 | 00/600C : 84 F7 | sty {$F7}+0
|
|
84 | 1 minipixviewer.s 84 | Empty | 11 | | 0 | 00/600E |
|
|
85 | 1 minipixviewer.s 85 | Comment | 11 | | 0 | 00/600E | ; Src PS 2x is 88 * 2x scaling = 176 pixels
|
|
86 | 1 minipixviewer.s 86 | Comment | 11 | | 0 | 00/600E | ; Dstr HGR screen is 40 columns * 7 px/col = 280 pixels
|
|
87 | 1 minipixviewer.s 87 | Comment | 11 | | 0 | 00/600E | ; =====================================================================
|
|
88 | 1 minipixviewer.s 88 | Empty | 11 | | 0 | 00/600E |
|
|
89 | 1 minipixviewer.s 89 | Comment | 11 | | 0 | 00/600E | ; Horz Centering:
|
|
90 | 1 minipixviewer.s 90 | Comment | 11 | | 0 | 00/600E | ; = (280 - W_PIXELS*X_SCALE)/2
|
|
91 | 1 minipixviewer.s 91 | Comment | 11 | | 0 | 00/600E | ; = (280 - 88*2)/2
|
|
92 | 1 minipixviewer.s 92 | Comment | 11 | | 0 | 00/600E | ; = 52 px/col
|
|
93 | 1 minipixviewer.s 93 | Comment | 11 | | 0 | 00/600E | ; = 52 px / 7px/col
|
|
94 | 1 minipixviewer.s 94 | Comment | 11 | | 0 | 00/600E | ; = 7.42... = scanline offset
|
|
95 | 1 minipixviewer.s 95 | Comment | 11 | | 0 | 00/600E | ;
|
|
96 | 1 minipixviewer.s 96 | Comment | 11 | | 0 | 00/600E | ; 52 px mod 7 px/byte
|
|
97 | 1 minipixviewer.s 97 | Comment | 11 | | 0 | 00/600E | ; = 52 mod 7
|
|
98 | 1 minipixviewer.s 98 | Comment | 11 | | 0 | 00/600E | ; = 3
|
|
99 | 1 minipixviewer.s 99 | Equivalence | 11 | | 0 | 00/600E | CENTER_X = 52
|
|
100 | 1 minipixviewer.s 100 | Equivalence | 11 | | 0 | 00/600E | X_MOD_7 = 1 ; Since each pixel is doubled we need to divide (52 mod 7) / 2
|
|
101 | 1 minipixviewer.s 101 | Empty | 11 | | 0 | 00/600E |
|
|
102 | 1 minipixviewer.s 102 | Comment | 11 | | 0 | 00/600E | ; Vert Centering:
|
|
103 | 1 minipixviewer.s 103 | Comment | 11 | | 0 | 00/600E | ; = (192 - H_PIXELS*Y_SCALE)/2
|
|
104 | 1 minipixviewer.s 104 | Comment | 11 | | 0 | 00/600E | ; = (192 - 52*3)/2
|
|
105 | 1 minipixviewer.s 105 | Comment | 11 | | 0 | 00/600E | ; = (192 - 156) / 2
|
|
106 | 1 minipixviewer.s 106 | Comment | 11 | | 0 | 00/600E | ; = 18
|
|
107 | 1 minipixviewer.s 107 | Equivalence | 11 | | 0 | 00/600E | CENTER_Y = {192-{{52}*{3}}}/2
|
|
108 | 1 minipixviewer.s 108 | Empty | 11 | | 0 | 00/600E |
|
|
109 | 1 minipixviewer.s 109 | Comment | 11 | | 0 | 00/600E | ; DEBUG -- Same x,y as PrintShop Graphic Editor
|
|
110 | 1 minipixviewer.s 110 | Comment | 11 | | 0 | 00/600E | ;CENTER_Y = 23
|
|
111 | 1 minipixviewer.s 111 | Comment | 11 | | 0 | 00/600E | ;CENTER_X = 0
|
|
112 | 1 minipixviewer.s 112 | Empty | 11 | | 0 | 00/600E |
|
|
113 | 1 minipixviewer.s 113 | Empty | 11 | | 0 | 00/600E |
|
|
114 | 1 minipixviewer.s 114 | Comment | 11 | | 0 | 00/600E | ; Image will be centered on screen
|
|
115 | 1 minipixviewer.s 115 | Comment | 11 | | 0 | 00/600E | ; HGR does NOT need to be cleared to black as we set each byte to zero
|
|
116 | 1 minipixviewer.s 116 | Comment | 11 | | 0 | 00/600E | ; ==========
|
|
117 | 1 minipixviewer.s 117 | Empty | 11 | | 0 | 00/600E | UnpackToScreenHGR
|
|
118 | 1 minipixviewer.s 118 | Code | 11 | | 2 | 00/600E : A9 12 | lda #{{192-{{52}*{3}}}/2}; y = 18
|
|
119 | 1 minipixviewer.s 119 | Code | 11 | | 2 | 00/6010 : 85 FC | sta {$FC}
|
|
120 | 1 minipixviewer.s 120 | Code | 11 | | 2 | 00/6012 : A0 00 | ldy #0 ; HPOSN: column = Y,X
|
|
121 | 1 minipixviewer.s 121 | Code | 11 | | 2 | 00/6014 : 84 E4 | sty {$E4} ; 0 = Black
|
|
122 | 1 minipixviewer.s 122 | Empty | 11 | | 0 | 00/6016 |
|
|
123 | 1 minipixviewer.s 123 | Empty | 11 | | 0 | 00/6016 | _NextTripleY
|
|
124 | 1 minipixviewer.s 124 | Code | 11 | | 2 | 00/6016 : 84 FF | sty {$FF} ; Do y scaling
|
|
125 | 1 minipixviewer.s 125 | Empty | 11 | | 0 | 00/6018 |
|
|
126 | 1 minipixviewer.s 126 | Empty | 11 | | 0 | 00/6018 | _NextSrcRow
|
|
127 | 1 minipixviewer.s 127 | Code | 11 | | 2 | 00/6018 : A2 34 | ldx #{52} ; HPOSN: column = y,X
|
|
128 | 1 minipixviewer.s 128 | Code | 11 | | 2 | 00/601A : A5 FC | lda {$FC} ; HPOSN: row = A
|
|
129 | 1 minipixviewer.s 129 | Code | 11 | | 3 | 00/601C : 20 17 F4 | jsr {$F411}+6 ; We don't use HGR.X .. HGR.Y @ $E0 .. $E2
|
|
130 | 1 minipixviewer.s 130 | Code | 11 | | 1 | 00/601F : A8 | tay ; on exit A = HGR.COLOR = 0 @ $F450
|
|
131 | 1 minipixviewer.s 131 | Code | 11 | | 2 | 00/6020 : 85 FB | sta {$FB} ; Y = zSrcCol
|
|
132 | 1 minipixviewer.s 132 | Code | 11 | | 2 | 00/6022 : 85 FD | sta {$FD}
|
|
133 | 1 minipixviewer.s 133 | Empty | 11 | | 0 | 00/6024 |
|
|
134 | 1 minipixviewer.s 134 | Code | 11 | | 1 | 00/6024 : 18 | clc ; GBAS points to start of scanline
|
|
135 | 1 minipixviewer.s 135 | Code | 11 | | 2 | 00/6025 : A5 E5 | lda {$E5} ; Take X column into account
|
|
136 | 1 minipixviewer.s 136 | Code | 11 | | 2 | 00/6027 : 65 26 | adc {$26}
|
|
137 | 1 minipixviewer.s 137 | Code | 11 | | 2 | 00/6029 : 85 26 | sta {$26}
|
|
138 | 1 minipixviewer.s 138 | Empty | 11 | | 0 | 00/602B |
|
|
139 | 1 minipixviewer.s 139 | Code | 11 | | 2 | 00/602B : A2 01 | ldx #{1} ; LDX Can be optimized out if x mod 7 is 0
|
|
140 | 1 minipixviewer.s 140 | Code | 11 | | 2 | 00/602D : 86 FE | stx {$FE} ;
|
|
141 | 1 minipixviewer.s 141 | Empty | 11 | | 0 | 00/602F |
|
|
142 | 1 minipixviewer.s 142 | Empty | 11 | | 0 | 00/602F | _NextSrcByte
|
|
143 | 1 minipixviewer.s 143 | Code | 11 | | 2 | 00/602F : A9 01 | lda #1 ; Unpack 8 bits since source = monochrome 8 bits/pix
|
|
144 | 1 minipixviewer.s 144 | Code | 11 | | 2 | 00/6031 : 85 FA | sta {$FA}
|
|
145 | 1 minipixviewer.s 145 | Empty | 11 | | 0 | 00/6033 |
|
|
146 | 1 minipixviewer.s 146 | Code | 11 | | 2 | 00/6033 : B1 F7 | lda ({$F7}),y ; Loop Invariant: Y = zSrcCol
|
|
147 | 1 minipixviewer.s 147 | Code | 11 | | 2 | 00/6035 : 85 F9 | sta {$F9}
|
|
148 | 1 minipixviewer.s 148 | Empty | 11 | | 0 | 00/6037 |
|
|
149 | 1 minipixviewer.s 149 | Empty | 11 | | 0 | 00/6037 | _UnpackSrcBits ; same source byte
|
|
150 | 1 minipixviewer.s 150 | Code | 11 | | 2 | 00/6037 : 06 F9 | asl {$F9}
|
|
151 | 1 minipixviewer.s 151 | Code | 11 | | 2 | 00/6039 : A5 FD | lda {$FD}
|
|
152 | 1 minipixviewer.s 152 | Code | 11 | | 2 | 00/603B : B0 05 | bcs _PutOne
|
|
153 | 1 minipixviewer.s 153 | Empty | 11 | | 0 | 00/603D | _PutZero ; 0 = white
|
|
154 | 1 minipixviewer.s 154 | Code | 11 | | 3 | 00/603D : 1D 9F 60 | ora Column2ColorHGR,X
|
|
155 | 1 minipixviewer.s 155 | Code | 11 | | 2 | 00/6040 : 85 FD | sta {$FD}
|
|
156 | 1 minipixviewer.s 156 | Empty | 11 | | 0 | 00/6042 | _PutOne ; 1 = black
|
|
157 | 1 minipixviewer.s 157 | Comment | 11 | | 0 | 00/6042 | ; nothing to do since zDstBits initialized to zero
|
|
158 | 1 minipixviewer.s 158 | Code | 11 | | 1 | 00/6042 : E8 | inx
|
|
159 | 1 minipixviewer.s 159 | Code | 11 | | 2 | 00/6043 : E0 04 | cpx #4
|
|
160 | 1 minipixviewer.s 160 | Code | 11 | | 2 | 00/6045 : F0 04 | beq _NextDstByte
|
|
161 | 1 minipixviewer.s 161 | Code | 11 | | 2 | 00/6047 : E0 07 | cpx #7
|
|
162 | 1 minipixviewer.s 162 | Code | 11 | | 2 | 00/6049 : D0 13 | bne _SameDstByte
|
|
163 | 1 minipixviewer.s 163 | Empty | 11 | | 0 | 00/604B |
|
|
164 | 1 minipixviewer.s 164 | Empty | 11 | | 0 | 00/604B | _NextDstByte
|
|
165 | 1 minipixviewer.s 165 | Code | 11 | | 2 | 00/604B : 84 FB | sty {$FB} ; 65C02: PHY
|
|
166 | 1 minipixviewer.s 166 | Code | 11 | | 3 | 00/604D : 20 8A 60 | jsr PutHgrByte
|
|
167 | 1 minipixviewer.s 167 | Code | 11 | | 2 | 00/6050 : 85 FD | sta {$FD}
|
|
168 | 1 minipixviewer.s 168 | Code | 11 | | 2 | 00/6052 : A4 FB | ldy {$FB} ; 65C02: PLY
|
|
169 | 1 minipixviewer.s 169 | Empty | 11 | | 0 | 00/6054 |
|
|
170 | 1 minipixviewer.s 170 | Code | 11 | | 2 | 00/6054 : E6 26 | inc {$26}+0
|
|
171 | 1 minipixviewer.s 171 | Code | 11 | | 2 | 00/6056 : E0 07 | cpx #7
|
|
172 | 1 minipixviewer.s 172 | Code | 11 | | 2 | 00/6058 : D0 04 | bne _SameDstByte
|
|
173 | 1 minipixviewer.s 173 | Code | 11 | | 2 | 00/605A : A2 00 | ldx #0
|
|
174 | 1 minipixviewer.s 174 | Code | 11 | | 2 | 00/605C : 86 FE | stx {$FE}
|
|
175 | 1 minipixviewer.s 175 | Empty | 11 | | 0 | 00/605E |
|
|
176 | 1 minipixviewer.s 176 | Empty | 11 | | 0 | 00/605E | _SameDstByte
|
|
177 | 1 minipixviewer.s 177 | Code | 11 | | 2 | 00/605E : 06 FA | asl {$FA}
|
|
178 | 1 minipixviewer.s 178 | Code | 11 | | 2 | 00/6060 : 90 D5 | bcc _UnpackSrcBits ; After 8 loops
|
|
179 | 1 minipixviewer.s 179 | Empty | 11 | | 0 | 00/6062 |
|
|
180 | 1 minipixviewer.s 180 | Code | 11 | | 1 | 00/6062 : C8 | iny
|
|
181 | 1 minipixviewer.s 181 | Code | 11 | | 2 | 00/6063 : 84 FB | sty {$FB}
|
|
182 | 1 minipixviewer.s 182 | Code | 11 | | 2 | 00/6065 : C0 0B | cpy #{88/8}
|
|
183 | 1 minipixviewer.s 183 | Code | 11 | | 2 | 00/6067 : 90 C6 | bcc _NextSrcByte
|
|
184 | 1 minipixviewer.s 184 | Empty | 11 | | 0 | 00/6069 |
|
|
185 | 1 minipixviewer.s 185 | Code | 11 | | 2 | 00/6069 : A5 FD | lda {$FD} ;
|
|
186 | 1 minipixviewer.s 186 | Comment | 11 | | 0 | 00/606B | ; ldy #0 ; Need Y=0 for :NextSrcRow --> col = Y,X
|
|
187 | 1 minipixviewer.s 187 | Comment | 11 | | 0 | 00/606B | ; sta (zDstPtr),Y ; Need last pixel on this scanline
|
|
188 | 1 minipixviewer.s 188 | Code | 11 | | 3 | 00/606B : 20 8A 60 | jsr PutHgrByte
|
|
189 | 1 minipixviewer.s 189 | Empty | 11 | | 0 | 00/606E |
|
|
190 | 1 minipixviewer.s 190 | Comment | 11 | | 0 | 00/606E | ; Repeat each src line 3 times
|
|
191 | 1 minipixviewer.s 191 | Code | 11 | | 2 | 00/606E : E6 FC | inc {$FC}
|
|
192 | 1 minipixviewer.s 192 | Code | 11 | | 2 | 00/6070 : E6 FF | inc {$FF}
|
|
193 | 1 minipixviewer.s 193 | Code | 11 | | 2 | 00/6072 : A6 FF | ldx {$FF}
|
|
194 | 1 minipixviewer.s 194 | Code | 11 | | 2 | 00/6074 : E0 03 | cpx #3
|
|
195 | 1 minipixviewer.s 195 | Code | 11 | | 2 | 00/6076 : D0 A0 | bne _NextSrcRow ; Y = 0 --> col = Y,X
|
|
196 | 1 minipixviewer.s 196 | Empty | 11 | | 0 | 00/6078 |
|
|
197 | 1 minipixviewer.s 197 | Code | 11 | | 1 | 00/6078 : 18 | clc ; Move to next linear source row
|
|
198 | 1 minipixviewer.s 198 | Code | 11 | | 2 | 00/6079 : A9 0B | lda #{88/8}
|
|
199 | 1 minipixviewer.s 199 | Code | 11 | | 2 | 00/607B : 65 F7 | adc {$F7}+0
|
|
200 | 1 minipixviewer.s 200 | Code | 11 | | 2 | 00/607D : 85 F7 | sta {$F7}+0
|
|
201 | 1 minipixviewer.s 201 | Code | 11 | | 2 | 00/607F : 90 02 | bcc _SameSrcPage
|
|
202 | 1 minipixviewer.s 202 | Empty | 11 | | 0 | 00/6081 | _NextSrcPage
|
|
203 | 1 minipixviewer.s 203 | Code | 11 | | 2 | 00/6081 : E6 F8 | inc {$F7}+1
|
|
204 | 1 minipixviewer.s 204 | Empty | 11 | | 0 | 00/6083 | _SameSrcPage
|
|
205 | 1 minipixviewer.s 205 | Empty | 11 | | 0 | 00/6083 |
|
|
206 | 1 minipixviewer.s 206 | Code | 11 | | 2 | 00/6083 : A5 FC | lda {$FC}
|
|
207 | 1 minipixviewer.s 207 | Code | 11 | | 2 | 00/6085 : C9 AE | cmp #{52}*{3}+{{192-{{52}*{3}}}/2}
|
|
208 | 1 minipixviewer.s 208 | Code | 11 | | 2 | 00/6087 : D0 8D | bne _NextTripleY
|
|
209 | 1 minipixviewer.s 209 | Empty | 11 | | 0 | 00/6089 | _Done
|
|
210 | 1 minipixviewer.s 210 | Code | 11 | | 1 | 00/6089 : 60 | rts
|
|
211 | 1 minipixviewer.s 211 | Empty | 11 | | 0 | 00/608A |
|
|
212 | 1 minipixviewer.s 212 | Empty | 11 | | 0 | 00/608A | PutHgrByte
|
|
213 | 1 minipixviewer.s 213 | Code | 11 | | 1 | 00/608A : 48 | pha ; Save High Bit
|
|
214 | 1 minipixviewer.s 214 | Code | 11 | | 2 | 00/608B : 29 7F | and #$7f ; HGR = 7 bits/pixel as we don't want half-pixels
|
|
215 | 1 minipixviewer.s 215 | Code | 11 | | 2 | 00/608D : A0 00 | ldy #0 ; Need Y=0 for :NextSrcRow --> col = Y,X
|
|
216 | 1 minipixviewer.s 216 | Code | 11 | | 2 | 00/608F : 91 26 | sta ({$26}),Y ; Need last pixel on this scanline
|
|
217 | 1 minipixviewer.s 217 | Code | 11 | | 1 | 00/6091 : 68 | pla ; Restore High Bit
|
|
218 | 1 minipixviewer.s 218 | Code | 11 | | 1 | 00/6092 : 2A | rol ; C = Bit 7 propogate
|
|
219 | 1 minipixviewer.s 219 | Code | 11 | | 2 | 00/6093 : A9 00 | lda #0 ; into next dst byte bit 0
|
|
220 | 1 minipixviewer.s 220 | Code | 11 | | 1 | 00/6095 : 2A | rol
|
|
221 | 1 minipixviewer.s 221 | Code | 11 | | 2 | 00/6096 : F0 06 | beq _NoCarry ; if we have high bit crossing even into odd column
|
|
222 | 1 minipixviewer.s 222 | Code | 11 | | 2 | 00/6098 : E0 04 | cpx #4
|
|
223 | 1 minipixviewer.s 223 | Code | 11 | | 2 | 00/609A : D0 02 | bne _NoCarry
|
|
224 | 1 minipixviewer.s 224 | Code | 11 | | 2 | 00/609C : A9 03 | lda #3 ; then we also need to the bottom 2 bits
|
|
225 | 1 minipixviewer.s 225 | Empty | 11 | | 0 | 00/609E | _NoCarry
|
|
226 | 1 minipixviewer.s 226 | Code | 11 | | 1 | 00/609E : 60 | rts
|
|
227 | 1 minipixviewer.s 227 | Empty | 11 | | 0 | 00/609F |
|
|
228 | 1 minipixviewer.s 228 | Comment | 11 | | 0 | 00/609F | ; Single Pixel to Double Pixel
|
|
229 | 1 minipixviewer.s 229 | Empty | 11 | | 0 | 00/609F | Column2ColorHGR
|
|
230 | 1 minipixviewer.s 230 | Empty | 11 | | 0 | 00/609F |
|
|
231 | 1 minipixviewer.s 231 | Data | 11 | | 1 | 00/609F : 06 | DB %00000110 ; [0] = $06 Even Column
|
|
232 | 1 minipixviewer.s 232 | Data | 11 | | 1 | 00/60A0 : 18 | DB %00011000 ; [1] = $18
|
|
233 | 1 minipixviewer.s 233 | Data | 11 | | 1 | 00/60A1 : 60 | DB %01100000 ; [2] = $60
|
|
234 | 1 minipixviewer.s 234 | Data | 11 | | 1 | 00/60A2 : 80 | DB %10000000 ; [3] = $80
|
|
235 | 1 minipixviewer.s 235 | Data | 11 | | 1 | 00/60A3 : 0C | DB %00001100 ; [4] = $0C Odd Column
|
|
236 | 1 minipixviewer.s 236 | Data | 11 | | 1 | 00/60A4 : 30 | DB %00110000 ; [5] = $30
|
|
237 | 1 minipixviewer.s 237 | Data | 11 | | 1 | 00/60A5 : C0 | DB %11000000 ; [6] = $C0
|
|
238 | 1 minipixviewer.s 238 | Empty | 11 | | 0 | 00/60A6 |
|
|
------+---------------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------
|