Subversion Repositories ngs

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
69 savelij 1
 AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80 - page 1 - 1/17/2011 21:30:41
2
 
3
 
4
       1/       0 :                     	
5
       2/       0 :                     		include macros.a80
6
(1)    1/       0 :                     
7
(1)    2/       0 :                     		RELAXED ON
8
(1)    3/       0 :                     		CPU Z80UNDOC
9
(1)    4/       0 :                     
10
(1)    5/       0 :                     DZ		MACRO DEFZ
11
(1)    6/       0 :                     		DB DEFZ,0
12
(1)    7/       0 :                     		ENDM 
13
(1)    8/       0 :                     
14
(1)    9/       0 :                     DC		MACRO DEFC
15
(1)   10/       0 :                     		IF STRLEN(DEFC)>1
16
(1)   11/       0 :                     		DB SUBSTR(DEFC,0,STRLEN(DEFC)-1)
17
(1)   12/       0 :                     		ENDIF
18
(1)   13/       0 :                     		IF STRLEN(DEFC)>0
19
(1)   14/       0 :                     		DB CHARFROMSTR(DEFC,STRLEN(DEFC)-1)|80H
20
(1)   15/       0 :                     		ENDIF
21
(1)   16/       0 :                     		ENDM
22
(1)   17/       0 :                     
23
(1)   18/       0 :                     SUM_HOB		MACRO STR,AA,BB,CC
24
(1)   19/       0 :                     		DB STR
25
(1)   20/       0 :                     		DW AA
26
(1)   21/       0 :                     		DW BB
27
(1)   22/       0 :                     		DW CC
28
(1)   23/       0 :                     $$I := 0
29
(1)   24/       0 :                     $$S := 0
30
(1)   25/       0 :                     		REPT 9
31
(1)   26/       0 :                     $$N := CHARFROMSTR (STR,STRLEN(STR)+$$S-9)
32
(1)   27/       0 :                     $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
33
(1)   28/       0 :                     $$S := $$S+1
34
(1)   29/       0 :                     		ENDM
35
(1)   30/       0 :                     $$I := ($$I+$$S+LOW (AA)+(LOW (AA)*0X100))&0XFFFF
36
(1)   31/       0 :                     $$S := $$S+1
37
(1)   32/       0 :                     $$I := ($$I+$$S+HIGH (AA)+(HIGH (AA)*0X100))&0XFFFF
38
(1)   33/       0 :                     $$S := $$S+1
39
(1)   34/       0 :                     $$I := ($$I+$$S+LOW (BB)+(LOW (BB)*0X100))&0XFFFF
40
(1)   35/       0 :                     $$S := $$S+1
41
(1)   36/       0 :                     $$I := ($$I+$$S+HIGH (BB)+(HIGH (BB)*0X100))&0XFFFF
42
(1)   37/       0 :                     $$S := $$S+1
43
(1)   38/       0 :                     $$I := ($$I+$$S+LOW (CC)+(LOW (CC)*0X100))&0XFFFF
44
(1)   39/       0 :                     $$S := $$S+1
45
(1)   40/       0 :                     $$I := ($$I+$$S+HIGH (CC)+(HIGH (CC)*0X100))&0XFFFF
46
(1)   41/       0 :                     $$S := $$S+1
47
(1)   42/       0 :                     		DW $$I
48
(1)   43/       0 :                     		ENDM
49
(1)   44/       0 :                     
50
(1)   45/       0 :                     DUPL		MACRO LEN,FILL
51
(1)   46/       0 :                     DUPL:
52
(1)   47/       0 :                     $$N		EQU (LEN) / 1024
53
(1)   48/       0 :                     $$M		EQU (LEN) # 1024
54
(1)   49/       0 :                     		REPT $$N
55
(1)   50/       0 :                     		DB 1024 DUP(FILL)
56
(1)   51/       0 :                     		ENDM
57
(1)   52/       0 :                     		IF $$M <> 0
58
(1)   53/       0 :                     		DB $$M DUP(FILL)
59
(1)   54/       0 :                     		ENDIF
60
(1)   55/       0 :                     		ENDM
61
(1)   56/       0 :                     
62
(1)   57/       0 :                     HIGH		FUNCTION X,((X >> 8) & 0XFF)
63
(1)   58/       0 :                     LOW		FUNCTION X,(X & 0XFF)
64
 AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80(macros.a80) - page 2 - 1/17/2011 21:30:41
65
 
66
 
67
(1)   59/       0 :                     
68
       3/       0 :                     
69
       4/       0 :                     ;LAST UPDATE: 16.01.2011 savelij
70
       5/       0 :                     
71
       6/       0 : =6000H              ADRWORK		EQU 0X6000
72
       7/       0 : =5B00H              UNPACKER	EQU 0X5B00
73
       8/       0 :                     
74
       9/    5FEF :                     		ORG ADRWORK-0X11
75
      10/    5FEF : (MACRO)             		SUM_HOB "FLASHNGSC",ADRWORK,EBINFLASHER-BINFLASHER,SIZE_SECTORS
76
      10/    5FEF : 46 4C 41 53 48 4E                   DB "FLASHNGSC"
77
                    47 53 43 
78
      10/    5FF8 : 00 60                               DW ADRWORK
79
      10/    5FFA : 9D 16                               DW EBINFLASHER-BINFLASHER
80
      10/    5FFC : 17 00                               DW SIZE_SECTORS
81
      10/    5FFE : =0H                 $$I := 0
82
      10/    5FFE : =0H                 $$S := 0
83
      10/    5FFE :                                     REPT 9
84
      10/    5FFE :                     $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
85
      10/    5FFE :                     $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
86
      10/    5FFE :                     $$S := $$S+1
87
      10/    5FFE :                                     ENDM
88
      10/    5FFE : =46H                $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
89
      10/    5FFE : =4646H              $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
90
      10/    5FFE : =1H                 $$S := $$S+1
91
      10/    5FFE : =4CH                $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
92
      10/    5FFE : =9293H              $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
93
      10/    5FFE : =2H                 $$S := $$S+1
94
      10/    5FFE : =41H                $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
95
      10/    5FFE : =D3D6H              $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
96
      10/    5FFE : =3H                 $$S := $$S+1
97
      10/    5FFE : =53H                $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
98
      10/    5FFE : =272CH              $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
99
      10/    5FFE : =4H                 $$S := $$S+1
100
      10/    5FFE : =48H                $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
101
      10/    5FFE : =6F78H              $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
102
      10/    5FFE : =5H                 $$S := $$S+1
103
      10/    5FFE : =4EH                $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
104
      10/    5FFE : =BDCBH              $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
105
      10/    5FFE : =6H                 $$S := $$S+1
106
      10/    5FFE : =47H                $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
107
      10/    5FFE : =518H               $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
108
      10/    5FFE : =7H                 $$S := $$S+1
109
      10/    5FFE : =53H                $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
110
      10/    5FFE : =5872H              $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
111
      10/    5FFE : =8H                 $$S := $$S+1
112
      10/    5FFE : =43H                $$N := CHARFROMSTR ("FLASHNGSC",STRLEN("FLASHNGSC")+$$S-9)
113
      10/    5FFE : =9BBDH              $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
114
      10/    5FFE : =9H                 $$S := $$S+1
115
      10/    5FFE : =9BC6H              $$I := ($$I+$$S+LOW (ADRWORK)+(LOW (ADRWORK)*0X100))&0XFFFF
116
      10/    5FFE : =AH                 $$S := $$S+1
117
      10/    5FFE : =FC30H              $$I := ($$I+$$S+HIGH (ADRWORK)+(HIGH (ADRWORK)*0X100))&0XFFFF
118
      10/    5FFE : =BH                 $$S := $$S+1
119
      10/    5FFE : =99D8H              $$I := ($$I+$$S+LOW (EBINFLASHER-BINFLASHER)+(LOW (EBINFLASHER-BINFLASHER)*0X100))&0XFFFF
120
      10/    5FFE : =CH                 $$S := $$S+1
121
      10/    5FFE : =AFFAH              $$I := ($$I+$$S+HIGH (EBINFLASHER-BINFLASHER)+(HIGH (EBINFLASHER-BINFLASHER)*0X100))&0XFFFF
122
      10/    5FFE : =DH                 $$S := $$S+1
123
      10/    5FFE : =C71EH              $$I := ($$I+$$S+LOW (SIZE_SECTORS)+(LOW (SIZE_SECTORS)*0X100))&0XFFFF
124
      10/    5FFE : =EH                 $$S := $$S+1
125
      10/    5FFE : =C72CH              $$I := ($$I+$$S+HIGH (SIZE_SECTORS)+(HIGH (SIZE_SECTORS)*0X100))&0XFFFF
126
      10/    5FFE : =FH                 $$S := $$S+1
127
 AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80 - page 3 - 1/17/2011 21:30:41
128
 
129
 
130
      10/    5FFE : 2C C7                               DW $$I
131
      11/    6000 :                     
132
      12/    6000 : F3                  		DI
133
      13/    6001 : 18 16               		JR START0
134
      14/    6003 :                     
135
      15/    6003 : 46 6C 61 73 68 65   		DB "Flasher for NeoGS v0.2"
136
                    72 20 66 6F 72 20 
137
                    4E 65 6F 47 53 20 
138
                    76 30 2E 32 
139
      16/    6019 :                     START0		
140
      17/    6019 : 21 00 60            		LD HL,ADRWORK
141
      18/    601C : E5                  		PUSH HL
142
      19/    601D : 21 3A 60            		LD HL,DEPACK
143
      20/    6020 : 11 00 5B            		LD DE,UNPACKER
144
      21/    6023 : 01 6E 00            		LD BC,BINFLASHER-DEPACK
145
      22/    6026 : D5                  		PUSH DE
146
      23/    6027 : ED B0               		LDIR
147
      24/    6029 : 21 44 77            		LD HL,EBINFLASHER-1
148
      25/    602C : 11 FF FF            		LD DE,0XFFFF
149
      26/    602F : 01 9D 16            		LD BC,EBINFLASHER-BINFLASHER
150
      27/    6032 : ED B8               		LDDR
151
      28/    6034 : 21 00 60            		LD HL,ADRWORK
152
      29/    6037 : EB                  		EX DE,HL
153
      30/    6038 : 23                  		INC HL
154
      31/    6039 : C9                  		RET
155
      32/    603A :                     
156
      33/    603A :                     DEPACK		include dec40.a80
157
(1)    1/    603A :                     ;Z80 depacker for megalz V4 packed files   (C) fyrex^mhm
158
(1)    2/    603A :                     
159
(1)    3/    603A :                     ; DESCRIPTION:
160
(1)    4/    603A :                     ;
161
(1)    5/    603A :                     ; Depacker is fully relocatable, not self-modifying,
162
(1)    6/    603A :                     ;it's length is 110 bytes starting from DEC40.
163
(1)    7/    603A :                     ;Register usage: AF,AF',BC,DE,HL. Must be CALL'ed, return is done by RET.
164
(1)    8/    603A :                     ;Provide extra stack location for store 2 bytes (1 word). Depacker does not
165
(1)    9/    603A :                     ;disable or enable interrupts, as well as could be interrupted at any time
166
(1)   10/    603A :                     ;(no f*cking wicked stack usage :).
167
(1)   11/    603A :                     
168
(1)   12/    603A :                     ; USAGE:
169
(1)   13/    603A :                     ;
170
(1)   14/    603A :                     ; - put depacker anywhere you want,
171
(1)   15/    603A :                     ; - put starting address of packed block in HL,
172
(1)   16/    603A :                     ; - put location where you want data to be depacked in DE,
173
(1)   17/    603A :                     ;   (much like LDIR command, but without BC)
174
(1)   18/    603A :                     ; - make CALL to depacker (DEC40).
175
(1)   19/    603A :                     ; - enjoy! ;)
176
(1)   20/    603A :                     
177
(1)   21/    603A :                     ; PRECAUTIONS:
178
(1)   22/    603A :                     ;
179
(1)   23/    603A :                     ; Be very careful if packed and depacked blocks coincide somewhere in memory.
180
(1)   24/    603A :                     ;Here are some advices:
181
(1)   25/    603A :                     ;
182
(1)   26/    603A :                     ; 1. put packed block to the highest addresses possible.
183
(1)   27/    603A :                     ;     Best if last byte of packed block has address #FFFF.
184
(1)   28/    603A :                     ;
185
(1)   29/    603A :                     ; 2. Leave some gap between ends of packed and depacked block.
186
(1)   30/    603A :                     ;     For example, last byte of depacked block at #FF00,
187
(1)   31/    603A :                     ;     last byte of packed block at #FFFF.
188
(1)   32/    603A :                     ;
189
(1)   33/    603A :                     ; 3. Place nonpackable data to the end of block.
190
 AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80(dec40.a80) - page 4 - 1/17/2011 21:30:41
191
 
192
 
193
(1)   34/    603A :                     ;
194
(1)   35/    603A :                     ; 4. Always check whether depacking occurs OK and neither corrupts depacked data
195
(1)   36/    603A :                     ;     nor hangs computer.
196
(1)   37/    603A :                     ;
197
(1)   38/    603A :                     
198
(1)   39/    603A :                     DEC40
199
(1)   40/    603A : 3E 80                       LD      A,0X80
200
(1)   41/    603C : 08                          EX      AF,AF'
201
(1)   42/    603D : ED A0               MS      LDI
202
(1)   43/    603F : 01 FF 02            M0      LD      BC,0X2FF
203
(1)   44/    6042 : 08                  M1      EX      AF,AF'
204
(1)   45/    6043 : 87                  M1X     ADD     A,A
205
(1)   46/    6044 : 20 03                       JR      NZ,M2
206
(1)   47/    6046 : 7E                          LD      A,(HL)
207
(1)   48/    6047 : 23                          INC     HL
208
(1)   49/    6048 : 17                          RLA
209
(1)   50/    6049 : CB 11               M2      RL      C
210
(1)   51/    604B : 30 F6                       JR      NC,M1X
211
(1)   52/    604D : 08                          EX      AF,AF'
212
(1)   53/    604E : 10 0F                       DJNZ    X2
213
(1)   54/    6050 : 3E 02                       LD      A,2
214
(1)   55/    6052 : CB 29                       SRA     C
215
(1)   56/    6054 : 38 18                       JR      C,N1
216
(1)   57/    6056 : 3C                          INC     A
217
(1)   58/    6057 : 0C                          INC     C
218
(1)   59/    6058 : 28 0F                       JR      Z,N2
219
(1)   60/    605A : 01 3F 03                    LD      BC,0X33F
220
(1)   61/    605D : 18 E3                       JR      M1
221
(1)   62/    605F :                     
222
(1)   63/    605F : 10 25               X2      DJNZ    X3
223
(1)   64/    6061 : CB 39                       SRL     C
224
(1)   65/    6063 : 38 D8                       JR      C,MS
225
(1)   66/    6065 : 04                          INC     B
226
(1)   67/    6066 : 18 DA                       JR      M1
227
(1)   68/    6068 :                     X6
228
(1)   69/    6068 : 81                          ADD     A,C
229
(1)   70/    6069 :                     N2
230
(1)   71/    6069 : 01 FF 04                    LD      BC,0X4FF
231
(1)   72/    606C : 18 D4                       JR      M1
232
(1)   73/    606E :                     N1
233
(1)   74/    606E : 0C                          INC     C
234
(1)   75/    606F : 20 28                       JR      NZ,M4
235
(1)   76/    6071 : 08                          EX      AF,AF'
236
(1)   77/    6072 : 04                          INC     B
237
(1)   78/    6073 : CB 19               N5      RR      C
238
(1)   79/    6075 : D8                          RET     C
239
(1)   80/    6076 : CB 10                       RL      B
240
(1)   81/    6078 : 87                          ADD     A,A
241
(1)   82/    6079 : 20 03                       JR      NZ,N6
242
(1)   83/    607B : 7E                          LD      A,(HL)
243
(1)   84/    607C : 23                          INC     HL
244
(1)   85/    607D : 17                          RLA
245
(1)   86/    607E : 30 F3               N6      JR      NC,N5
246
(1)   87/    6080 : 08                          EX      AF,AF'
247
(1)   88/    6081 : 80                          ADD     A,B
248
(1)   89/    6082 : 06 06                       LD      B,6
249
(1)   90/    6084 : 18 BC                       JR      M1
250
(1)   91/    6086 :                     X3
251
(1)   92/    6086 : 10 04                       DJNZ    X4
252
(1)   93/    6088 : 3E 01                       LD      A,1
253
 AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80(dec40.a80) - page 5 - 1/17/2011 21:30:41
254
 
255
 
256
(1)   94/    608A : 18 0F                       JR      M3
257
(1)   95/    608C : 10 08               X4      DJNZ    X5
258
(1)   96/    608E : 0C                          INC     C
259
(1)   97/    608F : 20 08                       JR      NZ,M4
260
(1)   98/    6091 : 01 1F 05                    LD      BC,0X51F
261
(1)   99/    6094 : 18 AC                       JR      M1
262
(1)  100/    6096 :                     X5
263
(1)  101/    6096 : 10 D0                       DJNZ    X6
264
(1)  102/    6098 : 41                          LD      B,C
265
(1)  103/    6099 : 4E                  M4      LD      C,(HL)
266
(1)  104/    609A : 23                          INC     HL
267
(1)  105/    609B : 05                  M3      DEC     B
268
(1)  106/    609C : E5                          PUSH    HL
269
(1)  107/    609D : 69                          LD      L,C
270
(1)  108/    609E : 60                          LD      H,B
271
(1)  109/    609F : 19                          ADD     HL,DE
272
(1)  110/    60A0 : 4F                          LD      C,A
273
(1)  111/    60A1 : 06 00                       LD      B,0
274
(1)  112/    60A3 : ED B0                       LDIR
275
(1)  113/    60A5 : E1                          POP     HL
276
(1)  114/    60A6 : 18 97                       JR      M0
277
(1)  115/    60A8 :                     END_DEC40
278
(1)  116/    60A8 :                     
279
      34/    60A8 :                     BINFLASHER	binclude flasher_pack.rom
280
      35/    7745 :                     EBINFLASHER
281
      36/    7745 :                     
282
      37/    7745 : =>TRUE              		IF (EBINFLASHER-BINFLASHER)&0XFF
283
      38/    7745 : =17H                SIZE_SECTORS	EQU ((EBINFLASHER-BINFLASHER)>>8)+1
284
      39/    7745 : =>FALSE             		ELSE
285
      40/    7745 :                     SIZE_SECTORS	EQU ((EBINFLASHER-BINFLASHER)>>8)
286
      41/    7745 : [37]                		ENDIF
287
      42/    7745 :                     
288
 AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80 - page 6 - 1/17/2011 21:30:41
289
 
290
 
291
  symbol table (* = unused):
292
  ------------------------
293
 
294
 ADRWORK :                     6000 - | *ARCHITECTURE :  i386-unknown-win32 - |
295
*BIGENDIAN :                      0 - |  BINFLASHER :                  60A8 C |
296
*BRANCHEXT :                      0 - | *CASESENSITIVE :                  1 - |
297
*CONSTPI :        3.141592653589793 - | *DATE :                   1/17/2011 - |
298
*DEC40 :                       603A C |  DEPACK :                      603A C |
299
 EBINFLASHER :                 7745 C | *END_DEC40 :                   60A8 C |
300
*FALSE :                          0 - | *FULLPMMU :                       1 - |
301
*HAS64 :                          1 - | *HASDSP :                         0 - |
302
*HASFPU :                         0 - | *HASPMMU :                        0 - |
303
 I7 :                          C72C - | *INEXTMODE :                      0 - |
304
*INLWORDMODE :                    0 - | *INMAXMODE :                      0 - |
305
*INSRCMODE :                      0 - | *INSUPMODE :                      0 - |
306
*LISTON :                         1 - |  M0 :                          603F C |
307
 M1 :                          6042 C |  M1X :                         6043 C |
308
 M2 :                          6049 C |  M3 :                          609B C |
309
 M4 :                          6099 C | *MACEXP :                         1 - |
310
*MOMCPU :                      80DC - | *MOMCPUNAME :              Z80UNDOC - |
311
 MS :                          603D C |  N1 :                          606E C |
312
 N2 :                          6069 C |  N5 :                          6073 C |
313
 N6 :                          607E C |  N7 :                            43 - |
314
*NESTMAX :                      100 - | *PACKING :                        0 - |
315
*PADDING :                        1 - | *RELAXED :                        1 - |
316
 S7 :                             F - |  SIZE_SECTORS :                  17 - |
317
 START0 :                      6019 C | *TIME :                    21:30:41 - |
318
*TRUE :                           1 - |  UNPACKER :                    5B00 - |
319
*VERSION :                     142F - |  X2 :                          605F C |
320
 X3 :                          6086 C |  X4 :                          608C C |
321
 X5 :                          6096 C |  X6 :                          6068 C |
322
 
323
     56 symbols
324
     30 unused symbols
325
 
326
 AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80 - page 7 - 1/17/2011 21:30:41
327
 
328
 
329
  defined macros:
330
  ---------------
331
 
332
DC                                    | DUPL                                 
333
DZ                                    | SUM_HOB                              
334
 
335
      4 macros
336
 
337
 AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80 - page 8 - 1/17/2011 21:30:41
338
 
339
 
340
  defined functions:
341
  ------------------
342
 
343
LOW                                   | HIGH                                 
344
 
345
 AS V1.42 Beta [Bld 78] - source file flasher4hobeta.a80 - page 9 - 1/17/2011 21:30:41
346
 
347
 
348
  codepages:
349
  ----------
350
 
351
STANDARD (0 changed characters)
352
 
353
 
354
0.06 seconds assembly time
355
 
356
    217 lines source file
357
    268 lines incl. macro expansions
358
      2 passes
359
 
360